<jupyter_start><jupyter_text>Curso de introducción al análisis y modelado de datos con Python  ---  Pandas: Funciones rolling y operaciones con DataFrames En este notebook trabajaremos sobre los mismos datos que la introducción a pandas. Veremos como usar el método rolling para obtener resultados como la media móvil, la desviación típica móvil... Además veremos como agrupar los datos usando `groupby` y cómo pivotar tablas.  Cargando los datos<jupyter_code># carga de los datos: data_all
# columnas: [0, 1, 3, 4, 5, 6, 8, 10, 11, 12, 13]
# ['dir', 'date', 'name', 'precip', 'pmax', 'pmin', 'mag_max', 'tmax', 'tmed', 'tmin', 'mag_med']<jupyter_output><empty_output><jupyter_text>Para acordarnos de cómo parsear las fechas: http://strftime.org/<jupyter_code># dejamos en data sólo alicante/alacant<jupyter_output><empty_output><jupyter_text>Funciones "rolling"  Ya sabemos obtener representaciones gráficas de nuestros de datos. Visualicemos, por ejemplo, la evolución de la temperatura media a lo largo de los años 2015 y 2016:<jupyter_code># temperatua media en el 205-2016<jupyter_output><empty_output><jupyter_text>Se puede apreciar la oscilación a lo largo del año. Sin embargo, las variaciones locales de temperatura de determinados días "ensucian" nuestra representación. Una opción es "suavizar" la curva utilizando una media móvil Pandas proporciona métodos para calcular magnitudes como medias móviles usando el método `rolling`:<jupyter_code># calcular la media de la columna tmed
# media centrada (semanal/mensual/trimestral)
# pintar media centrada (semanal/mensual/trimestral)<jupyter_output><empty_output><jupyter_text>Creando agrupaciones  En muchas ocasiones queremos realizar agrupaciones de datos en base a determinados valores como son fechas, o etiquetas (por ejemplo, datos que pertenecen a un mismo ensayo o lugar).<jupyter_code># agrupar por estación metereológica
# media
# media y desviación estándar<jupyter_output><empty_output><jupyter_text>Creando agrupaciones: analizando el mes típico En muchas ocasiones queremos realizar agrupaciones de datos en base a determinados valores como son fechas, o etiquetas (por ejemplo, datos que pertenecen a un mismo ensayo o lugar).En este caso, imaginemos que nos interesa obtener una representación del "mes típico" o "día típico" Podemos agrupar nuestros datos utilizando `groupby`:<jupyter_code># agruparemos por año y mes: creemos dos columnas nuevas
# creamos la agrupación
# podemos ver los grupos que se han creado<jupyter_output><empty_output><jupyter_text>Con estos grupos podemos hacer hacer varias cosas:* Acceder a sus datos individualmente (por ejemplo, comprobar qué pasó cada día de marzo de 2016) * Realizar una reducción de datos, para comparar diversos grupos (por, ejemplo caracterizar el tiempo de cada mes a lo largo de los años)<jupyter_code># accedemos a un grupo
# hacemos una agregación de los datos:<jupyter_output><empty_output><jupyter_text>Pivotando tablas En ocasiones podemos querer ver nuestros datos de forma diferente o necesitamos organizarlos así para utilizar determinadas funciones de `pandas`. Una necesidad típica es la de pivotar una tabla.    Imagina que queremos acceder a los mismos datos que en el caso anterior, pero que ahora queremos ver los años en las filas y para cada variable (TMAX, TMED...) los calores de cada mes en una columna. ¿Cómo lo harías?<jupyter_code># dejar los años como índices y ver la media mensual en cada columna<jupyter_output><empty_output><jupyter_text>La línea anterior no es sencilla y no se escribe de una sola vez sin errores (sobre todo si estás empezando). Esto es una ejemplo de que `pandas` es una librería potente, pero que lleva tiempo aprender. Pasarás muchas horas peleando contra problemas de este tipo, pero afortunadamente mucha gente lo ha pasado mal antes y su experiencia ha quedado plasmada en cientos de **preguntas de `stack overflow`** y en la **documentación de `pandas`**  Otro ejemplo<jupyter_code># seleccionando sólo una estación
# agrupando por estación y mes
# pivotando para que el mes sea el índice
# pintándolo<jupyter_output><empty_output><jupyter_text>Visualizaciones especiales  scatter<jupyter_code># scatter_matrix<jupyter_output><empty_output><jupyter_text>lag_plot  ---Hemos aprendido:* A utilizar las funciones rolling* A agrupar datos de un DataFrame utilizando sus columnas:  - A agrupar con más de una variable  - A acceder a distintos grupos  - A obtener una reducción de datos para cada grupo* A salvar nuestros datos* A utilizar algunas representaciones especiales  <NAME>, <NAME>, <NAME> ---_Las siguientes celdas contienen configuración del Notebook__Para visualizar y utlizar los enlaces a Twitter el notebook debe ejecutarse como [seguro](http://ipython.org/ipython-doc/dev/notebook/security.html)_    File > Trusted Notebook<jupyter_code># esta celda da el estilo al notebook<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.06285714285714286, 'fraction_numerical': 0.0069387755102040816, 'mean_word_length': 5.922316384180791, 'pattern_counts': {'":': 0, '<': 48, '<?xml version=': 0, '>': 49, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '11', 'dir': 'jupyter-structured-clean-dedup', 'id': '213847', 'license': 'MIT', 'n_tokens_mistral': 1649, 'n_tokens_neox': 1610, 'n_words': 623, 'path': 'notebooks_vacios/0102_Pandas-Operaciones-con-DataFrames.ipynb', 'repo_name': 'CAChemE/python-analisis-modelado-datos', 'size': '4923'}