Descripcion
En este documento se describen las consideraciones que se tomaron para la agregación de datos desde el dataset proporcionado por el Programa de indicadores de Gestion de Organismos Operadores para su uso en la Plataforma de Conocimiento de Ciudades Sustentables.
Siglas
Repositorio de datasets
Archivo Excel con claves INEGI: https://github.com/INECC-PCCS/01_Dmine/blob/master/Datasets/Pigoo/CiudadesPIGOO_ClaveInegi.xlsx
Dataset Ciudades que forman parte del subsistema principal del SUN: https://github.com/INECC-PCCS/01_Dmine/blob/master/00_Generales/sun_main.csv
In [45]:
# Librerias utilizadas
import pandas as pd
import sys
import urllib
module_path = r'D:\PCCS\01_Dmine\Scripts'
if module_path not in sys.path:
sys.path.append(module_path)
from SUN.asignar_sun import asignar_sun
from SUN_integridad.SUN_integridad import SUN_integridad
from SUN.CargaSunPrincipal import getsun
In [46]:
# Configuracion del sistema
import sys; print('Python {} on {}'.format(sys.version, sys.platform))
print('Pandas version: {}'.format(pd.__version__))
import platform; print('Running on {} {}'.format(platform.system(), platform.release()))
El 2 de octubre de 2017 se realizó por medio de correo electrónico, una solicitud de aclaracion al PIGOO del nivel de desagregación de los datos disponibles en su página (Ver archivo Aclaracion_desagregacion.pdf).
En respuesta a esta solicitud, el PIGOO proporcionó un archivo de excel (CiudadesPIGOO_ClaveInegi.xlsx) que incluye una clasificación de las ciudades del dataset PIGOO por clave geoestadística
In [47]:
# Carga archivo "CiudadesPIGOO_ClaveInegi.xlsx" al sistema
pigoo_inegi = r'D:\PCCS\01_Dmine\Datasets\Pigoo\CiudadesPIGOO_ClaveInegi.xlsx'
pigoo_inegi_df = pd.read_excel(pigoo_inegi, sheetname='OOAPAS-PIGOO', index_col=0,
dtype={'Clave-Estado-Inegi': str,
'Clave-Municipio-Inegi': str,
'Clave-Localidad-Inegi': str})
pigoo_inegi_df.head()
Out[47]:
Gracias a que este dataset ya contiene etiquetas con claves geoestadísticas, es posible clasificarlas a su vez dentro de acuerdo con el Sistema Urbano Nacional. Para hacer la clasificación, se utiliza un algoritmo elaborado previamente que identifica la clave geoestadística municipal de 5 dígitos ("CVE_MUN") en cada renglón y la clasifica el municipio identificado asignándole la clave del Sistema Urbano Nacional ("CVE_SUN") a la que pertenece. Es importante señalar las limitaciones de este algoritmo:
In [48]:
# Estandarizacion de clave geoestadistica municipal a 5 dígitos
pigoo_inegi_df['CVE_MUN'] = pigoo_inegi_df['Clave-Estado-Inegi'].map(str) + pigoo_inegi_df['Clave-Municipio-Inegi']
# Clasificación de acuerdo al Sistema Urbano Nacional
variables_SUN = ['CVE_MUN', 'NOM_MUN', 'CVE_SUN', 'NOM_SUN', 'TIPO_SUN', 'NOM_ENT']
pigoo_sun = asignar_sun(pigoo_inegi_df, vars=variables_SUN)
Columnas = ['Nombre- PIGOO', 'CVE_MUN', 'NOM_MUN', 'CVE_SUN', 'NOM_SUN', 'TIPO_SUN', 'NOM_ENT', 'Organismo Operador', 'Siglas', 'Loc-Inegi']
pigoo_sun[Columnas].head()
Out[48]:
En el Sistema Urbano Nacional, las Zonas Metropolitanas del Valle de México y Tampico están compuestas por municipios de diferentes estados. En el dataset PIGOO, ambas ciudades son motivo de incertidumbre por la manera en la que están etiquetadas. La pregunta para ambos casos es: ¿Se tiene información suficientemente para considerar un alto grado de integridad en la información?
La etiqueta con la que aparece cada una de estas ciudades en el dataset PIGOO da a entender que podrían contener la información de varios municipios en un solo renglón. Si este fuera el caso, haría falta verificar que el resto de los municipios que forman la ciudad también se encuentren dentro del dataset PIGOO.
Después de analizar ambos casos, se llegó a la conclusión de que no existen datos suficientes para ninguna de las dos ciudades.
2.1. Valle de México
La Zona Metropolitana "Valle de México" es un caso que requiere consideraciones particulares para su agregación a los datasets que se incluirán en la PCCS. Es necesario hacer una distinción entre la entidad llamada "Ciudad de México" y la ciudad llamada "Valle de México". Las delegaciones que componen la Ciudad De México forman parte de la Ciudad Valle de México, que además está compuesta por municipios del Estado de México, Ciudad de México e Hidalgo.
La Ciudad de México (Antes Distrito Federal) está dividida en 16 delegaciones, cada una identificada por el INEGI con una clave geoestadística.
In [67]:
sun = getsun().set_index('CVE_SUN')
cdmx = sun[sun['CVE_ENT'] == '09']
datos_cdmx = ['CVE_ENT', 'NOM_ENT', 'CVE_MUN', 'NOM_MUN']
cdmx[datos_cdmx]
Out[67]:
En el Dataset de PIGOO la Ciudad de México está considerada como una unidad monolítica, manejada por el Sistema de Aguas de La Ciudad de México.
In [50]:
pigoo_inegi_df.loc[42]
Out[50]:
En el SUN, el Valle de México se compone de 76 municipios distribuidos en 3 entidades: 16 de la Ciudad de México, 59 del Estado de México y 1 de Hidalgo.
In [68]:
datos_sun = ['NOM_SUN', 'CVE_ENT','CVE_MUN', 'NOM_MUN']
vdmx = sun[sun.index == '013']
vdmx[datos_sun]
Out[68]:
Si la ciudad que en el dataset PIGOO aparece como Ciudad de México se considera como un resumen de las 16 delegaciones anteriormente mencionadas, sería necesario verificar que existen datos para todos los municipios restantes existen en el dataset PIGOO. No es el caso, de 60 municipios que integran la Zona Metropolitana del Valle de México fuera de la Ciudad de México (Antes Distrito Federal), el dataset PIGOO únicamente contiene 15:
In [86]:
sun_vdmx = vdmx['CVE_MUN'].tolist() # Lista de municipios en el SUN que componen el Valle de México (vdmx)
pigoo_muns = pigoo_inegi_df['CVE_MUN'].tolist() # Lista de municipios en el dataset Pigoo
vdmx_en_PIGOO = [i for i in pigoo_muns if i in sun_vdmx] # Lista de municipios del vdmx en el dataset PIGOO
In [75]:
sun_vdmx = vdmx['CVE_MUN'].tolist()
pigoo_muns = pigoo_inegi_df['CVE_MUN'].tolist()
pigoo_muns
Out[75]:
In [84]:
len()
Out[84]:
In [82]:
pigoo_inegi_df[pigoo_inegi_df['CVE_MUN'] == '15109']
Out[82]:
2.2. Tampico y Madero
En el dataset PIGOO se identifica a "Tampico y Madero" como una sola ciudad a la que le fue asignada la clave 28038 correspondiente al municipio de Tampico.
In [60]:
datos_pigoo = ['Nombre- PIGOO', 'Organismo Operador', 'Estado', 'CVE_MUN', 'Municipio-Inegi']
pigoo_inegi_df[pigoo_inegi_df['Nombre- PIGOO'] == "Tampico Y Madero"][datos_pigoo]
Out[60]:
Mientras que para el SUN, el municipio 28038 - Tampico, forma parte de la Zona Metropolitana 042 - "Tampico", que está compuesta por 5 municipios incluyento 28009 - Ciudad Madero
In [64]:
tamp = sun[sun.index == '042']
tamp[datos_sun]
Out[64]:
Ll hecho de que esta ciudad aparezca etiquetada como "Francisco y Madero" crea confusión respecto a cuál es la informacion con la que se construyó este indicador. La pregunta es ¿Valdría la pena tener consideraciones especiales para esta ciudad?
In [7]:
# Descarga del dataset
dirdestino = r'D:\PCCS\00_RawData\01_CSV'
archivodestino = r'pigoo.csv'
destino = r'{}\{}'.format(dirdestino, archivodestino)
fuente = r'http://www.pigoo.gob.mx/dashboard/exportar/excel/exportar_consulta_excel.php?tipo=max'
print('Descargando dataset ... ... ... ...')
urllib.request.urlretrieve(fuente, destino)
print('dataset descargado en {}'.format(destino))
dataset = pd.read_csv(destino,
header = 3)
dataset = dataset.set_index('ciudad')
dataset['ciudad'] = dataset.index
Después de la solicitud de aclaración de desagregación que se hizo al pigoo, nos mandaron un dataset en donde nuevamente los nombres de las ciudades vienen cambiados. Se realizó un dataset para definir con certeza las correspondencias entre los nombres de ciudades en el dataset disponible en la pagina de PIGOO, los nombres del archivo de aclaración de desagregación y la Clave Municipal de 5 dígitos del marco geoestadístico de INEGI.
In [27]:
dataset.head()
Out[27]:
In [33]:
nom_estandar = pd.read_excel(r'D:\PCCS\01_Dmine\Datasets\Pigoo\standard-pigoo_ooapas_geo.xlsx',
dtype={'CVE_MUN': str})
nom_estandar.head()
Out[33]:
Utilizando este dataset, ya es posible asignar claves geoestadísticas municipales a las ciudades del dataset PIGOO
In [34]:
dataset = pd.merge(dataset, nom_estandar[['CVE_MUN', 'Nombre en Dataset PIGOO']], how='left', left_on='ciudad', right_on='Nombre en Dataset PIGOO')
del(dataset['Nombre en Dataset PIGOO'])
dataset.head()
Out[34]:
El dataset Pigoo se separará en datasets diferentes para cada indicador. Los indicadores que incluye el dataset PIGOO son los siguientes:
In [93]:
indicadores = set(dataset['indicador'])
for i in indicadores: print('{} . {}'.format(len(i), i))
In [97]:
# Separacion de dataset por indicador
dict_indicadores = {}
for i in indicadores:
indicador = dataset[dataset['indicador'] == i]
dict_indicadores[i] = indicador
Con el objetivo de nombrar las hojas de cada indicador, es necesario quitar de los nombres de indicador los caracteres inválidos para nombres de hojas y reducir la longitud a menos de 31 caracteres
In [98]:
dict_indicadores['Consumo'] = dict_indicadores.pop(r'Consumo (l/h/d)')
dict_indicadores['Alcantarillado'] = dict_indicadores.pop(r'Cobertura de alcantarillado reportada (%)')
dict_indicadores['Dotacion'] = dict_indicadores.pop(r'Dotación (l/h/d)')
dict_indicadores['Abasto_por_pipas'] = dict_indicadores.pop(r'Usuarios abastecidos con pipas (%)')
dict_indicadores['Cobertura_Agua_potable'] = dict_indicadores.pop(r'Cobertura de agua potable reportada (%)')
dict_indicadores['Costos_por_volumen'] = dict_indicadores.pop(r'Costos entre volumen producido ($/m³)')
dict_indicadores['Trabajadores_por_fuga'] = dict_indicadores.pop(r'Empleados dedicados al control de fugas (Trabajadores/fuga)')
dict_indicadores['Perdidas_por_toma'] = dict_indicadores.pop(r'Pérdidas por toma (m³/toma)')
dict_indicadores['Perdidas_por_long_red'] = dict_indicadores.pop(r'Pérdidas por longitud de red (m³/km)')
dict_indicadores['Horas_tandeo'] = dict_indicadores.pop(r'Horas con servicio en zonas de tandeo')
dict_indicadores['Rehabilitacion_Tomas'] = dict_indicadores.pop(r'Rehabilitación de tomas domiciliarias (%)')
dict_indicadores['Empleados_cada_mil_tomas'] = dict_indicadores.pop(r'Empleados por cada mil tómas (Núm)')
dict_indicadores['Reclamos_cada_mil_tomas'] = dict_indicadores.pop(r'Reclamaciones por cada mil tomas (Núm)')
In [99]:
# Estandarizacion de dataset en formato Open XML (.xlsx)
destino = r'D:\PCCS\01_Dmine\Datasets\Pigoo\Pigoo.xlsx'
writer = pd.ExcelWriter(destino)
for k, v in dict_indicadores.items():
v.to_excel(writer, sheet_name=k.replace(r'/', '|'))
writer.close()