Indicadores que salen de este dataset:
ID | Descripción |
---|---|
P0306 | Programas de modernización catastral |
P0307 | Disposiciones normativas sustantivas en materia de desarrollo urbano u ordenamiento territorial |
P1001 | Promedio diario de RSU recolectados |
P1003 | Número de municipios con disponibilidad de servicios relacionados con los RSU |
P1006 | Número de municipios con aplicación de programas locales orientados a la GIRSU |
P1009 | Número de municipios con estudios de generación de RSU |
In [13]:
descripciones = {
'P0306' : 'Programas de modernización catastral',
'P0307' : 'Disposiciones normativas sustantivas en materia de desarrollo urbano u ordenamiento territorial',
'P1001' : 'Promedio diario de RSU recolectados',
'P1003' : 'Número de municipios con disponibilidad de servicios relacionados con los RSU',
'P1006' : 'Número de municipios con aplicación de programas locales orientados a la GIRSU',
'P1009' : 'Número de municipios con estudios de generación de RSU',
}
In [598]:
# Librerias utilizadas
import pandas as pd
import sys
import urllib
import os
import zipfile
import csv
import pprint
import re
In [2]:
# Configuracion del sistema
print('Python {} on {}'.format(sys.version, sys.platform))
print('Pandas version: {}'.format(pd.__version__))
import platform; print('Running on {} {}'.format(platform.system(), platform.release()))
In [3]:
root = r'http://www.beta.inegi.org.mx/contenidos/proyectos/censosgobierno/municipal/cngmd/2015/datosabiertos/'
links = {
'P0306' : r'm1/Programa_modernizacion_catastral_cngmd2015_csv.zip', # Programas de modernización catastral
'P0307' : r'm2/Marco_regulatorio_cngmd2015_csv.zip', # Disposiciones normativas sustantivas en materia de desarrollo urbano u ordenamiento territorial
'P1001' : r'm6/Rec_RSU_cngmd2015_csv.zip', # Promedio diario de RSU recolectados
'P1006' : r'm6/Prog_gest_int_RSU_cngmd2015_csv.zip', # Número de municipios con aplicación de programas locales orientados a la GIRSU
'P1009' : r'm6/Est_gen_comp_RSU_cngmd2015_csv.zip', # Número de municipios con estudios de generación de RSU
}
En el caso del parámetro P1003, los datos se extraen desde 3 archivos. Estos archivos son una base de datos para cada servicio relacionado con los RSU, Utilizando nuevamente el archivo que utiliza P1001 y dos adicionales:
In [4]:
P1003links = { # Número de municipios con disponibilidad de servicios relacionados con los RSU
1 : r'm6/Rec_RSU_cngmd2015_csv.zip',
2 : r'm6/Trat_RSU_cngmd2015_csv.zip',
3 : r'm6/Disp_final_RSU_cngmd2015_csv.zip'
}
In [5]:
# Destino local
destino = r'D:\PCCS\00_RawData\01_CSV\cngmd\2015'
In [6]:
# Descarga de zips para parametros que se encuentran en un solo archivo
m_archivos = {} # Diccionario para guardar memoria de descarga
for parametro, fuente in links.items():
file = fuente.split('/')[1]
remote_path = root+fuente
local_path = destino + r'\{}'.format(file)
if os.path.isfile(local_path):
print('Ya existe el archivo: {}'.format(local_path))
m_archivos[parametro] = local_path
else:
print('Descargando {} ... ... ... ... ... '.format(local_path))
urllib.request.urlretrieve(remote_path, local_path) #
m_archivos[parametro] = local_path
print('se descargó {}'.format(local_path))
In [7]:
# Descarga de zips para parametro P1003
m_archivos2 = {} # Diccionario para guardar memoria de descarga
for parametro, fuente in P1003links.items():
file = fuente.split('/')[1]
remote_path = root+fuente
local_path = destino + r'\{}'.format(file)
if os.path.isfile(local_path):
print('Ya existe el archivo: {}'.format(local_path))
m_archivos2[parametro] = local_path
else:
print('Descargando {} ... ... ... ... ... '.format(local_path))
urllib.request.urlretrieve(remote_path, local_path) #
m_archivos2[parametro] = local_path
print('se descargó {}'.format(local_path))
In [8]:
# Descompresión de archivos de m_parametro
unzipped = {}
for parametro, comprimido in m_archivos.items():
target = destino + '\\' + parametro
if os.path.isfile(target):
print('Ya existe el archivo: {}'.format(target))
unzipped[parametro] = target
else:
print('Descomprimiendo {} ... ... ... ... ... '.format(target))
descomprimir = zipfile.ZipFile(comprimido, 'r')
descomprimir.extractall(target)
descomprimir.close
unzipped[parametro] = target
In [9]:
# Descompresión de archivos de m_parametro2
unzipped2 = {}
for parametro, comprimido in m_archivos2.items():
target = destino + '\\P1003\\' + str(parametro)
if os.path.isfile(target):
print('Ya existe el archivo: {}'.format(target))
unzipped2[parametro] = target
else:
print('Descomprimiendo {} ... ... ... ... ... '.format(target))
descomprimir = zipfile.ZipFile(comprimido, 'r')
descomprimir.extractall(target)
descomprimir.close
unzipped2[parametro] = target
In [1166]:
# Localizacion de archivos de cada parametro
# Cada parametro tiene rutas y estructuras distintas. En este paso localizo manualmente
# cada tabla y estructura desde los comprimidos. cada valor del diccionario contiene la ruta hacia
# donde se encuentran las tablas.
cd = r'\conjunto_de_datos'
tablas = {
'P0306' : destino + r'\P0306' + cd,
'P0307' : destino + r'\P0307\marco_regulatorio_cngmd2015_dbf' + cd,
'P1001' : destino + r'\P1001\Rec_RSU_cngmd2015_csv' + cd,
'P1006' : destino + r'\P1006\Prog_gest_int_RSU_cngmd2015_csv' + cd,
'P1009' : destino + r'\P1009\Est_gen_comp_RSU_cngmd2015_csv' + cd,
}
# Tablas para P1003
destino2 = destino + r'\P1003'
tablasP1003 = {
'1' : destino2 + r'\1' + r'\Rec_RSU_cngmd2015_csv' + cd,
'2' : destino2 + r'\2' + r'\Trat_RSU_cngmd2015_csv' + cd,
'3' : destino2 + r'\3' + r'\Disp_final_RSU_cngmd2015_csv' + cd,
}
Los datasets para cada parámetro surgen de diferentes preguntas del censo por lo que sus estructuras son muy desemejantes, razon por la cual: (1) : Cada parámetro tiene que procesarse individualmente. (2) : Es conveniente extraer de manera individual los metadatos de cada parámetro. Con este propósito, el siguiente script sirve para extraer los metadatos de cada dataset:
In [1267]:
# Script para extraer metadatos:
def getmeta(path, charcoding): # Path es el contenido en las variables 'tablas' para cada parametro
cat = r'\catalogos'
dic = r'\diccionario_de_datos'
metadict = {}
metapath = path.replace(cd, cat)
metafiles = os.listdir(metapath)
dicdict = {}
dicpath = path.replace(cd, dic)
dicfiles = os.listdir(dicpath)
for file in metafiles:
variable = file.replace('.csv', '')
if file.endswith('.csv'):
csvpath = metapath+'\\'+file
metadf = pd.DataFrame.from_csv(csvpath, parse_dates=False)
try:
metadf.index = metadf.index.map(str.lower)
except:
pass
metadict[variable] = metadf
else:
dothis = input('El archivo {} no es csv, que deseas hacer? [DD]etener [CC]ontinuar'.format(file))
dothis = dothis.lower()
if dothis == 'dd':
raise GeneratorExit('Script detenido por el usuario')
elif dothis == 'cc':
continue
else:
raise KeyError('No entendi la instruccion {}'.format(dothis))
for file in dicfiles:
if file.endswith('.csv'):
filename = file.replace('.csv', '')
csvpath = dicpath+'\\'+file
try:
dicdf = pd.read_csv(csvpath, skiprows=2, usecols=[1, 2], index_col=0, parse_dates=False).dropna()
except:
dicdf = pd.read_csv(csvpath, skiprows=2, usecols=[1, 2], index_col=0, parse_dates=False, encoding = charcoding).dropna()
dicdf.index = dicdf.index.map(str.lower)
dicdict[filename] = dicdf
return dicdict, metadict
In [1323]:
# Funcion para revisar metadatos
def queryvar(var, tablelen=10, colprint = 125, dictio = p0306dic, metadat = p0306meta):
pdefault = pd.get_option('display.max_colwidth')
pd.set_option('display.max_colwidth', colprint) # Expande el espacio para imprimir columnas
print('"{}" :\n{}'.format(var, dictio.loc[var][0].upper()))
if len(metadat[var]) > tablelen:
print('{}\nImprimiendo {} de {} registros'.format('-'*40,tablelen, len(metadat[var])))
print(metadat[var].head(tablelen))
pd.set_option('display.max_colwidth', pdefault) # Regresa la variable de impresion de columnas a su default
In [1271]:
# Creacion de diccionarios con metadatos para cada variable de P0306:
par = 'P0306'
p0306dic, p0306meta = getmeta(tablas['P0306'], 'mbcs')
print('Se extrajeron metadatos para las siguientes variables de {}:'.format(par))
for key in p0306meta.keys(): print(key)
print('\nDiccionarios disponibles para {}:'.format(par))
for key in p0306dic.keys(): print(key)
In [1272]:
# Para P0306, solo existe una tabla de descripciones por lo que se convierte a un dataframe unico para poder indexar
p0306dic = p0306dic['diccionario_de_datos_programa_modernizacion_catastral_cngmd2015_dbf']
p0306dic
Out[1272]:
In [1273]:
list(p0306dic.index)
Out[1273]:
In [1324]:
queryvar('acc_modr')
In [1274]:
print('** Descripciones de variables **\n'.upper())
for i in p0306dic.index:
queryvar(i)
print('\n')
In [1275]:
# Carga de datos
P0306f = tablas['P0306']+'\\'+os.listdir(tablas['P0306'])[0]
df = pd.read_csv(P0306f, dtype={'ubic_geo':'str'})
df = df.rename(columns = {'ubic_geo':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P0306 = df.where((pd.notnull(df)), None)
El archivo está estructurado de manera inconveniente, teniendo un renglón para cada variable. Lo conveniente es que cada renglón contenga toda la información de un solo municipio.
In [1276]:
# subset para pruebas
test = P0306.loc['15045']
test
Out[1276]:
Para corregirlo, primero hacemos dataframes separados para cada variable. Afortunadamente, la columna 'Estructu' sirve para agrupar estructuralmente el dataframe
In [1277]:
queryvar('estructu')
In [1278]:
# ¿El municipio cuenta con un programa de modernización catastral?
P0306_00 = P0306[P0306['estructu'] == 240500]['prog_mod'].astype('int')
print(P0306_00.head(10))
print('-'*50)
queryvar('prog_mod')
In [1279]:
# ¿En que periodo se realizaron las acciones del programa de modernización catastral?
P0306_03 = P0306[P0306['estructu'] == 240503]['perio_ac'].astype('int')
print(P0306_03.head(10))
print('-'*50)
queryvar('perio_ac')
In [1281]:
# ¿Qué acciones se realizaron?
P0306_02 = P0306[P0306['estructu'] == 240502]['acc_modr'].astype('int').groupby('CVE_MUN').apply(list)
print(P0306_02.head(10))
queryvar('acc_modr')
In [1282]:
# ¿Cuantas acciones se realizaron?
P0306_02b = P0306_02.apply(len).rename('n_acc_modr')
P0306_02b.head(10)
Out[1282]:
In [1283]:
queryvar('inst_enc')
In [1284]:
# ¿Que instituciones se han involucrado en la modernizacion catastral, y de qué manera?
P0306_01t = P0306[P0306['estructu'] == 240501][['inst_enc', 'tip_inst']] # tipo de apoyo e institucion
P0306_01t.head()
Out[1284]:
Se reemplazarán numeros por descripciones en tip_inst:
In [1285]:
queryvar('tip_inst')
In [1286]:
# Institucion involucrada
instit = {
1:'Administración pública de la entidad federativa',
2:'BANOBRAS',
3:'SEDATU',
4:'OTRA INSTITUCION'
}
In [1287]:
P0306_01t['tip_inst'] = P0306_01t['tip_inst'].replace(instit)
P0306_01t.head()
Out[1287]:
Y se separará la columna 'inst_enc' en 2:
In [1288]:
queryvar('inst_enc')
In [1290]:
P0306_01t1 = P0306_01t[P0306_01t['inst_enc'] == 1]['tip_inst'].groupby('CVE_MUN').apply(list).rename('i_coord_ejecuta')
P0306_01t2 = P0306_01t[P0306_01t['inst_enc'] == 2]['tip_inst'].groupby('CVE_MUN').apply(list).rename('i_otorga_apoyos')
In [1291]:
P0306_01t1.head()
Out[1291]:
In [1292]:
P0306_01t2.head()
Out[1292]:
Finalmente, se unirán todas las series en un solo dataframe
In [1293]:
# Convertir series en Dataframes
P0306_00 = P0306_00.to_frame()
P0306_03 = P0306_03.to_frame()
P0306_02 = P0306_02.to_frame()
P0306_02b = P0306_02b.to_frame()
P0306_01t1 = P0306_01t1.to_frame()
P0306_01t2 = P0306_01t2.to_frame()
In [1294]:
# Unir dataframes
P0306 = P0306_00.join(P0306_03).join(P0306_02).join(P0306_02b).join(P0306_01t1).join(P0306_01t2)
P0306 = P0306.where((pd.notnull(P0306)), None)
In [1295]:
P0306.head()
Out[1295]:
Metadatos para P0306
In [1296]:
P0306meta = {
'Nombre del Dataset' : 'Censo Nacional de Gobiernos Municipales y Delegacionales 2015',
'Descripcion del dataset' : 'Censo Nacional de Gobiernos Municipales y Delegacionales 2015',
'Disponibilidad Temporal' : '2015',
'Periodo de actualizacion' : 'Bienal',
'Nivel de Desagregacion' : 'Municipal',
'Notas' : 's/n',
'Fuente' : 'INEGI',
'URL_Fuente' : 'http://www.beta.inegi.org.mx/contenidos/proyectos/censosgobierno/municipal/cngmd/2015/datosabiertos/',
'Dataset base' : '"P0306.xlsx" disponible en \nhttps://github.com/INECC-PCCS/01_Dmine/tree/master/Datasets/CNGMD/2015',
}
P0306meta = pd.DataFrame.from_dict(P0306meta, orient='index', dtype=None)
P0306meta.columns = ['Descripcion']
P0306meta = P0306meta.rename_axis('Metadato')
P0306meta
Out[1296]:
In [1297]:
list(P0306meta)
Out[1297]:
In [1298]:
P0306.head()
Out[1298]:
EXPORTAR A EXCEL
In [1300]:
file = r'D:\PCCS\01_Dmine\Datasets\CNGMD\P0306.xlsx'
writer = pd.ExcelWriter(file)
P0306.to_excel(writer, sheet_name = 'P0306')
P0306meta.to_excel(writer, sheet_name ='METADATOS')
writer.save()
Es necesario cambiar el encoding para leer los archivos de este parametro
In [1306]:
# Redefinición de la función para revisar metadatos, porque los datos de la carpeta 'catálogos' de P0307
# no coinciden con los titulos de las columnas en la carpeta 'Conjunto de datos'.
def getmetab(csvpath, textcoding):
# Importa el csv
try: dicdf = pd.read_csv(csvpath,
index_col=0,
parse_dates=False
)
except: dicdf = pd.read_csv(csvpath,
index_col=0,
parse_dates=False,
encoding = textcoding,
)
# Renombra las columnas
dicdf.columns = list(dicdf.iloc[1])
# Crea columna con el indice
dicdf['text_arc'] = dicdf.index
# Extrae el nombre del csv fuente en una columna independiente
def getarc(x):
try: return re.search('(?<=(o: ))([A-Z])\w+', x).group()
except: return None
dicdf['arc'] = dicdf['text_arc'].apply(lambda x: getarc(x))
# Extrae la descripcion del archivo en una columna independiente
def getdescarc(x):
try: return re.search('\(([^)]+)\)', x).group(1)
except: return None
dicdf['desc_arc'] = dicdf['text_arc'].apply(lambda x: getdescarc(x))
# Marca columnas que se van a eliminar (Las columnas de donde se sacaron las variables 'arc' y 'desc_arc')
dicdf['delete1'] = dicdf[list(dicdf.columns)[1:6]].notnull().sum(axis = 1)
# Rellenar valores NaN
dicdf = dicdf.fillna(method='ffill')
# Eliminar valores marcados previaente
dicdf = dicdf[dicdf.delete1 != 0]
# Eliminar encabezados de columna repetidos
dicdf = dicdf[dicdf.Descripción != 'Descripción']
# Asignar nuevo indice y eliminar columna 'arc'
dicdf = dicdf.set_index('arc')
# Elimina columna delete1
del dicdf['delete1']
# Renombra la columna de descripciones de codigos
dicdf.columns.values[5] = 'Descripcion codigos'
# Dame el DataFrame
return dicdf
In [1307]:
# También es necesario redefinir la función para hacer consultas a los metadatos
def queryvar(filename, var = '', tablelen=10, colprint = 125, dictio = metadatos):
pdefault = pd.get_option('display.max_colwidth')
pd.set_option('display.max_colwidth', colprint) # Expande el espacio para imprimir columnas
frame = dictio.loc[filename]
print('Archivo "{}.csv" {}'.format(filename, '-'*30)) # Muestra el nombre del archivo
print(frame.iloc[0]['desc_arc']) # Muestra la descripcion del archivo
if var == '': pass
else:
print('\n{}{}'.format(var.upper(), '-'*30)) # Muestra el nombre de la variable
varframe = frame[frame['Nombre de la \ncolumna'] == var.upper()] # Haz un subset con los datos de la variable
varframe = varframe.set_index('Códigos válidos en la columna')
print(varframe['Descripción'][0]) # Muestra la descripcion de la variable
print(varframe[['Descripcion codigos']]) # Imprime las descripciones de codigos
In [1308]:
csvpath = r'D:\PCCS\00_RawData\01_CSV\cngmd\2015\P0307\marco_regulatorio_cngmd2015_dbf\diccionario_de_datos\diccionario_de_datos_marco_regulatorio_cngmd2015.csv'
metadatos = getmetab(csvpath, 'mbcs')
In [1309]:
# Definición de rutas de archivos
par = 'P0307'
P0307files = {}
for file in os.listdir(tablas[par]):
P0307files[file.replace('.csv', '')] = tablas[par]+'\\'+file
El contenido de los archivos en la carpeta "Conjunto de datos" es el siguiente:
In [1310]:
for file in P0307files.keys():
print(file)
queryvar(file.upper())
print('\n')
La información para el parámetro P0307 se encuentra en el archivo M_REGULA.csv
In [1311]:
print('P0307 - {}\n'.format(descripciones['P0307']))
queryvar('m_regula'.upper())
In [1312]:
# Carga de datos
P0307f = tablas['P0307']+'\\'+ os.listdir(tablas['P0307'])[4]
df = pd.read_csv(P0307f, dtype={'ubic_geo':'str'})
df = df.rename(columns = {'ubic_geo':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P0307 = df.where((pd.notnull(df)), None)
In [1313]:
P0307.head()
Out[1313]:
In [1314]:
P0307.columns
Out[1314]:
¿Dónde están los datos sobre desarrollo urbano y ordenamiento territorial?
In [1315]:
queryvar('m_regula'.upper(), 'tema_nis')
Los datos de DU y OT estan en la columna TEMA_NIS. El código 41 en esta column indica DU y OT
In [1317]:
P0307 = P0307[P0307['tema_nis'] == 41]
P0307.head()
Out[1317]:
In [1318]:
# Quita las columnas que estén vacías
P0307 = P0307.dropna(axis=1, how = 'all')
P0307.head()
Out[1318]:
In [1319]:
# Metadatos
meta = P0306meta
meta.at['Dataset base','Descripcion'] = meta.at['Dataset base','Descripcion'].replace('P0306', 'P0307')
meta
Out[1319]:
Exportar archivo
In [1320]:
par = 'P0307'
file = r'D:\PCCS\01_Dmine\Datasets\CNGMD'+'\\'+par+'.xlsx'
writer = pd.ExcelWriter(file)
P0307.to_excel(writer, sheet_name = par)
meta.to_excel(writer, sheet_name ='METADATOS')
writer.save()
In [1201]:
# Rutas de archivos
param = 'P1001'
rutadatos = tablas[param]
rutameta = tablas[param].replace('conjunto_de_datos', 'diccionario_de_datos')
rutameta = rutameta + '\\' + os.listdir(rutameta)[0]
print('{}\n{}'.format(rutadatos, rutameta))
In [1202]:
# Obtencion de metadatos
# Cada hoja de metadatos es muy muy similar, pero con muy ligeras variaciones
# La unica parte del proceso que es seguro automatizar es la importación del archivo hacia Python
def getmeta(csvpath, textcoding):
# Importa el csv
try:
dicdf = pd.read_csv(csvpath,
index_col=0,
parse_dates=False
)
except:
dicdf = pd.read_csv(csvpath,
index_col=0,
parse_dates=False,
encoding = textcoding,
)
# Renombra las columnas
dicdf.columns = list(dicdf.iloc[1])
# Dame el archivo
return dicdf
In [1203]:
os.listdir(r'D:\PCCS\00_RawData\01_CSV\cngmd\2015\P1001\Rec_RSU_cngmd2015_csv\diccionario_de_datos')
Out[1203]:
In [1204]:
metadatos = getmeta(rutameta, 'mbcs')
# Crea columna con el indice
metadatos['Nombre de la \ncolumna'] = metadatos.index
# Extrae el nombre del csv fuente en una columna independiente
def getarc(x):
try: return x.split(' ')[1]
except: return None
metadatos['archivo'] = metadatos['Nombre de la \ncolumna'].apply(getarc)
# Extrae la descripcion del archivo en una columna independiente
def getdescarc(x):
try: return x.split('(')[1].replace(')','')
except: return None
metadatos['desc_arc'] = metadatos['Nombre de la \ncolumna'].apply(getdescarc)
# En la columna 'arc', reemplaza las celdas cuyo valor es 'de'
metadatos['archivo'] = metadatos['archivo'].replace({'de':None})
# Marca columnas que se van a eliminar (Las columnas de donde se sacaron las variables 'arc' y 'desc_arc')
metadatos['delete1'] = metadatos[list(metadatos.columns)[1:6]].notnull().sum(axis = 1)
# Rellenar valores NaN
metadatos = metadatos.fillna(method='ffill')
# Eliminar valores marcados previaente
metadatos = metadatos[metadatos.delete1 != 0]
# Eliminar columnas sin datos
metadatos = metadatos.dropna(axis = 1, how = 'all')
# Eliminar encabezados de columna repetidos
metadatos = metadatos[metadatos.Descripción != 'Descripción']
# Asignar nuevo indice y eliminar columna 'text_arc'
metadatos = metadatos.set_index('archivo')
# Elimina columna delete1
del metadatos['delete1']
# Renombra la columna de descripciones de codigos
metadatos.columns.values[3] = 'Descripcion codigos'
# Reordena las columnas
neworder = ['Nombre de la \ncolumna', 'Descripción', 'Tipo de dato', 'Rango válido', 'Descripcion codigos',
'Pregunta textual', 'Página de Cuestionario', 'Definición', 'desc_arc']
metadatos = metadatos.reindex(columns= neworder)
# Renombra las columnas para que funcionen con queryvar
metadatos = metadatos.rename({'Rango válido':'Códigos válidos en la columna'})
metadatos.head(3)
Out[1204]:
¿Donde estan los datos?
In [1205]:
metadatos.loc['secc_i_tr_cngmd15_m6'][metadatos.loc['secc_i_tr_cngmd15_m6']['Nombre de la \ncolumna'] == 'P2_2']
Out[1205]:
Los datos se encuentran en el archivo secc_i_tr_cngmd15_m6, en la columna P2_2
In [1206]:
# Definición de rutas a archivos de datos
Paramfiles = {}
for file in os.listdir(rutadatos):
Paramfiles[file.replace('.csv', '')] = rutadatos+'\\'+file
for file, path in Paramfiles.items():
print('{}:\n{}\n'.format(file, path))
In [1209]:
# Carga de datos
P1001f = tablas[param]+'\\'+ os.listdir(tablas[param])[0]
df = pd.read_csv(P1001f, dtype={'folio':'str'}, encoding = 'mbcs')
df = df.rename(columns = {'folio':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P1001 = df.where((pd.notnull(df)), None)
In [1208]:
P1001.head(1)
Out[1208]:
In [1210]:
P1001 = P1001['p2_2'].to_frame()
P1001.head(1)
Out[1210]:
Exportar archivos
In [1211]:
# Metadatos
meta = meta # Utiliza el archivo de metadatos que habías definido anteriormente
meta.at['Dataset base','Descripcion'] = '"P1001.xlsx" disponible en \nhttps://github.com/INECC-PCCS/01_Dmine/tree/master/Datasets/CNGMD/2015'
meta.at['Notas','Descripcion'] = 'p2_2: Cantidad de residuos sólidos recolectada en kilogramos.'
meta
Out[1211]:
In [1213]:
file = r'D:\PCCS\01_Dmine\Datasets\CNGMD'+'\\'+param+'.xlsx'
writer = pd.ExcelWriter(file)
P1001.to_excel(writer, sheet_name = param)
meta.to_excel(writer, sheet_name ='METADATOS')
writer.save()
In [1214]:
# Rutas de archivos
param = 'P1006'
rutadatos = tablas[param]
rutameta = tablas[param].replace('conjunto_de_datos', 'diccionario_de_datos')
rutameta = rutameta + '\\' + os.listdir(rutameta)[0]
print('{}\n{}'.format(rutadatos, rutameta))
¿Donde estan los datos?
El archivo secc_v_tr_cngmd15_m6.csv Contiene variables que caracterizan a los municipios de acuerdo a los programas orientados a la gestión integral de los residuos sólidos urbanos, durante el año 2014. En este archivo, la columna P13 Indica si se cuenta con algún programa orientado a la gestión integral de residuos sólidos urbanos (1 = Cuenta con Programas; 2 = No cuenta con programas).
El archivo secc_v_tr_cngmd15_m6_p13_1.csv Contiene la variable P13_1_1_2, que indica el tipo de programa orientado a la gestión integral de residuos sólidos urbanos.
In [1215]:
# Definición de rutas a archivos de datos
Paramfiles = {}
for file in os.listdir(rutadatos):
Paramfiles[file.replace('.csv', '')] = rutadatos+'\\'+file
for file, path in Paramfiles.items():
print('{}:\n{}\n'.format(file, path))
In [1216]:
os.listdir(tablas[param])[0]
Out[1216]:
In [1217]:
# Carga de datos
P1006f = tablas[param]+'\\'+ os.listdir(tablas[param])[0]
df = pd.read_csv(P1006f, dtype={'folio':'str'}, encoding = 'mbcs')
df = df.rename(columns = {'folio':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P1006 = df.where((pd.notnull(df)), None)
Exportar Archivos
In [1218]:
P1006 = P1006['p13'].to_frame()
In [1219]:
# Metadatos
meta = meta # Utiliza el archivo de metadatos que habías definido anteriormente
meta.at['Dataset base','Descripcion'] = '"P1006.xlsx" disponible en \nhttps://github.com/INECC-PCCS/01_Dmine/tree/master/Datasets/CNGMD/2015'
meta.at['Notas','Descripcion'] = 'En la columna p13, ¿El municipio cuenta con Programas de Gestion de Residuos? 1: Si, 2: No'
In [1220]:
meta
Out[1220]:
In [1222]:
file = r'D:\PCCS\01_Dmine\Datasets\CNGMD'+'\\'+param+'.xlsx'
writer = pd.ExcelWriter(file)
P1006.to_excel(writer, sheet_name = param)
meta.to_excel(writer, sheet_name ='METADATOS')
writer.save()
In [1325]:
# Rutas de archivos
param = 'P1009'
rutadatos = tablas[param]
rutameta = tablas[param].replace('conjunto_de_datos', 'diccionario_de_datos')
rutameta = rutameta + '\\' + os.listdir(rutameta)[0]
print('{}\n{}'.format(rutadatos, rutameta))
¿Donde están los datos?
secc_iv_tr_cngmd15_m6 Contiene variables que caracterizan a los municipios de acuerdo a los estudios sobre la generación y composición de los residuos sólidos urbanos, durante el año 2014.
La columna P12 Indica si se cuenta con algún estudio sobre la generación de residuos sólidos urbanos (1 = Si; 2 = No).
In [1326]:
# Definición de rutas a archivos de datos
Paramfiles = {}
for file in os.listdir(rutadatos):
Paramfiles[file.replace('.csv', '')] = rutadatos+'\\'+file
for file, path in Paramfiles.items():
print('{}:\n{}\n'.format(file, path))
In [1334]:
# Carga de datos
P1009f = tablas[param]+'\\'+ os.listdir(tablas[param])[0]
df = pd.read_csv(P1009f, dtype={'folio':'str'}, encoding = 'mbcs')
df = df.rename(columns = {'folio':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P1009 = df.where((pd.notnull(df)), None)
del(P1009['entidad'])
del(P1009['municipio'])
Exportar archivos
In [1328]:
meta
Out[1328]:
In [1335]:
# Metadatos
meta = meta # Utiliza el archivo de metadatos que habías definido anteriormente
meta.at['Dataset base','Descripcion'] = '"P1009.xlsx" disponible en \nhttps://github.com/INECC-PCCS/01_Dmine/tree/master/Datasets/CNGMD/2015'
meta.at['Notas','Descripcion'] = 'Para la columna P12, ¿El Municipio cuenta con estudios de generacion de residuos? 1: Si 2: No'
meta
Out[1335]:
In [1336]:
file = r'D:\PCCS\01_Dmine\Datasets\CNGMD'+'\\'+param+'.xlsx'
writer = pd.ExcelWriter(file)
P1009.to_excel(writer, sheet_name = param)
meta.to_excel(writer, sheet_name ='METADATOS')
writer.save()
¿Donde estan los datos?
La informacion de este parametro se encuentra dividida entre diferentes carpetas.
In [1337]:
tablasP1003
Out[1337]:
La Carpeta 1 Contiene 2 archivos:
secc_i_tr_cngmd15_m6.csv - Contiene variables que caracterizan a los municipios de acuerdo a la recolección de residuos sólidos urbanos, durante el año 2014. En este archivo, la variable P1 indica la disponibilidad del servicio de recolección (1: Si, 2:No)
secc_i_tr_cngmd15_m6_p6_3_2.csv - Contiene variables que caracterizan a los municipios de acuerdo al parque vehicular utilizado para la recolección y traslado de residuos sólidos urbanos, durante el año 2014. En este archivo, la variable P6_3_2_1_3 contiene el número de vehículos utilizados para la recolección de Residuos solidos urbanos. (Esta variable puede utilizarse para la construcción del parámetro 1005)
La Carpeta 2 Contiene 1 archivo:
secc_ii_tr_cngmd15_m6.csv - Contiene variables que caracterizan a los municipios de acuerdo al tratamiento de los residuos, durante el año 2014. En este archivo, la variable P10 Identifica si al menos una fracción de los residuos sólidos urbanos recolectados por el municipio o delegación es enviada a plantas de tratamiento (1: Si, 2:No)
La Carpeta 3 contiene 1 archivo: secc_iii_tr_cngmd15_m6.csv - Contiene variables que caracterizan a los municipios de acuerdo a la disposición final de los residuos sólidos urbanos, durante el año 2014. En este archivo, la variable P11 Identifica el número de sitios de disposición final a los que son son remitidos los residuos que se recolectan en todo el municipio o delegación
In [1347]:
# Rutas de archivos
param = 'P1003'
rutasdatos = list(tablasP1003.values())
for ruta in rutasdatos:
print(ruta)
In [1348]:
# Definición de rutas a archivos de datos
Paramfiles = {}
for rutadatos in rutasdatos:
for file in os.listdir(rutadatos):
Paramfiles[file.replace('.csv', '')] = rutadatos+'\\'+file
for file, path in Paramfiles.items():
print('{}:\n{}\n'.format(file, path))
In [1349]:
# Carga de datos
# Es necesario hacer 3 dataframes, uno por cada archivo, y después unir las columnas para cada parámetro.
P1003f1 = Paramfiles['secc_i_tr_cngmd15_m6']
df = pd.read_csv(P1003f1, dtype={'folio':'str'}, encoding = 'mbcs')
df = df.rename(columns = {'folio':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P1003f1 = df.where((pd.notnull(df)), None)
P1003f2 = Paramfiles['secc_ii_tr_cngmd15_m6']
df = pd.read_csv(P1003f2, dtype={'folio':'str'}, encoding = 'mbcs')
df = df.rename(columns = {'folio':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P1003f2 = df.where((pd.notnull(df)), None)
# El Parametro en realidad no utiliza el numero de sitios de disposicion de residuos.
# Y no está documentado el significado de NS en la columna P11 lo que dificulta la lectura de los datos
'''
P1003f3 = Paramfiles['secc_iii_tr_cngmd15_m6']
df = pd.read_csv(P1003f3, dtype={'folio':'str'}, encoding = 'mbcs')
df = df.rename(columns = {'folio':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P1003f3 = df.where((pd.notnull(df)), None)
'''
Out[1349]:
In [1351]:
# Aislar datos de interés
P1003 = P1003f1['p1'].to_frame()
P1003['p10'] = P1003f2['p10']
# P1003['p11'] = P1003f3['p11'] #p11 se excluye del analisis por los motivos descritos antes
P1003.head(1)
Out[1351]:
Exportar archivos
In [1352]:
# Metadatos
meta = meta # Utiliza el archivo de metadatos que habías definido anteriormente
meta.at['Dataset base','Descripcion'] = '"P1003.xlsx" disponible en \nhttps://github.com/INECC-PCCS/01_Dmine/tree/master/Datasets/CNGMD/2015'
meta.at['Notas','Descripcion'] = 'para p1: ¿Dispone de servicio de recoleccion? (1: Si 2: No)\npara p10: ¿Al menos una fracción de los RSU es enviada a plantas de tratamiento? (1: Si 2: No)\npara p11: ¿A cuantos sitios de disposición final son remitidos los residuos?'
meta
Out[1352]:
In [1353]:
param
Out[1353]:
In [1355]:
file = r'D:\PCCS\01_Dmine\Datasets\CNGMD'+'\\'+param+'.xlsx'
writer = pd.ExcelWriter(file)
P1003.to_excel(writer, sheet_name = param)
meta.to_excel(writer, sheet_name ='METADATOS')
writer.save()
¿Donde están los datos?
La Carpeta 1 de P1003 (Procesada previamente) contiene 2 archivos:
secc_i_tr_cngmd15_m6.csv, y
secc_i_tr_cngmd15_m6_p6_3_2.csv - Contiene variables que caracterizan a los municipios de acuerdo al parque vehicular utilizado para la recolección y traslado de residuos sólidos urbanos, durante el año 2014. En este archivo, la variable P6_3_2_1_3 contiene el número de vehículos utilizados para la recolección de Residuos solidos urbanos. (Esta variable puede utilizarse para la construcción del parámetro 1005)
In [1358]:
# Carga de datos
P1005f = Paramfiles['secc_i_tr_cngmd15_m6_p6_3_2']
df = pd.read_csv(P1005f, dtype={'FOLIO':'str'}, encoding = 'mbcs')
df = df.rename(columns = {'FOLIO':'CVE_MUN'})
df.set_index('CVE_MUN', inplace = True)
P1005f = df.where((pd.notnull(df)), None)
In [1357]:
P1005f.head(1)
Out[1357]:
Exportar archivos
In [1359]:
P1005 = P1005f['P6_3_2_1_3'].to_frame()
P1005.head(3)
Out[1359]:
In [1360]:
# Metadatos
meta = meta # Utiliza el archivo de metadatos que habías definido anteriormente
meta.at['Dataset base','Descripcion'] = '"P1005.xlsx" disponible en \nhttps://github.com/INECC-PCCS/01_Dmine/tree/master/Datasets/CNGMD/2015'
meta.at['Notas','Descripcion'] = 'P6_3_2_1_3: Numero de vehiculos utilizados para la recolección de Residuos Solidos Urbanos'
meta
Out[1360]:
In [1361]:
param = 'P1005'
file = r'D:\PCCS\01_Dmine\Datasets\CNGMD'+'\\'+param+'.xlsx'
writer = pd.ExcelWriter(file)
P1005.to_excel(writer, sheet_name = param)
meta.to_excel(writer, sheet_name ='METADATOS')
writer.save()
In [ ]: