In [1]:
from datetime import datetime
import pandas as pd
import pandas.io.data
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
pd.set_option('max_columns', 50)
%matplotlib inline
In [2]:
run_console = False
In [3]:
if run_console:
%qtconsole
Este análisis toma como base la base de datos de Derechos de aprovechamiento de aguas registrados en DGA la cual indica Fecha de actualización: 04/08/2014. Especificamente se descargó el día 18 de Agosto de 2014, los derechos registrados para V Región de Valparaíso. Estos datos fueron depurados con la herramienta OpenRefine 2.5-r2407, con esta aplicación en primera instancia se filtraron todos los derechos de la columna "Provincia" asociados a "Petorca" obteniendo 2983 registros, después a partir de múltiples iteraciones con el software QGIS Desktop 2.2.0 se logró consolidar los diferentes Datum de Captación indicados en el registro a un sólo Datum, el WGS84 EPSG:4326, además se asoció la ubicación de la Comuna en aquellos registros que no presentan datos de coordenadas geográficas en el registro, con esto se logró geolocalizar 2971 derechos.
Con OpenRefine finalmente se procedió a terminar el depurado de los datos (eliminar espacios, formato números, agrupar columnas, etc.) y se ordenaron por "Caudal Anual Prom" y se exporta el resultado en el archivo Derechos_Concedidos_V_Region-xls-Petorca-WGS84-csv-V3.csv, después se corrigió un error de conversión de Fechas de Resolución y se exporta el resultado en el archivo Derechos_Concedidos_V_Region-xls-Petorca-WGS84-csv-V4.csv, en Corrige Fecha Resolución
Nota: Existen 12 derechos que no se pudieron procesar automaticamente, se espera más adelante incluirlos de manera manual al dataset consolidado.
In [4]:
ddaa = pd.read_csv('Derechos_Concedidos_V_Region-xls-Petorca-WGS84-csv-V4.csv', index_col='Fecha de Resolución/ Envío al Juez/ Inscripción C.B.R.', dayfirst=True, parse_dates=True)
In [5]:
# Son 2970 derechos en el registro
ddaa.sort_index().info()
In [6]:
# Corrige Nombres de Columnas eliminando caracter especial \r
ddaa.columns = map(lambda s: s.replace('\r', ''), ddaa.columns.values)
ddaa.columns
Out[6]:
In [7]:
ddaa.sort(u'Caudal \nAnual\nProm', ascending=False).head(25)[[u'Nombre Solicitante',u'Caudal \nAnual\nProm']]
Out[7]:
In [8]:
# Verifica en el dataset posible restricción de 100 mil celdas de Google Fusion Table
# Habría que sacar 15 columnas
(len(ddaa.columns) - 15)*len(ddaa) < 100000
Out[8]:
In [9]:
# Número total de columnas del dataset
len(ddaa.columns)
Out[9]:
In [10]:
plot1 = ddaa[u'Caudal \nAnual\nProm'].plot(figsize=(10, 10), style=['p'], title='Serie de tiempo derechos inscritos')
plot1.set_ylabel("Caudal Anual Promedio Lt/s")
Out[10]:
In [11]:
ddaa['1973':][u'Caudal \nAnual\nProm'].plot(figsize=(10, 10), style=['p'])
Out[11]:
In [12]:
ddaa[u'Ejercicio del Derecho'].value_counts()
Out[12]:
In [13]:
ddaa.groupby(u'Ejercicio del Derecho').sum()[u'Caudal \nAnual\nProm'].plot(kind='pie', figsize=(10, 10), title=u'Distribución Ejercicio del Derecho')
Out[13]:
In [14]:
# "S/I" Corresponde a datos no declarados en el registro de la solicitud
ddaa_si = ddaa.where((pd.notnull(ddaa)), 'S/I')
In [15]:
ddaa_si[u'Uso del Agua'].value_counts()
Out[15]:
In [16]:
ddaa_si.groupby(u'Uso del Agua').sum()[u'Caudal \nAnual\nProm'].plot(kind='pie', figsize=(10, 10), title=u'Distribución Uso del Agua Declarado en Solicitudes')
Out[16]:
In [17]:
ddaa_si[u'Naturaleza del \nAgua'].value_counts()
Out[17]:
In [18]:
ddaa_si.groupby(u'Naturaleza del \nAgua').sum()[u'Caudal \nAnual\nProm'].plot(kind='pie', figsize=(10, 10), title=u'Distribución Naturaleza del Agua Declarado en Solicitudes')
Out[18]:
In [19]:
ddaa[u'Nombre Solicitante'].value_counts().head(25)
Out[19]:
In [20]:
grp_solic = ddaa.groupby(u'Nombre Solicitante')
caudales_solic = grp_solic[u'Caudal \nAnual\nProm'].sum()
caudales_solic_desc = caudales_solic.order(ascending=False).head(20)
In [21]:
# Estadísticos básicos
ddaa[u'Caudal \nAnual\nProm'].describe()
Out[21]:
In [22]:
# Sumatoria Caudal Anual Promedio
ddaa[u'Caudal \nAnual\nProm'].sum()
Out[22]:
In [23]:
caudales_solic_desc.plot(kind='pie', figsize=(10, 10), title=u'Distribución derechos de los 20 solicitantes ordenados por Caudal Anual Promedio')
Out[23]:
In [24]:
# Agrupa datos por año solicitud
grp_year = ddaa.groupby(lambda x: x.year)
In [25]:
# Sumatoria caudales por año
caudales_year = grp_year[u'Caudal \nAnual\nProm'].sum()
In [26]:
# Gráfico de barra suma caudales de derechos otorgados por año
caudales_year.plot(kind='bar', figsize=(15, 15), title=u'Serie de tiempo Caudales Anual Promedio de derechos otorgados por año')
Out[26]:
In [27]:
# %qtconsole
In [27]: