Ejercicio de análisis, exploración y visualización de bases de datos.

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


Out[7]:
Unnamed: 0 nombre fecha prec
0 0 La Mirinda 2013-02-01 12:30:00 NaN
1 1 La Mirinda 2013-02-01 12:45:00 0.0
2 2 La Mirinda 2013-02-01 13:00:00 0.0
3 3 La Mirinda 2013-02-01 13:15:00 0.0
4 4 La Mirinda 2013-02-01 13:30:00 0.0

Número de estaciones que se encuentran en la base de datos?


In [8]:



Out[8]:
38

Precipitación acumulada de la base de datos?


In [11]:



Out[11]:
239282.60000032623

Los 5 años con mayor precipitación de la base de datos?


In [13]:
# debemos de generar la columna año

In [38]:
# agrupar la información por años


Out[38]:
year
2015    26116.0
2013    23294.9
2017    19549.8
2016    18345.4
2008    16127.2
Name: prec, dtype: float64

La estación con la mayor acumulación de precipitación de la base de datos?


In [40]:



Out[40]:
nombre
El Laurel                  10022.2
Refugio de Santo Cristo     9853.4
Name: prec, dtype: float64

Año y mes en la que se presenta la mayor acumulación de precipitación en la base de datos?


In [42]:
# debemos de generar la columna mes

In [43]:
# agrupar la información por año y mes


Out[43]:
year  month
2008  8        6643.6
2013  7        6623.5
2007  6        6170.8
2015  6        5970.3
2016  8        5783.1
Name: prec, dtype: float64

Bonus

Desplegar la información en un heatmap


In [44]:
# clasificar los datos a modo de tabla para desplegarlos en un heatmap

In [45]:
# visualizar la tabla de datos


Out[45]:
month 1 2 3 4 5 6 7 8 9 10 11 12
year
2002 301.4 221.6 0.4 17.0 285.0 1066.6 1809.6 1407.0 1538.0 833.2 477.8 1.0
2003 61.0 31.6 0.0 11.0 263.0 1351.8 3947.4 1857.8 2341.2 769.8 30.0 5.2
2004 559.8 25.0 503.8 11.8 752.6 3471.8 1768.4 1653.6 2690.4 372.2 9.4 2.6
2005 3.0 837.6 173.2 3.8 282.8 417.4 2674.4 3697.6 1993.4 313.6 33.2 50.2
2006 128.6 16.2 1.8 73.2 993.8 1077.6 2694.6 3609.6 2726.6 2323.6 509.2 399.8
2007 488.2 476.8 1.0 115.6 303.4 6170.8 3456.6 1433.8 1730.0 267.8 129.2 16.4
2008 0.8 55.6 1.2 338.2 263.8 2085.2 4658.8 6643.6 1958.0 101.0 18.6 2.4
2009 7.2 0.8 42.6 37.4 437.8 1763.6 1018.6 2218.0 2229.8 916.0 159.8 479.6
2010 825.9 3180.5 0.6 31.8 137.2 1268.0 4780.4 2029.2 2954.8 33.4 4.6 1.8
2011 13.8 5.2 26.0 50.4 86.8 1297.4 990.1 1623.3 2903.2 563.2 17.9 0.3
2012 307.5 2325.4 40.4 2.2 226.4 1731.4 4044.2 2743.2 2700.6 255.2 94.2 267.6
2013 1628.6 0.0 13.8 2.4 595.7 2582.1 6623.5 2675.0 4459.0 1518.1 906.6 2290.1
2014 226.8 22.4 103.9 20.4 1403.4 3671.7 3380.5 2829.4 2801.4 771.1 684.7 183.3
2015 173.5 1003.5 2993.9 299.0 897.6 5970.3 4356.8 2960.6 2889.3 3482.9 253.6 835.0
2016 174.3 360.3 483.8 91.6 244.3 2371.7 5288.3 5783.1 2124.7 346.0 1040.7 36.6
2017 15.8 87.0 652.8 31.7 134.2 1510.7 5652.7 4613.4 5037.7 722.1 22.7 1069.0
2018 890.4 864.2 19.9 418.1 608.2 NaN NaN NaN NaN NaN NaN NaN

In [48]:
# visualización de la información en heatmap


Out[48]:
<matplotlib.axes._subplots.AxesSubplot at 0x11a272400>

In [49]:
# cambiar los colores del heatmap


Out[49]:
<matplotlib.axes._subplots.AxesSubplot at 0x11a3980f0>

In [50]:
# agregar línea divisora


Out[50]:
<matplotlib.axes._subplots.AxesSubplot at 0x11a4cd0f0>

In [54]:
# agregar el valor de cada una de las celdas


Out[54]:
<matplotlib.axes._subplots.AxesSubplot at 0x11c767e48>

In [55]:
# disminuir el tamaño de la letra del valor de cada una de las celdas


Out[55]:
<matplotlib.axes._subplots.AxesSubplot at 0x11df194e0>