Para el siguiente ejercicio vamos a utilizar la base de datos de las Estaciones del Estado de Aguascalientes con un tiempo de registro de 15 minutos.
La base de datos contiene los siguientes campos:
nombre: Nombre de la estación
fecha: Fecha en que se tomo el registro
prec: Precipitación
Esta base se encuentra localizada en la carpeta data
Tienes 15 minutos como máximo para resolver las siguientes preguntas:
Número de estaciones que se encuentran en la base de datos?
Precipitación acumulada de la base de datos?
Los 5 años con mayor precipitación de la base de datos?
La estación con la mayor acumulación de precipitación de la base de datos?
Año y mes en la que se presenta la mayor acumulación de precipitación en la base de datos?
In [5]:
# importar librerías
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.style.use("ggplot")
In [6]:
# leer csv
df = pd.read_csv("/Users/jorgemauricio/Documents/Research/INIFAP_Course/data/ags_ejercicio_curso.csv")
In [7]:
# estructura de la base de datos
df.head()
Out[7]:
In [8]:
df["nombre"].nunique()
Out[8]:
In [11]:
df["prec"].sum()
Out[11]:
In [13]:
# debemos de generar la columna año
df["year"] = pd.DatetimeIndex(df["fecha"]).year
In [38]:
# agrupar la información por años
grouped = df.groupby("year").sum()["prec"]
grouped.sort_values(ascending=False).head()
Out[38]:
In [40]:
grouped_st = df.groupby("nombre").sum()["prec"]
grouped_st.sort_values(ascending=False).head(2)
Out[40]:
In [42]:
# debemos de generar la columna mes
df["month"] = pd.DatetimeIndex(df["fecha"]).month
In [43]:
# agrupar la información por año y mes
grouped_ym = df.groupby(["year", "month"]).sum()["prec"]
grouped_ym.sort_values(ascending=False).head()
Out[43]:
In [44]:
# clasificar los datos a modo de tabla para desplegarlos en un heatmap
table = pd.pivot_table(df, values="prec", index=["year"], columns=["month"], aggfunc=np.sum)
In [45]:
# visualizar la tabla de datos
table
Out[45]:
In [48]:
# visualización de la información en heatmap
sns.heatmap(table)
Out[48]:
In [49]:
# cambiar los colores del heatmap
sns.heatmap(table, cmap="jet")
Out[49]:
In [50]:
# agregar línea divisora
sns.heatmap(table, cmap="jet", linewidths=.2)
Out[50]:
In [54]:
# agregar el valor de cada una de las celdas
sns.heatmap(table, cmap="jet", linewidths=.2, annot=True)
Out[54]:
In [55]:
# disminuir el tamaño de la letra del valor de cada una de las celdas
sns.heatmap(table, cmap="jet", linewidths=.2, annot=True, annot_kws={"size": 5})
Out[55]:
In [ ]: