Analisis de Datos¶
Estructura de los archivos¶
La carpeta analisis_datos se estructura de la siguiente manera:
analisis_datos/
datos/
año_mes/
dia/
estacion.csv
datos_pronosticados/
registro_fechas.csv
año_mes/
dia/
estacion.csv
datos_descargados/
omixon/
año_mes/
docs/
js/
datos_pronosticados.py
datos_omixon.py
estaciones_*.csv
meteogramas.html
tablas.py
datos/
:- En esta carpeta se almacenan los datos reales de las estaciones meteorológicas.
datos_pronosticados/
:- En esta carpeta se almacenan los datos que se extraen de la salida del WRF, en los puntos de interés. Ademas se genera un registro en registro_fechas.csv con todas las fechas en donde hay datos pronosticados.
datos_descargados
:- En esta carpeta se almacenan los datos crudos descargados de las diferentes estaciones meteorológicas.
docs/
:- Documentación de este programa
js/
:- Archivos auxiliares para meteogramas.html
datos_pronosticados.py
:- Script que extrae los datos de la salida del WRF y los almacena en
datos_pronosticados/
datos_omixon.py
:- Script que extrae los datos de los CSV descargados de omixon y los almacena en
datos_pronosticados/
estaciones_*.csv
:- Estaciones de interés para buscar los datos en la salida del WRF. Tiene que tener las columnas
[Estacion, Latitud, Longitud]
meteogramas.html
:- Visualización de los datos
tablas.py
:- Funciones para genera tablas de datos para poder graficar y analisar.
Almacenar Datos¶
Datos Pronosticados¶
Extrae los datos a partir de la salida del WRF y los guarda en la carpeta datos/AAAA_MM/DD/C/
Paquetes necesarios:
pandas:
numpy
python-slugify:
python-grads:
- Argumentos:
- datoswrf : ruta de la salida
test.ctl
del WRF - estacionescsv : ruta del csv con las estaciones de donde vamos a almacenar los datos. Tiene que tener las columnas
[Estacion, Latitud, Longitud]
- configuracion : nombre que identifique a la configuración de parametrizaciones del WRF (A, B, C, D o E en el caso del WRF operativo en el LH)
- datoswrf : ruta de la salida
Ejecutar:
python datos_pronosticados.py --datoswrf="../ARWpost/test.ctl" --estacionescsv="estaciones.csv" --configuracion=A
Los datos se almacenan como datos/año_mes/dia/configuracion/estacion.csv
Variables almacenadas:
- t2 : temperatura (ºC) a 2m de altura
- td2 : temperatura en punto de rocío (ºC) a 2m de altura
- prec : precipitación (mm) por hora
- prec_acum : precipitación (mm) acumulada diaria
- rh2 : humedad relativa (%) a 2m de altura
- ws10 : intensidad del viento (m/s) a 10m de altura
- wd10 : direccion del viento (º, 0º es viento desde dirección norte) a 10m de altura
- u10m : componente de oeste a este del viento (m/s) a 10m de altura
- v10m : componente de sur a norte del viento (m/s) a 10m de altura
- max_dbz : reflectividad máxima (-)
- psfc : presión en la superficie (hPa)
- slp : presión a nivel del mar (hPa)
- cl : promedio de nubosidad en todos los niveles (%)
- clflo : nubosidad baja (%)
- clfmi : nubosidad media (%)
- clfhi : nubosidad alta (%)
- hail : granizo (mm) por hora
- hail_acum : granizo (mm) acumulado diario
-
analisis_datos.datos_pronosticados.
almacenar_datos
(estaciones_input, test_input, configuracion)¶ Almacena los datos de las estaciones de estaciones_input para el conjunto de datos test_input
-
analisis_datos.datos_pronosticados.
granizo
(estacion, i, ga)¶ Devuelve el granizo (mm) en el momento i para la estacion de la entrada de grads ga
-
analisis_datos.datos_pronosticados.
nubosidad
(estacion, i, ga)¶ Devuelve la nubosidad en todos los niveles (%) en el momento i para la estacion de la entrada de grads ga
-
analisis_datos.datos_pronosticados.
obtener_variable
(variable, estacion, i, ga)¶ Devuelve la variable en el momento i para la estacion de la entrada de grads ga
-
analisis_datos.datos_pronosticados.
precipitacion
(estacion, i, ga)¶ Devuelve la precipitacion (mm) en el momento i para la estacion de la entrada de grads ga
-
analisis_datos.datos_pronosticados.
registro_fechas
()¶ Crea registro de las fechas que hay datos pronosticados
Datos de las estaciones de Omixon¶
Extrae los datos a partir de los CSV descargados de Omixon y los guarda en la carpeta datos/
Paquetes necesarios:
pandas:
numpy
slugify:
Argumentos:
- datosomixon : ruta de la carpeta en donde se ubican los .CSV descargados de Omixon
Ejecutar:
python datos_omixon.py --datosomixon="datos_descargados/omixon/2017_05/"
Los datos se almacenan como datos/año_mes/dia/obs/estacion.csv
. No importa los nombres de los .CSV ni el período de tiempo que contiene cada archivo, el programa se fija a que estación corresponde el archivo y las fechas.
-
analisis_datos.datos_omixon.
direccion_viento
(fecha, data)¶ Devuelve la direccion del viento (º, 0º es viento desde dirección norte) para la fecha del conjunto de datos data
-
analisis_datos.datos_omixon.
humedad
(fecha, data)¶ Devuelve la humedad relativa (%) para la fecha del conjunto de datos data
-
analisis_datos.datos_omixon.
precipitacion
(fecha, data)¶ Devuelve la precipitación (mm) para la fecha del conjunto de datos data
-
analisis_datos.datos_omixon.
presion
(fecha, data)¶ Devuelve la Presión en la superficie (hPa) para la fecha del conjunto de datos data
-
analisis_datos.datos_omixon.
temperatura
(fecha, data)¶ Devuelve la temperatura (ºC) para la fecha del conjunto de datos data
-
analisis_datos.datos_omixon.
velocidad_viento
(fecha, data)¶ Devuelve la velocidad del viento (m/s) para la fecha del conjunto de datos data
Analisis¶
Generación de tablas para analisis.¶
Para usar desde la consola de python (preferentemente desde ipython), importar las siguientes librerias:
import tablas
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib
matplotlib.style.use('ggplot')
Funciones:¶
- tablas.tabla_estacion: datos de una estación entre una ventana de tiempo.
- tablas.todas_estaciones: datos entre una ventana de tiempo para todas las estaciones.
- tablas.variable_por_estacion: datos de una variable real y pronosticada para una estacion dada.
- tablas.variable_todas_estaciones: datos de una variable real y pronosticada para todas las estaciones.
- tablas.resumen_error_variable: estadisticas de una variable para cada estacion.
- tablas.variable_por_estaciones: datos de todas las estaciones para una variable y opcion dada.
Para guardar un DataFrame en un archivo csv, usar la funcion:
datos.to_csv("ruta/nombre.csv")
Para más información del manejo de DataFrame:
Para información de como generar gráficos con los DataFrame:
Graficos con seaborn:
-
analisis_datos.tablas.
resumen_error_variable
(variable, fecha_inicio, fecha_fin)¶ Función que para una ventana de tiempo dada por
fecha_inicio
yfecha_fin
, devuelve un DataFrame de analisis de lavariable
de pandas con las columnas:- Estacion,
- Latitud,
- Longitud,
- Cantidad de registros,
- BE,
- SD,
- MAE,
- RMSE,
- R,
Opciones para
variable
: las mismas que para variable_por_estacionLas fechas tiene que ser un string en el formato AAAA-MM-DD.
-
analisis_datos.tablas.
tabla_estacion
(estacion, opcion, fecha_inicio, fecha_fin)¶ Función que para una
estacion
dada, devuelve un DataFrame de pandas con las mismas columnas que se almacena por día, pero para la ventana de tiempo dada porfecha_inicio
yfecha_fin
, y para unaopcion
dada (“obs”, “A”, “B”, etc.)
-
analisis_datos.tablas.
todas_estaciones
(opcion, fecha_inicio, fecha_fin)¶ Función que devuelve un DataFrame de pandas con las mismas columnas que se almacena por día, pero para la ventana de tiempo dada por
fecha_inicio
yfecha_fin
, y para unaopcion
dada (“obs”, “A”, “B”, etc.) para todas las estaciones.
-
analisis_datos.tablas.
variable_por_estacion
(variable, estacion, fecha_inicio, fecha_fin)¶ Función que para una
estacion
dada, devuelve un DataFrame de pandas con las columnas:- Fecha,
- obs,
- pron,
- error
con los datos de la
variable
dada en la ventada de tiempo dada porfecha_inicio
yfecha_fin
Opciones para
variable
:# opciones con salida diaria - maxima - minima - amplitud - t2_media - prec_acum # opciones con salida por hora - t2 - prec - ws10 - wd10
Las fechas tiene que ser un string en el formato AAAA-MM-DD.
-
analisis_datos.tablas.
variable_por_estaciones
(variable, opcion, fecha_inicio, fecha_fin)¶ Función que para una
variable
y unaopcion
dada, devuelve un DataFrame de pandas con las estaciones en las columnas, indexeado por las fechas y el valor de la variable en la ventada de tiempo dada porfecha_inicio
yfecha_fin
.Opciones para
variable
: las mismas que para variable_por_estacionOpciones para
opcion
:- obs - pron - error
Las fechas tiene que ser un string en el formato AAAA-MM-DD.
-
analisis_datos.tablas.
variable_todas_estaciones
(variable, fecha_inicio, fecha_fin)¶ Función que para todas las estaciones, devuelve un DataFrame de pandas con las columnas:
- Estacion,
- Fecha,
- obs,
- pron,
- error
con los datos de la
variable
dada en la ventada de tiempo dada porfecha_inicio
yfecha_fin
Opciones para
variable
: las mismas que para variable_por_estacionLas fechas tiene que ser un string en el formato AAAA-MM-DD.