I am working on the file "Datasets/CLEU/CLEU.ipynb".
The first task is:
Hay dos tipos de casos:
1. Renglones en donde la columna "Total de manzanas" es igual al numero de manzanas en la columna "Restricción del paso a automóviles en ninguna vialidad" (Por ejemplo, la CVE_MUN 04007). En estos renglones es seguro asumir que el valor de la columna "Restricción del paso a automóviles" es igual a cero.
2. Renglones en donde la columna "Total de manzanas" no es igual al numero de manzanas en la columna "Restricción del paso a automóviles en ninguna vialidad", y la hay una cantidad definida de manzanas en la columna "Restricción del paso a automóviles No especificado". (Por ejemplo, la CVE_MUN 050307) En estos renglones no se puede definir con certeza el valor de la columna "Restricción del paso a automóviles", por lo que se dejará vacío
Can you write Python code for it?

# Funcion para tratar los casos vacios:
def llenarestriccion(x):
    tm = 'Total de manzanas'
    rpanv = 'Restricción del paso a automóviles en ninguna vialidad'
    if x[tm] == x[rpanv]:
        return 0
    else:
        return x['Restricción del paso a automóviles']

# Corrida de prueba
testframe.apply(llenarestriccion, axis = 1)

# Corrida sobre el dataset del paramentro
P0702['Restricción del paso a automóviles'] = P0702.apply(llenarestriccion, axis = 1)

# metadatos especificos para este parametro
metadatos['Descripcion del dataset'] = 'Manzanas por municipio y restricción del paso a automóviles'
metadatos['Notas'] = 'Se presentan los resultados de 3,993 localidades con información de entorno urbano. Se excluyen 35,839 manzanas que corresponden a edificios de conjuntos habitacionales.'

# Convertir metadatos a dataframe
P0702meta = pd.DataFrame.from_dict(metadatos, orient='index', dtype=None)
P0702meta.columns = ['Descripcion']
P0702meta = P0702meta.rename_axis('Metadato')
P0702meta

# Descripciones de columnas
variables = {
    'Total de manzanas': 'Total de manzanas',
    'Restricción del paso a automóviles': 'Total de manzanas que cuentan con restriccion al paso de automoviles en una o más de sus vialidades',
    'Restricción del paso a automóviles en ninguna vialidad': 'Total de manzanas que no tienen restriccion al paso de automoviles en ninguna de sus vialidades',
    'Restricción del paso a automóviles No especificado': 'Total de manzanas en donde no se especifican las restricciones al paso de automoviles'
}

# Convertir descripciones a dataframe
P0702vars = pd.DataFrame.from_dict(variables, orient='index', dtype=None)
P0702vars.columns = ['Descripcion']
P0702vars = P0702vars.rename_axis('Mnemonico')
P0702vars.head()

# Guardar el dataset
file = r'D:\PCCS\01_Dmine\Datasets\CLEU\P0702.xlsx'
writer = pd.ExcelWriter(file)
P0702.to_excel(writer, sheet_name = 'DATOS')
P0702meta.to_excel(writer, sheet_name = 'METADATOS')
P0702vars.to_excel(writer, sheet_name =...


I am working on the file "Datasets/CLEU/CLEU.ipynb".
The first task is:
Limpieza de dataset para P0704: Vialidades con recubrimiento de la calle
Can you write Python code for it?

nom_hojas['P0704']

P0704_raw = datasets['P0704']
P0704_raw.head()

# Solo nos interesan los renglones con totales
P0704 = P0704_raw[P0704_raw['Disponibilidad de alumbrado público'] == 'Total']

# Y podemos quitar la columna "Disponibilidad de alumbrado público"
del(P0704['Disponibilidad de alumbrado público'])
P0704.head()

# metadatos especificos para este parametro
metadatos['Descripcion del dataset'] = 'Vialidades por municipio según tipo de recubrimiento de la calle'
metadatos['Notas'] = 'Total de vialidades que circundan cada manzana. Se presentan los resultados de 3,993 localidades con información de entorno urbano. Se excluyen 35,839 manzanas que corresponden a edificios de conjuntos habitacionales.'

# Convertir metadatos a dataframe
P0704meta = pd.DataFrame.from_dict(metadatos, orient='index', dtype=None)
P0704meta.columns = ['Descripcion']
P0704meta = P0704meta.rename_axis('Metadato')
P0704meta

# Que Variables tiene este dataset?
list(P0704)

# Descripciones de columnas
variables = {
    'Total de vialidades': 'Total de Vialidades',
    'Pavimento o concreto': 'Vialidades que cuentan con Pavimento o concreto',
    'Empedrado o adoquín': 'Vialidades que cuentan con Empedrado o adoquín',
    'Sin recubrimiento': 'Vialidades Sin recubrimiento',
    'Recubrimiento No especificado': 'Vialidades con Recubrimiento No especificado'
}

# Convertir descripciones a dataframe
P0704vars = pd.DataFrame.from_dict(variables, orient='index', dtype=None)
P0704vars.columns = ['Descripcion']
P0704vars = P0704vars.rename_axis('Mnemonico')
P0704vars

# Guardar el dataset
file = r'D:\PCCS\01_Dmine\Datasets\CLEU\P0704.xlsx'
writer = pd.ExcelWriter(file)
P0704.to_excel(writer, sheet_name = 'DATOS')
P0704meta.to_excel(writer, sheet_name = 'METADATOS')
P0704vars.to_excel(writer, sheet_name = 'VARIABLES')
writer.save()
print('---------------TERMINADO---------------')


I am working on the file "Datasets/CLEU/CLEU.ipynb".
The first task is:
Limpieza de dataset para P0705: Vialidades con banqueta
Can you write Python code for it?

nom_hojas['P0705']

# Dataset base
P0705_raw = datasets['P0705']
P0705_raw.head()

db = 'Disponibilidad de banqueta'
list(P0705_raw[db].unique())

# Comenzamos creando un dataset con el total de manzanas por municipio
tm = 'Total de manzanas'
manzanas = P0705_raw[P0705_raw[db] == 'Total'][tm].to_frame()
manzanas.head()

# Para el parametro, hay que separar la columna "Disponibilidad de banqueta" en una columna por cada subset
tv = 'Banqueta en todas las vialidades'
av = 'Banqueta en alguna vialidad'
nv = 'Banqueta en ninguna vialidad'
ne = 'No especificado'
todasvial = P0705_raw[P0705_raw[db] == tv][tm].to_frame(name = tv)
alguvial = P0705_raw[P0705_raw[db] == av][tm].to_frame(name = av)
ningvial = P0705_raw[P0705_raw[db] == nv][tm].to_frame(name = nv)
nevial = P0705_raw[P0705_raw[db] == ne][tm].to_frame(name = ne)

# Después es necesario unir cada serie a partir del dataset 'manzanas'
P0705 = manzanas.join(todasvial).join(alguvial).join(ningvial).join(nevial)
P0705.head()

# celdas de la columna "Banqueta en todas las vialidades" que quedaron sin valores
P0705[P0705['Banqueta en todas las vialidades'].isnull()].tail()


I am working on the file "Datasets/CLEU/CLEU.ipynb".
The first task is:
Limpieza de dataset para P0713: Vialidades con rampa para silla de ruedas
Can you write Python code for it?

nom_hojas['P0713']

# Dataset base
P0713_raw = datasets['P0713']
P0713_raw.head()

list(P0713_raw)

# Solo nos interesan los renglones con totales
P0713 = P0713_raw[P0713_raw['Disponibilidad de banqueta'] == 'Total']

# Y podemos quitar la columna "Disponibilidad de alumbrado público"
del(P0713['Disponibilidad de banqueta'])
P0713.head()

metadatos

# metadatos especificos para este parametro
metadatos['Descripcion del dataset'] = 'Manzanas municipio según disponibilidad de rampa para silla de ruedas en sus vialidades'
metadatos['Notas'] = 'Total de vialidades que circundan cada manzana. Se presentan los resultados de 3,993 localidades con información de entorno urbano. Se excluyen 35,839 manzanas que corresponden a edificios de conjuntos habitacionales.'

# Convertir metadatos a dataframe
P0713meta = pd.DataFrame.from_dict(metadatos, orient='index', dtype=None)
P0713meta.columns = ['Descripcion']
P0713meta = P0713meta.rename_axis('Metadato')
P0713meta

# Que Variables tiene este dataset?
list(P0713)

# Descripciones de columnas
variables = {
    'Total de manzanas': 'Total de manzanas',
    'Rampa en Todas las vialidades': 'Manzanas con rampa en Todas las vialidades',
    'Rampa en Alguna vialidad': 'Manzanas con rampa en Alguna vialidad',
    'Rampa en Ninguna vialidad': 'Manzanas con rampa en Ninguna vialidad',
    'Rampa No especificado': 'Manzanas en donde no se ha especificado si cuenta o no con rampa'
}

P0713vars = pd.DataFrame.from_dict(variables, orient='index', dtype=None)
P0713vars.columns = ['Descripcion']
P0713vars = P0713vars.rename_axis('Mnemonico')
P0713vars

# Guardar el dataset
file = r'D:\PCCS\01_Dmine\Datasets\CLEU\P0713.xlsx'
writer = pd.ExcelWriter(file)
P0713.to_excel(writer, sheet_name = 'DATOS')
P0713meta.to_excel(writer, sheet_name = 'METADATOS')
P0713vars.to_excel(writer, sheet_name = 'VARIABLES')
writer.save()
print('---------------TERMINADO---------------')


I am working on the file "Datasets/CLEU/CLEU.ipynb".
The first task is:
Nuevamente, revisamos las celdas que no tienen datos en la columna de "Restriccion al paso de automóviles"
Can you write Python code for it?

# Celdas de la columna "Restricción del paso a automóviles" que quedaron sin valores
testframe = P0702[P0702['Restricción del paso a automóviles'].isnull()].head()
testframe


I am working on the file "Datasets/CLEU/CLEU.ipynb".
The first task is:
Para los renglones en donde el valor de la columna "Total de Manzanas" es igual al valor de la columna "Banqueta en ninguna vialidad" se puede reemplazar el valor NaN por Cero.
Can you write Python code for it?

P0705[P0705[tm] == P0705[nv]].head()

# Funcion para tratar los casos vacios:
def llenarestriccion(x):
    if x[tm] == x[nv]:
        return 0
    else:
        return x['Banqueta en todas las vialidades']
        # Es seguro utilizar la misma funcion para las columnas
        # "Banqueta en todas las vialidades" como en la columna
        # "Banqueta en alguna vialidad"

P0705[tv]= P0705.apply(llenarestriccion, axis = 1)
P0705[av]= P0705.apply(llenarestriccion, axis = 1)
P0705.loc['12037']

nom_hojas['P0705']

# metadatos especificos para este parametro
metadatos['Descripcion del dataset'] = 'Manzanas por municipio segun disponibilidad de banqueta en sus vialidades'
metadatos['Notas'] = 'Se presentan los resultados de 3,993 localidades con información de entorno urbano. Se excluyen 35,839 manzanas que corresponden a edificios de conjuntos habitacionales.'

# Convertir metadatos a dataframe
P0705meta = pd.DataFrame.from_dict(metadatos, orient='index', dtype=None)
P0705meta.columns = ['Descripcion']
P0705meta = P0705meta.rename_axis('Metadato')
P0705meta

list(P0705)

# Descripciones de columnas
variables = {
    'Total de manzanas': 'Total de manzanas',
    'Banqueta en todas las vialidades': 'Manzanas que cuentan con banqueta en todas las vialidades',
    'Banqueta en alguna vialidad': 'Manzanas que cuentan con banqueta en alguna vialidad',
    'Banqueta en ninguna vialidad': 'Manzanas que cuentan con banqueta en ninguna vialidad',
    'No especificado': 'Manzanas en donde no se ha especificado si cuenta o no con banqueta'
}

P0705vars = pd.DataFrame.from_dict(variables, orient='index', dtype=None)
P0705vars.columns = ['Descripcion']
P0705vars = P0705vars.rename_axis('Mnemonico')
P0705vars

# Guardar el dataset
file = r'D:\PCCS\01_Dmine\Datasets\CLEU\P0705.xlsx'
writer = pd.ExcelWriter(file)
P0705.to_excel(writer, sheet_name = 'DATOS')
P0705meta.to_excel(writer, sheet_name = 'METADATOS')
P0705vars.to_excel(writer, sheet_name = 'VARIABLES')
writer.save()
print('---------------TERMINADO---------------')


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
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.
Can you write Python code for it?

# subset para pruebas
test = P0306.loc['15045']
test


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
Exportar Archivos
Can you write Python code for it?

P1006 = P1006['p13'].to_frame()

# 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'

meta

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()


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
Exportar archivos
Can you write Python code for it?

P1005 = P1005f['P6_3_2_1_3'].to_frame()
P1005.head(3)

# 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

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()


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
Los datos se encuentran en el archivo secc_i_tr_cngmd15_m6, en la columna P2_2
Can you write Python code for it?

# 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))

# 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)

P1001.head(1)

P1001 = P1001['p2_2'].to_frame()
P1001.head(1)


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
Metadatos para P0306
Can you write Python code for it?

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

list(P0306meta)

P0306.head()


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
P0306 - Programas de modernización catastral
Existencia de programas de modernización catastral en los municipios.
Can you write Python code for it?

# 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)

# 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

list(p0306dic.index)

queryvar('acc_modr')

print('** Descripciones de variables **\n'.upper())
for i in p0306dic.index:
    queryvar(i)
    print('\n')

# 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)


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
P0307: Disposiciones normativas sustantivas en materia de desarrollo urbano u ordenamiento territorial
Es necesario cambiar el encoding para leer los archivos de este parametro
Can you write Python code for it?

# 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

# También es necesario redefinir la función para hacer consultas a los...


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
P1003 - Número de municipios con disponibilidad de servicios relacionados con los RSU
¿Donde estan los datos?
La informacion de este parametro se encuentra dividida entre diferentes carpetas.
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
P1005 - Número de vehículos utilizados para la recolección de residuos sólidos urbanos
¿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)
Can you write Python code for it?

# 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)

P1005f.head(1)


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
Se reemplazarán numeros por descripciones en tip_inst:
Can you write Python code for it?

queryvar('tip_inst')

# Institucion involucrada
instit = {
    1:'Administración pública de la entidad federativa',
    2:'BANOBRAS',
    3:'SEDATU',
    4:'OTRA INSTITUCION'
}

P0306_01t['tip_inst'] = P0306_01t['tip_inst'].replace(instit)
P0306_01t.head()


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
Y se separará la columna 'inst_enc' en 2:
Can you write Python code for it?

queryvar('inst_enc')

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')

P0306_01t1.head()

P0306_01t2.head()


I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
¿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.
Can you write Python code for it?

# 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))

os.listdir(tablas[param])[0]

# 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)


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
EXPORTAR A EXCEL
Can you write Python code for it?

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()


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
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.
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
El contenido de los archivos en la carpeta "Conjunto de datos" es el siguiente:
Can you write Python code for it?

for file in P0307files.keys():
    print(file)
    queryvar(file.upper())
    print('\n')


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
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:
Can you write Python code for it?

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'
}

# Destino local
destino = r'D:\PCCS\00_RawData\01_CSV\cngmd\2015'

# 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))

# 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))

# 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')
       ...


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
Exportar Archivos
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
Exportar archivos
Can you write Python code for it?

meta

# 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

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()


# 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

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()


# 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

param

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()


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
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
Can you write Python code for it?

# Rutas de archivos
param = 'P1003'
rutasdatos = list(tablasP1003.values())
for ruta in rutasdatos:
    print(ruta)

# 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))

# 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)
'''

# 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)


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
La información para el parámetro P0307 se encuentra en el archivo M_REGULA.csv
Can you write Python code for it?

print('P0307 - {}\n'.format(descripciones['P0307']))
queryvar('m_regula'.upper())

# 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)

P0307.head()

P0307.columns


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
Los datos se encuentran en el archivo secc_i_tr_cngmd15_m6, en la columna P2_2
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
Metadatos para P0306
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
P0306 - Programas de modernización catastral
Existencia de programas de modernización catastral en los municipios.
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
P0307: Disposiciones normativas sustantivas en materia de desarrollo urbano u ordenamiento territorial
Es necesario cambiar el encoding para leer los archivos de este parametro
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
P1001 - Promedio diario de RSU recolectados
Can you write Python code for it?

# 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))

# 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

os.listdir(r'D:\PCCS\00_RawData\01_CSV\cngmd\2015\P1001\Rec_RSU_cngmd2015_csv\diccionario_de_datos')

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...


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
P1005 - Número de vehículos utilizados para la recolección de residuos sólidos urbanos
¿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)
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
Para corregirlo, primero hacemos dataframes separados para cada variable. Afortunadamente, la columna 'Estructu' sirve para agrupar estructuralmente el dataframe
Can you write Python code for it?

queryvar('estructu')

# ¿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')

# ¿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')

# ¿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')

# ¿Cuantas acciones se realizaron?
P0306_02b = P0306_02.apply(len).rename('n_acc_modr')
P0306_02b.head(10)

queryvar('inst_enc')

# ¿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()


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
¿Donde estan los datos?
Can you write Python code for it?

metadatos.loc['secc_i_tr_cngmd15_m6'][metadatos.loc['secc_i_tr_cngmd15_m6']['Nombre de la \ncolumna'] == 'P2_2']


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
¿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.
Can you write Python code for it?


I am working on the file "Datasets/CNGMD/2015.ipynb".
The first task is:
¿Dónde están los datos sobre desarrollo urbano y ordenamiento territorial?
Can you write Python code for it?


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
2 . Correr funcion sobre todos los archivos de excel
Una vez que se tienen definidos los tratamientos que el script dará a cada variación, se extraen los datos por medio de una función iterativa hacia un diccionario de Python.
Can you write Python code for it?

HojasDatos = {}
for estado, archivo in archivos.items():
    print('Procesando {}'.format(archivo))
    hojas = {}
    for hoja, columnas in dicthojas.items():
        print('---Procesando hoja {}'.format(hoja))
        dataset = cargahoja(estado, archivo, hoja, columnas, skiprows[hoja])
        if hoja not in HojasDatos.keys():
            HojasDatos[hoja] = {}
        HojasDatos[hoja][estado] = dataset


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
2 . Correr la función sobre cada hoja y extraer las notas
Can you write Python code for it?

listanotas = {}
for archivo, ruta in archivos.items():
    print('Procesando {} desde {}'.format(archivo, ruta))
    for hoja in skiprows.keys():                   # Los keys del diccionario 'skiprows' son una lista de las hojas a procesar
        if hoja not in listanotas.keys():
            listanotas[hoja] = {}
        listanotas[hoja][archivo] = getnotes(ruta, skiprows[hoja])


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
3 . Limpieza final de los Dataframe: Antes de habilitar los dataframes para ser utilizados en la construcción de indicadores, hace falta quitar algunas lineas de "basura" que contienen datos de totales por Municipio.
Can you write Python code for it?

for hoja in DSstandar.keys():
    temphoja = DSstandar[hoja]
    temphoja = temphoja[temphoja['Municipio'] != 'Total']
    DSstandar[hoja] = temphoja


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
3 . Limpieza final del Dataframe 'Pisos': El dataframe está casi listo para ser utilizado en la construcción de indicadores, únicamente hace falta quitar algunas lineas de "basura" que tienen los datos de totales por Municipio.
Can you write Python code for it?

PisosDF = PisosDF[PisosDF['Municipio'] != 'Total']

PisosDF.describe()


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
Al final del proceso se generaron 10 datasets estándar:
Can you write Python code for it?

for hoja in DSstandar.keys():
    print('**{}.xlsx**|{}'.format(hoja, df.loc[hoja][0]))


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
Cada archivo tiene la misma estructura y contiene los datos de vivienda de 2015 levantados en la encuesta intercensal. La primera hoja, 'Índice', incluye un listado de las hojas y datos que contiene cada libro. Este índice se tomará como referencia para la minería de datos:
Can you write Python code for it?

pd.options.display.max_colwidth = 150
df = pd.read_excel(archivos['01'],
              sheetname = 'Índice',
              skiprows = 6,
              usecols = ['Tabulado', 'Título'],
              dtype = {'Tabulado' : 'str'},
              ).set_index('Tabulado')
df


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
Con el diccionario de ligas ya es posible descargar los archivos en una carpeta local para poder procesarlos.
Can you write Python code for it?

# Descarga de archivos a carpeta local
destino = r'D:\PCCS\00_RawData\01_CSV\Intercensal2015\estatal\14. Vivienda'
archivos = {}   # Diccionario para guardar memoria de descarga
for k,v in links.items():
    archivo_local = destino + r'\{}.xls'.format(k)
    if os.path.isfile(archivo_local):
        print('Ya existe el archivo: {}'.format(archivo_local))
        archivos[k] = archivo_local
    else:
        print('Descargando {} ... ... ... ... ... '.format(archivo_local))
        urllib.request.urlretrieve(v, archivo_local) #
        archivos[k] = archivo_local
        print('se descargó {}'.format(archivo_local))


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
El dataset que se procesó al principio de este estudio (Correspondiente a la hoja 02), se agrega junto con los demás datasets al diccionario de datasets estándar.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
El diccionario resultante contiene los datos de cada hoja clasificados por estado. Sin embargo, la estructura de diccionarios aun requiere ser procesada para obtener dataframes estandar.
Can you write Python code for it?

# Procesado de diccionarios para obtener datasets estándar
DSstandar = {}
for hoja, estado in HojasDatos.items():
    print('Procesando hoja {}'.format(hoja))
    tempDS = pd.DataFrame()
    for cve_edo, datos in estado.items():
        tempDS = tempDS.append(datos)
        print('---Se agregó CVE_EDO {} a dataframe estandar'.format(cve_edo))
    DSstandar[hoja] = tempDS


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
Extraccion de notas específicas para cada hoja
Cada hoja en el dataset original contiene notas al final del bloque de datos que es conveniente tener en cuenta en el momento de la interpretacion de los datos. Las notas están específicadas para cada municipio con un número en superíndice, uno o dos asteriscos. Debido a que cada hoja contiene diferente información, es conveniente verificar la nomenclatura que tienen las notas para cada hoja. Si la nomenclatura llegara a ser diferente para una misma nota en diferentes estados de una misma hoja, sería necesario crear una nueva columna en los dataset estándar para especificar la nota que corresponde a cada caso.
Para verificar las notas de cada hoja se utilizará el siguiente proceso:
1. Crear una funcion para extraer las notas
2. Correr la función sobre cada hoja y extraer las notas
3. Verificar en qué hojas varía la nomenclatura de notas
1 . Funcion para extraer notas
Can you write Python code for it?

# Funcion para extraccion de notas de una hoja
# Espera los siguientes input:
# --- ruta: [str] Ruta al archivo de datos del dataset fuente
# --- skip: [str] El numero de renglones en la hoja que el script tiene que ignorar para encontrar
#           el renglon de encabezados.
def getnotes(ruta, skip):
    tempDF = pd.read_excel(ruta, sheetname=hoja, skiprows=skip)  # Carga el dataframe de manera temporal
    c1 = tempDF['Unnamed: 0'].dropna()  # Carga únicamente la columna 1, que contiene las notas, sin valores NaN
    c1.index = range(len(c1))           # Reindexa la serie para compensar los NaN eliminados en el comando anterior
    indice = c1[c1.str.contains('Nota')].index[0]   # Encuentra el renglon donde inician las notas
    rows = range(indice, len(c1))                   # Crea una lista de los renglones que contienen notas
    templist = c1.loc[rows].tolist()                # Crea una lista con las notas
    notas = []
    for i in templist:
        notas.append(i.replace('\xa0', ' '))        # Guarda cada nota y reemplaza caracteres especiales por espacios simples
    return notas


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
Gracias a este script podemos ver que la nomenclatura en todas las hojas es estándar, y puede agregarse como nota en los metadatos de todos los dataset estándar.
Guardado de datasets estándar
Los dataframes obtenidos a través de los procesos anteriores se guardan en libros de formato OpenXML (.xlsx) para facilitar su lectura tanto desde sistemas informáticos como por personas. Cada libro contiene 2 hojas:
1. Hoja de metadatos
2. Hoja de datos, con estimadores de las viviendas particulares habitadas y su distribución porcentual según:
HOJA | DESCRIPCION
--- | :---
02 | Material en pisos por municipio
08 | Combustible utilizado para cocinar por municipio
09 | Viviendas en las que sus ocupantes utilizan leña o carbón para cocinar y su distribución porcentual según disponibilidad de estufa o fogón con chimenea por municipio
19 | Forma de eliminación de residuos por municipio
16 | Disponibilidad de energia electrica por municipio
20 | Viviendas en las que sus ocupantes entregan los residuos al servicio público de recolección o los colocan en un contenedor y su distribución porcentual
21 | Condición de separación y reutilización de residuos por municipio y forma de reutilización de los residuos
23 | Disponibilidad de equipamiento por municipio y tipo de equipamiento
24 | Disponibilidad de agua entubada según disponibilidad y acceso
25 | Disponibilidad de agua entubada según fuente del abastecimiento
26 | Disponibilidad de drenaje y lugar de desalojo por municipio
Al ser datasets que provienen de una misma fuente, comparten varios campos de metadatos por lo que los campos en común se definen una sola vez y los campos particulares serán definidos a través de una función iterativa.
Can you write Python code for it?

# Creacion de metadatos comunes
metadatos = {
    'Nombre del Dataset': 'Encuesta Intercensal 2015 - Tabulados de Vivienda',
    'Descripcion del dataset': np.nan,
    'Disponibilidad Temporal': '2015',
    'Periodo de actualizacion': 'No Determinada',
    'Nivel de Desagregacion': 'Municipal',
    'Notas': 'Los límites de confianza se calculan al 90 por ciento.' \
        '\n1  Excluye las siguientes clases de vivienda: locales no construidos para habitación, viviendas móviles y refugios.' \
        '\n*  Municipio censado.' \
        '\n**  Municipio con muestra insuficiente.',
    'Fuente': 'INEGI (Microdatos)',
    'URL_Fuente': 'http://www.beta.inegi.org.mx/proyectos/enchogares/especiales/intercensal/',
    'Dataset base': np.nan,
}


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
La descarga de datos se realiza desde el sitio Beta de INEGI. Los datos de la Encuesta Intercensal 2015 se encuentran en http://www.beta.inegi.org.mx/proyectos/enchogares/especiales/intercensal/
Existen tres maneras de descargar la información:

Datos para la República Mexicana, con la ventaja de que es un solo archivo con variables procesadas y con la desventaja de que su nivel de desagregación es estatal.
Datos estatales, con la ventaja de que cuentan con desagregacion a nivel municipal con variables interpretadas y con la desventaja de que la información está fragmentada en muchos archivos pues hay un archivo por variable por estado.
Microdatos, con la ventaja de que contienen toda la información del Proyecto en pocos archivos y con la desventaja de que tienen que interpretarse antes de obtener valores útiles para la PCCS.

La manera más conveniente es descargar los datos estatales, pues la primera no entregaría datos relevantes para la construccion de indicadores de la PCCS y la segunda requeriría dedicar una gran cantidad de tiempo y esfuerzo para recrear la interpretacion realizada por INEGI.
Todos los indicadores que se utilizarán para la construccion de la PCCS se encuentran en la encuesta de Vivienda, por lo que únicamente se descargará el paquete de datos de esta encuesta
Can you write Python code for it?

# LIGAS PARA DESCARGA DE ARCHIVOS
# Las ligas para descarga tienen una raiz URL común que cambia
# dependiendo del indicador y estado que se busque descargar
url = r'http://www.beta.inegi.org.mx/contenidos/Proyectos/enchogares/especiales/intercensal/2015/tabulados/'
indicador = r'14_vivienda_'
raiz = url+indicador
links = {
    '01' : raiz+'ags.xls',
    '02' : raiz+'bc.xls',
    '03' : raiz+'bcs.xls',
    '04' : raiz+'cam.xls',
    '05' : raiz+'coah.xls',
    '06' : raiz+'col.xls',
    '07' : raiz+'chis.xls',
    '08' : raiz+'chih.xls',
    '09' : raiz+'cdmx.xls',
    '10' : raiz+'dgo.xls',
    '11' : raiz+'gto.xls',
    '12' : raiz+'gro.xls',
    '13' : raiz+'hgo.xls',
    '14' : raiz+'jal.xls',
    '15' : raiz+'mex.xls',
    '16' : raiz+'mich.xls',
    '17' : raiz+'mor.xls',
    '18' : raiz+'nay.xls',
    '19' : raiz+'nl.xls',
    '20' : raiz+'oax.xls',
    '21' : raiz+'pue.xls',
    '22' : raiz+'qro.xls',
    '23' : raiz+'qroo.xls',
    '24' : raiz+'slp.xls',
    '25' : raiz+'sin.xls',
    '26' : raiz+'son.xls',
    '27' : raiz+'tab.xls',
    '28' : raiz+'tamps.xlsz',
    '29' : raiz+'tlax.xls',
    '30' : raiz+'ver.xls',
    '31' : raiz+'yuc.xls',
    '32' : raiz+'zac.xls'
}


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
La función para la escritura de datasets estándar es la siguiente:
Can you write Python code for it?

# Script para escritura de datasets estándar.
# La funcion espera los siguientes valores:
# --- hoja: (str) numero de hoja
# --- dataset: (Pandas DataFrame) datos que lleva la hoja
# --- metadatos: (dict) metadatos comunes para todas las hojas
# --- desc_hoja: (str) descripcion del contenido de la hoja

def escribedataset(hoja, dataset, metadatos, desc_hoja):
    # Compilación de la información
    datasetbaseurl = r'https://github.com/INECC-PCCS/01_Dmine/tree/master/Datasets/EI2015'
    directoriolocal = r'D:\PCCS\01_Dmine\Datasets\EI2015'
    archivo = hoja + '.xlsx'
    tempmeta = metadatos
    tempmeta['Descripcion del dataset'] = desc_hoja
    tempmeta['Dataset base'] = '"' + archivo + '" disponible en \n' + datasetbaseurl
    tempmeta = pd.DataFrame.from_dict(tempmeta, orient='index')
    tempmeta.columns = ['Descripcion']
    tempmeta = tempmeta.rename_axis('Metadato')

    # Escritura de dataset estándar
    destino = directoriolocal + '\\' + archivo
    writer = pd.ExcelWriter(destino)
    tempmeta.to_excel(writer, sheet_name ='METADATOS')
    dataset.to_excel(writer, sheet_name = hoja)
    writer.save()
    print('Se guardó: "{}" en \n{}'.format(desc_hoja, destino))


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
Las ligas quedan almacenadas en un diccionario de python en el que key = 'Clave Geoestadística Estatal'; y value = 'liga para descarga'. Por ejemplo, '09' es la clave geoestadística para la Ciudad de México. Si al diccionario links le solicitamos el valor de la key '09', nos regresa la liga para descargar los indicadores de vivienda de la Ciudad de México, como se muestra a continuación:
Can you write Python code for it?


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
Los datos fueron guardados como diccionario de Python, es necesario convertirlos en un DataFrame unico antes de hacer la limpieza final.
Can you write Python code for it?

PisosDF = pd.DataFrame()
for k,v in DatosPiso.items():
    PisosDF = PisosDF.append(v)


I am working on the file "Datasets/EI2015/.ipynb_checkpoints/EI2015-checkpoint.ipynb".
The first task is:
Una vez definida la función para la escritura de datasets, se ejecuta de manera iterativa sobre los datos:
Can you write Python code for it?

for hoja, dataset in DSstandar.items():
    print('Procesando hoja '+hoja)
    escribedataset(hoja, dataset, metadatos, df.loc[hoja][0])


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
2 . Correr funcion sobre todos los archivos de excel
Una vez que se tienen definidos los tratamientos que el script dará a cada variación, se extraen los datos por medio de una función iterativa hacia un diccionario de Python.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
2 . Correr funcion sobre todos los archivos de excel para extraer datos de la hoja 02
Can you write Python code for it?

# correr funcion sobre todos los archivos
colnames = ['Entidad federativa',
            'Municipio',
            'Estimador',
            'Viviendas particulares habitadas',
            'Pisos_Tierra',
            'Pisos_Cemento o firme',
            'Pisos_Mosaico, madera u otro recubrimiento',
            'Pisos_No especificado']

DatosPiso = {}
for k,v in archivos.items():
    print('Procesando {}'.format(v))
    hoja = cargahoja(k, v, '02', colnames, 7)
    DatosPiso[k] = hoja


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
3 . Limpieza final de los Dataframe: Antes de habilitar los dataframes para ser utilizados en la construcción de indicadores, hace falta quitar algunas lineas de "basura" que contienen datos de totales por Municipio.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
Con el diccionario de ligas ya es posible descargar los archivos en una carpeta local para poder procesarlos.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
El dataset que se procesó al principio de este estudio (Correspondiente a la hoja 02), se agrega junto con los demás datasets al diccionario de datasets estándar.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
El diccionario resultante contiene los datos de cada hoja clasificados por estado. Sin embargo, la estructura de diccionarios aun requiere ser procesada para obtener dataframes estandar.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
Extraccion de notas específicas para cada hoja
Cada hoja en el dataset original contiene notas al final del bloque de datos que es conveniente tener en cuenta en el momento de la interpretacion de los datos. Las notas están específicadas para cada municipio con un número en superíndice, uno o dos asteriscos. Debido a que cada hoja contiene diferente información, es conveniente verificar la nomenclatura que tienen las notas para cada hoja. Si la nomenclatura llegara a ser diferente para una misma nota en diferentes estados de una misma hoja, sería necesario crear una nueva columna en los dataset estándar para especificar la nota que corresponde a cada caso.
Para verificar las notas de cada hoja se utilizará el siguiente proceso:
1. Crear una funcion para extraer las notas
2. Correr la función sobre cada hoja y extraer las notas
3. Verificar en qué hojas varía la nomenclatura de notas
1 . Funcion para extraer notas
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
La descarga de datos se realiza desde el sitio Beta de INEGI. Los datos de la Encuesta Intercensal 2015 se encuentran en http://www.beta.inegi.org.mx/proyectos/enchogares/especiales/intercensal/
Existen tres maneras de descargar la información:

Datos para la República Mexicana, con la ventaja de que es un solo archivo con variables procesadas y con la desventaja de que su nivel de desagregación es estatal.
Datos estatales, con la ventaja de que cuentan con desagregacion a nivel municipal con variables interpretadas y con la desventaja de que la información está fragmentada en muchos archivos pues hay un archivo por variable por estado.
Microdatos, con la ventaja de que contienen toda la información del Proyecto en pocos archivos y con la desventaja de que tienen que interpretarse antes de obtener valores útiles para la PCCS.

La manera más conveniente es descargar los datos estatales, pues la primera no entregaría datos relevantes para la construccion de indicadores de la PCCS y la segunda requeriría dedicar una gran cantidad de tiempo y esfuerzo para recrear la interpretacion realizada por INEGI.
Todos los indicadores que se utilizarán para la construccion de la PCCS se encuentran en la encuesta de Vivienda, por lo que únicamente se descargará el paquete de datos de esta encuesta
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
La función para la escritura de datasets estándar es la siguiente:
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
Las ligas quedan almacenadas en un diccionario de python en el que key = 'Clave Geoestadística Estatal'; y value = 'liga para descarga'. Por ejemplo, '09' es la clave geoestadística para la Ciudad de México. Si al diccionario links le solicitamos el valor de la key '09', nos regresa la liga para descargar los indicadores de vivienda de la Ciudad de México, como se muestra a continuación:
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
Los datos fueron guardados como diccionario de Python, es necesario convertirlos en un DataFrame unico antes de hacer la limpieza final.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
Una vez definida la función para la escritura de datasets, se ejecuta de manera iterativa sobre los datos:
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015-MOV_COTIDIANA.ipynb".
The first task is:
Una vez que se han extraido todas las notas de las hojas, se corre un script iterativo para verificar en cuáles notas varía la nomenclatura. Este script funciona de la siguiente manera:
1. Comienza con una lista vacía de notas
2. Revisa cada nota y la compara con la lista de notas.
3. Si la nota no existe en la lista, la agrega a la lista
Can you write Python code for it?

notasunicas = []                            # Inicia con una lista vacía
for hoja, dict in listanotas.items():       # Itera sobre el diccionario con todas las notas
    for estado, notas in dict.items():      # Itera sobre el diccionario de estados de cada hoja
        for nota in notas:                  # Itera sobre la lista de notas que tiene cada estado
            if nota not in notasunicas:        # Si la nota no existe en la lista:
                print('Estado: {} / Hoja {} / : Nota: {}'.format(estado, hoja, nota))   # Imprime la nota y donde se encontró
                notasunicas.append(nota)       # Agrega la nota al diccionario

for nota in notasunicas:
    print(nota)


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
--- 2.2 . Además de definir las columnas, es necesario definir cuántos renglones tiene que ignorar el script antes de encontrar los encabezados. Estos renglones se definen a continuación en un diccionario:
Can you write Python code for it?

skiprows = {
    '02' : 7,   # Tipo de piso
    '08' : 7,   # Combustible utilizado para cocinar
    '09' : 7,   # Utilizan leña o carbón para cocinar y distribucion porcentual segun disponibilidad de estufa o fogon
    '16' : 7,   # disponibilidad de energía eléctrica
    '19' : 7,   # Forma de eliminación de residuos
    '20' : 8,   # Viviendas que entregan sus residuos al servicio publico y distribucion porcentual por condición de separacion
    '21' : 7,   # Separación y reutilización de residuos
    '23' : 7,   # Disponibilidad y tipo de equipamiento
    '24' : 8,   # Disponibilidad de agua entubada según disponibilidad y acceso
    '25' : 7,   # Disponibilidad de agua entubada según fuente de abastecimiento
    '26' : 8,   # Disponibilidad de drenaje y lugar de desalojo
}


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
2 . Correr funcion sobre todos los archivos de excel
Una vez que se tienen definidos los tratamientos que el script dará a cada variación, se extraen los datos por medio de una función iterativa hacia un diccionario de Python.
Can you write Python code for it?

HojasDatos = {}
for estado, archivo in archivos.items():
    print('Procesando {}'.format(archivo))
    hojas = {}
    for hoja, columnas in dicthojas.items():
        print('---Procesando hoja {}'.format(hoja))
        dataset = cargahoja(estado, archivo, hoja, columnas, skiprows[hoja])
        if hoja not in HojasDatos.keys():
            HojasDatos[hoja] = {}
        HojasDatos[hoja][estado] = dataset


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
2 . Correr funcion sobre todos los archivos de excel para extraer datos de la hoja 02
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
2 . Correr la función sobre cada hoja y extraer las notas
Can you write Python code for it?

listanotas = {}
for archivo, ruta in archivos.items():
    print('Procesando {} desde {}'.format(archivo, ruta))
    for hoja in skiprows.keys():                   # Los keys del diccionario 'skiprows' son una lista de las hojas a procesar
        if hoja not in listanotas.keys():
            listanotas[hoja] = {}
        listanotas[hoja][archivo] = getnotes(ruta, skiprows[hoja])


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
Al final del proceso se generaron 10 datasets estándar:
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
Con el diccionario de ligas ya es posible descargar los archivos en una carpeta local para poder procesarlos.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
El dataset que se procesó al principio de este estudio (Correspondiente a la hoja 02), se agrega junto con los demás datasets al diccionario de datasets estándar.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
Gracias a este script podemos ver que la nomenclatura en todas las hojas es estándar, y puede agregarse como nota en los metadatos de todos los dataset estándar.
Guardado de datasets estándar
Los dataframes obtenidos a través de los procesos anteriores se guardan en libros de formato OpenXML (.xlsx) para facilitar su lectura tanto desde sistemas informáticos como por personas. Cada libro contiene 2 hojas:
1. Hoja de metadatos
2. Hoja de datos, con estimadores de las viviendas particulares habitadas y su distribución porcentual según:
HOJA | DESCRIPCION
--- | :---
02 | Material en pisos por municipio
08 | Combustible utilizado para cocinar por municipio
09 | Viviendas en las que sus ocupantes utilizan leña o carbón para cocinar y su distribución porcentual según disponibilidad de estufa o fogón con chimenea por municipio
19 | Forma de eliminación de residuos por municipio
16 | Disponibilidad de energia electrica por municipio
20 | Viviendas en las que sus ocupantes entregan los residuos al servicio público de recolección o los colocan en un contenedor y su distribución porcentual
21 | Condición de separación y reutilización de residuos por municipio y forma de reutilización de los residuos
23 | Disponibilidad de equipamiento por municipio y tipo de equipamiento
24 | Disponibilidad de agua entubada según disponibilidad y acceso
25 | Disponibilidad de agua entubada según fuente del abastecimiento
26 | Disponibilidad de drenaje y lugar de desalojo por municipio
Al ser datasets que provienen de una misma fuente, comparten varios campos de metadatos por lo que los campos en común se definen una sola vez y los campos particulares serán definidos a través de una función iterativa.
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
La columna 'Tabulado' contiene el nombre de la hoja, mientras que 'Titulo' describe los datos de la misma. Para la construcción de parámetros de la PCCS se utilizarán las siguientes hojas:
HOJA | PARAMETRO | DESCRIPCION
----|----------|:-----------
24/25|P0101|Porcentaje de viviendas con agua entubada
26|P0102|Porcentaje de viviendas que cuentan con descarga a una red de alcantarillado.
26|P0403|Viviendas con drenaje
02|P0404|Viviendas con piso de tierra
23|P0603|Viviendas particulares habitadas con calentador de agua (boiler)
08|P0611|Viviendas que utilizan leña o carbón para cocinar
09|P0612|Viviendas que utilizan leña o carbón para cocinar, que disponen de estufa o fogón con chimenea
08|P0613|Viviendas habitadas que utilizan gas para cocinar
19|P1004|Forma de eliminación de residuos
21|P1010|Porcentaje de viviendas de reutilización de residuos
20|P1011|Porcentaje de viviendas que separan sus residuos en orgánicos e inorgánicos
16|P0601|Viviendas particulares habitadas con electricidad
Los siguientes parámetros se pueden obtener desde otras fuentes, pero se incluirán en esta minería por encontrarse también disponibles para 2015 en este dataset.
HOJA  | PARAMETRO  | DESCRIPCION
----  | ---------- | :-----------
23 | P0604 | Viviendas particulares habitadas con calentador solar
23 | P0605 | Viviendas particulares habitadas con panel fotovoltaico
4 . Estandarización de Dataset
A partir de las hojas identificadas y asociadas con parámetros, es necesario crear un dataframe estándar que sea de fácil lectura para sistemas informáticos y permita la creación de parámetros para la PCCS. Cada hoja de las descritas anteriormente tiene un acomodo distinto de las variables y requiere un proceso diferente, aunque la secuencia general para todas las hojas será la siguiente:
1. Crear una función que sirva para extraer los datos de una hoja "tipo"
2. Correr la función sobre cada archivo de excel y juntar los datos recopilados en un solo DataFrame
3. Limpieza final al dataframe y guardado

HOJA 02: Estimadores de las...
Can you write Python code for it?

# Funcion para extraer datos de hoja tipo
# La funcion espera los siguientes valores:
# --- entidad: [str] clave geoestadistica de entidad de 2 digitos
# --- ruta: [str] ruta al archivo de excel que contiene la información
# --- hoja: [str] numero de hoja dentro del archivo de excel que se pretende procesar
# --- colnames: [list] nombres para las columnas de datos (Las columnas en los archivos de este
#               dataset requieren ser nombradas manualmente por la configuración de los
#               encabezados en los archivo fuente)
# --- skip: [int] El numero de renglones en la hoja que el script tiene que ignorar para encontrar
#           el renglon de encabezados.

def cargahoja(entidad, ruta, hoja, colnames, skip):
    # Abre el archivo de excel
    raw_data = pd.read_excel(ruta,
                              sheetname=hoja,
                              skiprows=skip).dropna()
    # renombra las columnas
    raw_data.columns = colnames

    # Obten Unicamente las filas con valores estimativos
    raw_data = raw_data[raw_data['Estimador'] == 'Valor']

    # Crea la columna CVE_MUN
    raw_data['CVE_ENT'] = entidad
    raw_data['ID_MUN'] = raw_data.Municipio.str.split(' ', n=1).apply(lambda x: x[0])
    raw_data['CVE_MUN'] = raw_data['CVE_ENT'].map(str) + raw_data['ID_MUN']

    # Borra columnas con informacion irrelevante o duplicada
    del (raw_data['CVE_ENT'])
    del (raw_data['ID_MUN'])
    del (raw_data['Entidad federativa'])
    del (raw_data['Estimador'])
    raw_data.set_index('CVE_MUN', inplace=True)
    return raw_data


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
La descarga de datos se realiza desde el sitio Beta de INEGI. Los datos de la Encuesta Intercensal 2015 se encuentran en http://www.beta.inegi.org.mx/proyectos/enchogares/especiales/intercensal/
Existen tres maneras de descargar la información:

Datos para la República Mexicana, con la ventaja de que es un solo archivo con variables procesadas y con la desventaja de que su nivel de desagregación es estatal.
Datos estatales, con la ventaja de que cuentan con desagregacion a nivel municipal con variables interpretadas y con la desventaja de que la información está fragmentada en muchos archivos pues hay un archivo por variable por estado.
Microdatos, con la ventaja de que contienen toda la información del Proyecto en pocos archivos y con la desventaja de que tienen que interpretarse antes de obtener valores útiles para la PCCS.

La manera más conveniente es descargar los datos estatales, pues la primera no entregaría datos relevantes para la construccion de indicadores de la PCCS y la segunda requeriría dedicar una gran cantidad de tiempo y esfuerzo para recrear la interpretacion realizada por INEGI.
Todos los indicadores que se utilizarán para la construccion de la PCCS se encuentran en la encuesta de Vivienda, por lo que únicamente se descargará el paquete de datos de esta encuesta
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
La función para la escritura de datasets estándar es la siguiente:
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
Las ligas quedan almacenadas en un diccionario de python en el que key = 'Clave Geoestadística Estatal'; y value = 'liga para descarga'. Por ejemplo, '09' es la clave geoestadística para la Ciudad de México. Si al diccionario links le solicitamos el valor de la key '09', nos regresa la liga para descargar los indicadores de vivienda de la Ciudad de México, como se muestra a continuación:
Can you write Python code for it?


I am working on the file "Datasets/EI2015/EI2015.ipynb".
The first task is:
Una vez que se han extraido todas las notas de las hojas, se corre un script iterativo para verificar en cuáles notas varía la nomenclatura. Este script funciona de la siguiente manera:
1. Comienza con una lista vacía de notas
2. Revisa cada nota y la compara con la lista de notas.
3. Si la nota no existe en la lista, la agrega a la lista
Can you write Python code for it?


I am working on the file "Datasets/INEGI/Defunciones/Mortalidad.ipynb".
The first task is:
Asignación de causas de defuncion
El dataset tiene identificadas 127 causas de defunción (Por homicidio, pues ya se identificaron únicamente los casos donde el PRESUNTO es homicidio)
Can you write Python code for it?

len(dataset['CAUSA_DEF'].unique())

dataset['CAUSA_DEF'].unique()

# Se utilizará el dataset contenido en el archivo CATMINDE.dbf (Posición 3)
path_to_desc = r'{}\{}'.format(target,files[3])
descripciones = Dbf5(path_to_desc, codec='mbcs').to_dataframe()
descripciones.head()

#Asignacion de columna con descripciones de causa de defunción
dataframe = dataset.merge(descripciones, left_on='CAUSA_DEF', right_on = 'CLAVE')
dataframe.head()


I am working on the file "Datasets/INEGI/Defunciones/Mortalidad.ipynb".
The first task is:
Creación del dataset estándar y exportación a Excel
Can you write Python code for it?

# Concatenar claves estatales y municipales para obtener CVE_MUN
# Municipio donde se registró el deceso
dataframe['CVE_MUN_REGIS'] = dataframe.ENT_REGIS.map(str)+dataframe.MUN_REGIS
# Municipio donde ocurrió el deceso
dataframe['CVE_MUN_OCURR'] = dataframe.ENT_OCURR.map(str)+dataframe.MUN_OCURR
# Municipio donde ocurrió la lesión que provocó el deceso
dataframe['CVE_MUN_OCULES'] = dataframe.ENT_OCULES.map(str)+dataframe.MUN_OCULES

dataframe.head()

# Eliminar columnas redundantes
del(dataframe['ENT_REGIS'])
del(dataframe['MUN_REGIS'])
del(dataframe['ENT_OCURR'])
del(dataframe['MUN_OCURR'])
del(dataframe['ENT_OCULES'])
del(dataframe['MUN_OCULES'])
del(dataframe['CLAVE'])

# Renombrar nombre de la causa de defuncion
dataframe.rename(columns={'NOMBRE' : 'NOMBRE_CAUSA_DEF'}, inplace = True)

# Se asigna el municipio de ocurrencia como indice de la tabla
dataframe.set_index('CVE_MUN_OCURR', inplace=True)
dataframe.head()

#Reordenar Columnas
list(dataframe)

# Metadatos estándar
metadatos = {
    'Nombre del Dataset': 'INEGI - Registros administrativos de mortalidad al año 2016',
    'Descripcion del dataset': 'Originalmente, el formato de captación para las defunciones generales era una boleta colectiva, en la cual las fuentes informantes reportaban las defunciones que registraban durante el mes. A partir del año 1987, el formato principal es el certificado o acta de defunción y el cuaderno para defunciones accidentales y violentas del Ministerio Público.',
    'Disponibilidad Temporal': '1923 a 2016',
    'Periodo de actualizacion': 'Anual',
    'Nivel de Desagregacion': 'Caso',
    'Notas': None,
    'Fuente': 'INEGI',
    'URL_Fuente': 'http://www.beta.inegi.org.mx/proyectos/registros/vitales/mortalidad/',
    'Dataset base': None,
}

metadatos = pd.DataFrame.from_dict(metadatos, orient='index', dtype=None)
metadatos.columns = ['Descripcion']
metadatos = metadatos.rename_axis('Metadato')
metadatos

variables = {
    'ENT_REGIS': 'Entidad de registro.',
    'MUN_REGIS': 'Municipio de registro.',
   ...


I am working on the file "Datasets/INEGI/Defunciones/Mortalidad.ipynb".
The first task is:
Exploracion del Dataset
Can you write Python code for it?

years = sorted(dataset['ANIO_OCUR'].unique())

yearsize = {}
for year in years:
    yearsize[year] = len(dataset[dataset['ANIO_OCUR'] == year])

len(dataset)

# El set1 tiene la suma de las defunciones registradas entre 1923 y 1990
set1 = 0
for year in years:
    # print(year)
    if year > 1990:
        break
    set1 += yearsize[year]
set1

# El set 2 tiene la suma de las defunciones registradas entre 1991 y 2000
set2 = 0
for year in years:
    if year < 1991:
        continue
    if year > 2000:
        break
    # print(year)
    set2 += yearsize[year]
set2

yearsize2 = {'1923-1990':set1,
            '1991-2000':set2}
for year in years:
    if year < 2001:
        continue
    # print(year)
    yearsize2[str(year)] = yearsize[year]

# Numero de defunciones registradas en cada periodo
for k,v in yearsize2.items():
    print('{} : {}'.format(k, v))


I am working on the file "Datasets/INEGI/Defunciones/Mortalidad.ipynb".
The first task is:
Subconjunto de trabajo
Can you write Python code for it?

#Subconjunto de años para el estudio
dataset = dataset.loc[dataset['ANIO_OCUR'].isin(range(2010, 2017))]


I am working on the file "Datasets/INERE/.ipynb_checkpoints/INERE-checkpoint.ipynb".
The first task is:
Dataset Potencial de Energia Renovable
Can you write Python code for it?

# Lectura del dataset de potencial de energia renovable después de ser re-guardado en excel
directorio = r'D:\PCCS\00_RawData\01_CSV\INERE\\'
archivo = directorio+'Potencial Energia Renovable.xlsx'
raw_potencial = pd.read_excel(archivo, dtype={'CVE_MUN': 'str'}).dropna()
raw_potencial.head()

# Eliminacion de columnas redundantes y temporales
potencial_proc = raw_potencial
del(potencial_proc['ESTADO'])
del(potencial_proc['MUNICIPIO'])
del(potencial_proc['3EDO3'])
del(potencial_proc['3MUN3'])
del(potencial_proc['GEO_EDO'])
del(potencial_proc['GEOEDO_3MUN'])
del(potencial_proc['GEO_MUN_Nom'])

potencial_proc.head()

potencial_proc['SUBCLASIFICACIÓN'].unique()

# Nombre Unico de Coloumnas
potencial_proc = potencial_proc.rename(columns = {
    'PROYECTO' : 'NOMBRE PROYECTO',
    'CLASIFICACIÓN': 'PROBABILIDAD',
    'TIPO': 'TIPO FUENTE ENER',
    'SUBCLASIFICACIÓN': 'NOTAS'})

# Asignacion de CVE_MUN como indice
potencial_proc.set_index('CVE_MUN', inplace=True)
potencial_proc.head()

# Metadatos estándar
metadatos = {
    'Nombre del Dataset': 'Inventario Potencial de Energias Renovables',
    'Descripcion del dataset': '',
    'Disponibilidad Temporal': '2014',
    'Periodo de actualizacion': 'No Determinada',
    'Nivel de Desagregacion': 'Localidad, Municipal, Estatal, Nacional',
    'Notas': None,
    'Fuente': 'SENER',
    'URL_Fuente': 'https://dgel.energia.gob.mx/inere/',
    'Dataset base': None,
}

# Convertir metadatos a dataframe
potenmeta = pd.DataFrame.from_dict(metadatos, orient='index', dtype=None)
potenmeta.columns = ['Descripcion']
potenmeta = potenmeta.rename_axis('Metadato')
potenmeta

list(potencial_proc)

potencial_proc['FUENTE'].unique()

# Descripciones de columnas
variables = {
    'NOMBRE PROYECTO': 'Nombre del proyecto de produccion de energia',
    'TIPO FUENTE ENER': 'Tipo de fuente de donde se obtiene la energía',
    'PROBABILIDAD': 'Certeza respecto al proyecto deproduccion de energía',
    'NOTAS': 'Notas',
    'CAPACIDAD INSTALABLE (MW)': 'Capacidad Instalable en Megawatts',
  ...


I am working on the file "Datasets/INERE/.ipynb_checkpoints/INERE-checkpoint.ipynb".
The first task is:
Descarga de datos
Los datos se encuentran en la plataforma del Inventario Nacional de Energias Renovables (INERE) ubicada en https://dgel.energia.gob.mx/inere/, y tienen que descargarse manualmente porque su página está elaborada en Flash y no permite la descarga sistematizada de datos. A veces ni funciona por sí misma, manda errores al azar.
Se descargaron dos datasets, uno que contiene el Inventario Actual y otro con el Inventario Potencial de energías renovables a nivel nacional.
Como la base de datos no incluye claves geoestadísticas, estas tienen que asignarse manualmente. A continuacion se muestra el encabezado del archivo que se procesó a mano.
Can you write Python code for it?

# Lectura del dataset de energia renovable actual como descargado
directorio = r'D:\PCCS\00_RawData\01_CSV\INERE\\'
archivo = directorio+'Actual Energia Renovable.xls'
raw_actual = pd.read_excel(archivo).dropna()
raw_actual.head()
# El dataset envía error cuando se intenta leer directamente


I am working on the file "Datasets/INERE/.ipynb_checkpoints/INERE-checkpoint.ipynb".
The first task is:
Para guardar el dataset y utilizarlo en la construcción del parámetro, se eliminarán algunas columnas.
Can you write Python code for it?

list(actual_proc)

# Eliminacion de columnas redundantes y temporales
del(actual_proc['ESTADO'])
del(actual_proc['MUNICIPIO'])
del(actual_proc['3EDO3'])
del(actual_proc['3MUN3'])
del(actual_proc['GEO_EDO'])
del(actual_proc['GEOEDO_3MUN'])
del(actual_proc['GEO_MUN_Nom'])

# Nombre Unico de Coloumnas
actual_proc = actual_proc.rename(columns = {
    'NOMBRE' : 'NOMBRE PROYECTO',
    'PRODUCTOR': 'SECTOR PRODUCCION',
    'TIPO': 'TIPO FUENTE ENER',
    'UNIDADES': 'UNIDADES GEN'})

# Asignacion de CVE_MUN como indice
actual_proc.set_index('CVE_MUN', inplace=True)
actual_proc.head()

# Metadatos estándar
metadatos = {
    'Nombre del Dataset': 'Inventario Actual de Energias Renovables',
    'Descripcion del dataset': '',
    'Disponibilidad Temporal': '2014',
    'Periodo de actualizacion': 'No Determinada',
    'Nivel de Desagregacion': 'Localidad, Municipal, Estatal, Nacional',
    'Notas': None,
    'Fuente': 'SENER',
    'URL_Fuente': 'https://dgel.energia.gob.mx/inere/',
    'Dataset base': None,
}

# Convertir metadatos a dataframe
actualmeta = pd.DataFrame.from_dict(metadatos, orient='index', dtype=None)
actualmeta.columns = ['Descripcion']
actualmeta = actualmeta.rename_axis('Metadato')
actualmeta

list(actual_proc)

# Descripciones de columnas
variables = {
    'NOMBRE PROYECTO': 'Nombre del proyecto de produccion de energia',
    'SECTOR PRODUCCION': 'Sector al que pertenece el proyecto de produccion de energia',
    'TIPO FUENTE ENER': 'Tipo de fuente de donde se obtiene la energía',
    'UNIDADES GEN': 'Numero de generadores instalados por proyecto',
    'CAPACIDAD INSTALADA (MW)': 'Capacidad Instalada en Megawatts',
    'GENERACIÓN (GWh/a) ' : 'Generación de Gigawatts/hora al año'
}

# Convertir descripciones a dataframe
actualvars = pd.DataFrame.from_dict(variables, orient='index', dtype=None)
actualvars.columns = ['Descripcion']
actualvars = actualvars.rename_axis('Mnemonico')
actualvars

# Guardar dataset limpio para creacion de parametro.
file =...


I am working on the file "Datasets/INERE/.ipynb_checkpoints/INERE-checkpoint.ipynb".
The first task is:
Se asignó CVE_MUN manualmente a la mayoría de los registros. No fue posible encontrar una clave geoestadística para las siguientes combinaciones de estado/municipio
ESTADO |MUNICIPIO
-------|:----------
Veracruz|Jiotepec
Chiapas|Atizapan
Oaxaca|Motzorongo
Guerrero|La Venta
Jalisco|Santa Rosa
Para los siguientes registros, la CVE_MUN fue intuida desde el nombre de la población o el nombre del proyecto:
ESTADO |MUNICIPIO|CVE_MUN|PROYECTO
-------|:----------|-------|------
Puebla|Atencingo|21051|Ingenio de Atencingo
Puebla|Tatlahuquitepec|21186|Mazatepec
A continuación se presenta el encabezado del dataset procesado manualmente, incluyendo columnas que se utilizaron como auxiliares para la identificación de municipios
Can you write Python code for it?

# Lectura del dataset de energia renovable actual procesado manualmente
directorio = r'D:\PCCS\00_RawData\01_CSV\INERE\\'
archivo = directorio+'Actual CVE_GEO.xlsx'
actual_proc = pd.read_excel(archivo, dtype={'CVE_MUN': 'str'}).dropna()
actual_proc.head()


I am working on the file "Datasets/INERE/INERE.ipynb".
The first task is:
Dataset Potencial de Energia Renovable
Can you write Python code for it?

# Lectura del dataset de potencial de energia renovable después de ser re-guardado en excel
directorio = r'D:\PCCS\00_RawData\01_CSV\INERE\\'
archivo = directorio+'Potencial Energia Renovable.xlsx'
raw_potencial = pd.read_excel(archivo, dtype={'CVE_MUN': 'str'}).dropna()
raw_potencial.head()

# Eliminacion de columnas redundantes y temporales
potencial_proc = raw_potencial
del(potencial_proc['ESTADO'])
del(potencial_proc['MUNICIPIO'])
del(potencial_proc['3EDO3'])
del(potencial_proc['3MUN3'])
del(potencial_proc['GEO_EDO'])
del(potencial_proc['GEOEDO_3MUN'])
del(potencial_proc['GEO_MUN_Nom'])

potencial_proc.head()

potencial_proc['SUBCLASIFICACIÓN'].unique()

# Nombre Unico de Coloumnas
potencial_proc = potencial_proc.rename(columns = {
    'PROYECTO' : 'NOMBRE PROYECTO',
    'CLASIFICACIÓN': 'PROBABILIDAD',
    'TIPO': 'TIPO FUENTE ENER',
    'SUBCLASIFICACIÓN': 'NOTAS'})

# Asignacion de CVE_MUN como indice
potencial_proc.set_index('CVE_MUN', inplace=True)
potencial_proc.head()

# Metadatos estándar
metadatos = {
    'Nombre del Dataset': 'Inventario Potencial de Energias Renovables',
    'Descripcion del dataset': 'listado de Proyectos con potencial para generar energía a partir de fuentes renovables',
    'Disponibilidad Temporal': '2014',
    'Periodo de actualizacion': 'No Determinada',
    'Nivel de Desagregacion': 'Localidad, Municipal, Estatal, Nacional',
    'Notas': None,
    'Fuente': 'SENER',
    'URL_Fuente': 'https://dgel.energia.gob.mx/inere/',
    'Dataset base': None,
}

# Convertir metadatos a dataframe
potenmeta = pd.DataFrame.from_dict(metadatos, orient='index', dtype=None)
potenmeta.columns = ['Descripcion']
potenmeta = potenmeta.rename_axis('Metadato')
potenmeta

list(potencial_proc)

potencial_proc['FUENTE'].unique()

# Descripciones de columnas
variables = {
    'NOMBRE PROYECTO': 'Nombre del proyecto de produccion de energia',
    'TIPO FUENTE ENER': 'Tipo de fuente de donde se obtiene la energía',
    'PROBABILIDAD': 'Certeza respecto al proyecto deproduccion de energía',
   ...


I am working on the file "Datasets/INERE/INERE.ipynb".
The first task is:
Descarga de datos
Los datos se encuentran en la plataforma del Inventario Nacional de Energias Renovables (INERE) ubicada en https://dgel.energia.gob.mx/inere/, y tienen que descargarse manualmente porque su página está elaborada en Flash y no permite la descarga sistematizada de datos. A veces ni funciona por sí misma, manda errores al azar.
Se descargaron dos datasets, uno que contiene el Inventario Actual y otro con el Inventario Potencial de energías renovables a nivel nacional.
Como la base de datos no incluye claves geoestadísticas, estas tienen que asignarse manualmente. A continuacion se muestra el encabezado del archivo que se procesó a mano.
Can you write Python code for it?


I am working on the file "Datasets/INERE/INERE.ipynb".
The first task is:
Se asignó CVE_MUN manualmente a la mayoría de los registros. No fue posible encontrar una clave geoestadística para las siguientes combinaciones de estado/municipio
ESTADO |MUNICIPIO
-------|:----------
Veracruz|Jiotepec
Chiapas|Atizapan
Oaxaca|Motzorongo
Guerrero|La Venta
Jalisco|Santa Rosa
Para los siguientes registros, la CVE_MUN fue intuida desde el nombre de la población o el nombre del proyecto:
ESTADO |MUNICIPIO|CVE_MUN|PROYECTO
-------|:----------|-------|------
Puebla|Atencingo|21051|Ingenio de Atencingo
Puebla|Tatlahuquitepec|21186|Mazatepec
A continuación se presenta el encabezado del dataset procesado manualmente, incluyendo columnas que se utilizaron como auxiliares para la identificación de municipios
Can you write Python code for it?


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
Algunos edificios, marcados con los codigos postales 00000 y 12345 (Intuyo que por desidia del capturista) se tendrán que asignar individualmente
Can you write Python code for it?

sinmun.loc[sinmun['CP'].isin(['00000', '12345'])]

# Diccionario con edificios que se asignaran individualmente
# Para este diccionario key = Nombre del edificio, value =  CVE_MUN que se asignará a este edificio
buildings = {
    'Grainger Mexico HQ': '19039',
    'La Concha Pearl': '03003',
    #'Schneider Electric at COK': '66629',   # Este edificio esta repetido, por lo que no se le asignará nada y se eliminará al final
    'Bank of America-Reforma 115 5th floor': '09016',
    'Vesta Corporate Headquarters': '09016',
    'Air Traffic Control Tower': '15101',   # Estoy considerando que esta es la Torre de Control del NAICM
    'Passenger Terminal Building': '15101',    # El edificio del NAICM
    'Area Control Center': '15101',    # Infraestructura del NAICM
    'Corporativo TRIO': '09004',
    'Casa GF': '19019',
    'Eurocenter 2': '09004',
    'ROUZ TOWER': '09014',
    'Periferico Sur Parque Industrial': '14098'
}

# Hay un edificio duplicado. El duplicado se eliminará mas adelante
datasetfinal.loc['Schneider Electric at COK'][mira]

# Reemplazar valores individuales en el dataset.
for k, v in buildings.items():
    building = datasetfinal.loc[k].name
    CVEMUN_prev = datasetfinal.loc[k]['CVE_MUN']
    datasetfinal.at[k, 'CVE_MUN'] = v
    print('Edificio:{} - la CVE_MUN {} se reemplazó por {}'.format(building, CVEMUN_prev, datasetfinal.at[k, 'CVE_MUN']))


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
El archivo tal como se descarga, a pesar de ser tabulados de excel, envia un mensaje de error cuando se intenta abrir directamente como se descargó. Por lo tanto, antes de procesarlo es necesario abrirlo en excel y guardarlo con formato .xlsx
Can you write Python code for it?

path = r'D:\PCCS\00_RawData\01_CSV\LEED\leed_projects.xlsx'
raw_data = pd.read_excel(path)
raw_data.index.name = 'Building'
raw_data.head()

# Eliminar columnas que no pertenecen a Mexico

print('La tabla tiene {} registros'.format(len(raw_data)))
x = 'United States [us]'
raw_data = raw_data[raw_data['Country'] != x]
print('Quitando los registros donde el país es "{}", la tabla queda con {} registros'.format(x, len(raw_data)))
x = 'Colombia'
raw_data = raw_data[raw_data['Country'] != x]
print('Quitando los registros donde el país es "{}", la tabla queda con {} registros'.format(x, len(raw_data)))
x = 'United States'
raw_data = raw_data[raw_data['Country'] != x]
print('Quitando los registros donde el país es "{}", la tabla queda con {} registros'.format(x, len(raw_data)))

raw_data.head()


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
El primero por estar repetido y el resto por que no están en los Estados Unidos Mexicanos.
Can you write Python code for it?

datasetfinal = datasetfinal.dropna(subset=['CVE_MUN'])
datasetfinal.head(3)


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
El siguiente diccionario incluye códigos postales que requieren ser corregidos
Can you write Python code for it?


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
En el siguiente diccionario recopila las CVE_MUN que se asignarán a los códigos postales que requieren asignacion individual. Los códigos cuyo valor es None se asignarán mas adelante
Can you write Python code for it?


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
La base de datos es un listado de edificios que incluye para cada edificio:
- El nombre del edificio
- Una URL de referencia
- La fecha de la certificacion del edificio
- La ciudad, estado y país en el que se ubica el edificio
- El sistema de calificación bajo el ecual se certificó el edificio
- La versión de la certificación
- El nivel alcanzado por el edificio con la certificación.
Debido a que las columnas de Ciudad, estado y país no están realizadas bajo ningun estándar, es necesario asignar a cada renglón las claves geoestadísticas municipales de 5 dígitos correspondientes al municipio en el que se ubica el edificio.
Esto se hará manualmente pues cada renglón tiene que ser interpretado individualmente.
Durante la revision me di cuenta que si bien la tabla no tiene una clave para identificar cada ciudad y municipio, la liga de cada edificio nos lleva a una ficha del municipio que usualmente sí contiene un código postal; y desde el código postal es posible obtener el municipio y el estado.
A continuacion se hace la revision de una pagina para conocer su estructura y hacer un webscrapping desde esta estructura, esperando que sea igual en todas las fichas:
Can you write Python code for it?

# Descarga el HTML de la pagina
page = requests.get('https://www.usgbc.org/projects/reforma-180')
tree = html.fromstring(page.content)

# Obten variables desde la estructura
street = tree.xpath('//span[@itemprop="streetAddress"]/text()')
locality = tree.xpath('//span[@itemprop="addressLocality"]/text()')
postalcode = tree.xpath('//span[@itemprop="postalCode"]/text()')
country = tree.xpath('//span[@itemprop="addressCountry"]/text()')

''.join(street).replace('\n', '')

# A ver, que datos sacaste?
print('len({}), type({}) - {}'.format(len(street), type(street), street))
print('len({}), type({}) - {}'.format(len(locality), type(locality), locality))
print('len({}), type({}) - {}'.format(len(postalcode), type(postalcode), postalcode))
print('len({}), type({}) - {}'.format(len(country), type(country), country))


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
Los edificios que requieren correccion de codigos postales son los siguientes:
Can you write Python code for it?

datasetfinal[datasetfinal['CP'].isin(list(deberiaser.keys()))][mira]

# Corregir codigos postales erróneos
datasetfinal['CP'] = datasetfinal['CP'].map(deberiaser).fillna(datasetfinal['CP'])
datasetfinal[mira].head()

# Renombrar columnas para crear variables únicas
columns={
    'address':'direccion',
    'Path': 'URL',
    'Certification date': 'usgbc_fecha_cert',
    'Rating system':'usgbc_sis_val',
    'Version': 'usgbc_ver_sisv',
    'Certification level': 'usgbc_nv_cert',
}
datasetfinal = datasetfinal.rename(columns=columns)
datasetfinal.head(2)

# Descripciones de columnas
variables = {
    'direccion': 'Ubicacion (Calle y numero)',
    'CVE_MUN': 'Clave geoestadística de 5 digitos a nivel municipal, de acuerdo con el Catálogo Único de Claves de Áreas Geoestadísticas Estatales, Municipales y Localidades de INEGI',
    'usgbc_fecha_cert': 'Fecha de certificacion como edificio LEED por el United States Green Building Council',
    'usgbc_sis_val': 'Sistema de valoracion aplicado por el United States Green Building Council al edificio',
    'usgbc_ver_sisv': 'Version del Sistema de valoracion aplicado por el United States Green Building Council al edificio',
    'usgbc_nv_cert': 'Nivel de certificacion como edificio LEED alcanzado por el edificio',
    'CP': 'Codigo Postal',
    'URL': 'Uniform Resource Locator, referencia a recurso en línea'
}

# Convertir descripciones a dataframe
variables = pd.DataFrame.from_dict(variables, orient='index', dtype=None)
variables.columns = ['Descripcion']
variables = variables.rename_axis('Mnemonico')
variables.head()

# Eliminar columnas que ya no se utilizarán y reordenar
setfinal = [
 'direccion',
 'CVE_MUN',
 'usgbc_fecha_cert',
 'usgbc_sis_val',
 'usgbc_ver_sisv',
 'usgbc_nv_cert',
 'CP',
 'URL']
datasetfinal = datasetfinal[setfinal]
datasetfinal.head()

metadatos = {
    'Nombre del Dataset': 'Edificios con Certificación LEED',
    'Descripcion del dataset': 'Edificios que han recibido algún nivel de certificación de Liderazgo en Energía y desarrollo Ambiental' \
...


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
Se eliminarán del dataset los siguientes edificios:
Can you write Python code for it?


I am working on the file "Datasets/LEED/LEED.ipynb".
The first task is:
Todos los datos son listas, pero "street" tiene 2 elementos. Entonces para el script lo que voy a hacer será eliminar todos los saltos de linea y concatenar el texto de todos los elementos de la lista
Can you write Python code for it?

# Script para extraer datos de fichas a partir de la URL
def webcrawler(x):
    time.sleep(0.05)
    url = x
    try:
        page = requests.get(x)
        tree = html.fromstring(page.content)
    except:           # Regresa false si no logras entrar a la URL
        street = False
        locality = False
        postalcode = False
        country = False
        return [street, locality, postalcode, country]
    # Saca los datos del tree. Regresa None si no encontraste
    try:
        street = ''.join(tree.xpath('//span[@itemprop="streetAddress"]/text()'))
    except:
        street = None
    try:
        locality = tree.xpath('//span[@itemprop="addressLocality"]/text()')
    except:
        locality = None
    try:
        postalcode = tree.xpath('//span[@itemprop="postalCode"]/text()')
    except:
        postalcode = None
    try:
        country = tree.xpath('//span[@itemprop="addressCountry"]/text()')
    except:
        country = None

    return [street, locality, postalcode, country]

# Pon al crawler a hacer su chamba (Pero no si el archivo ya existe)
archivoraw = r'D:\PCCS\00_RawData\01_CSV\LEED\crawl_leed.xlsx'
if os.path.isfile(archivoraw):
    print('NO SE REALIZÓ EL WEBCRAWL PORQUE YA SE TIENEN LOS DATOS EN \n {}'.format(archivoraw))
    print('*** Mejor importa el archivo para no gastar tantos recursos ***')
else:
    raw_data['crawl'] = raw_data.Path.apply(webcrawler)


I am working on the file "Datasets/Pigoo/.ipynb_checkpoints/pigoo_desagregacion-checkpoint.ipynb".
The first task is:
1. Revisión y estandarización inicial al DataSet Pigoo
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
Can you write Python code for it?

# Carga del dataset "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()


I am working on the file "Datasets/Pigoo/.ipynb_checkpoints/pigoo_desagregacion-checkpoint.ipynb".
The first task is:
2. Ciudad de México
La ciudad de México está dividida en 16 delegaciones, cada una identificada por el INEGI con una clave geoestadística.
Can you write Python code for it?


I am working on the file "Datasets/Pigoo/.ipynb_checkpoints/pigoo_desagregacion-checkpoint.ipynb".
The first task is:
En el Dataset de PIGOO la Ciudad de México está considerada como una unidad monolítica
Can you write Python code for it?

pigoo_inegi_df.loc[42]

writer = pd.ExcelWriter(r'D:\PCCS\01_Dmine\Datasets\Pigoo\pigoo_notreviewd.xlsx')
pigoo_inegi_df[~ciudades_revisadas].to_excel(writer, sheet_name ='datos')
writer.close()


I am working on the file "Datasets/Pigoo/Pigoo_Desagregacion.ipynb".
The first task is:
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.
Can you write Python code for it?

datos_pigoo = ['Nombre- PIGOO', 'Organismo Operador', 'Estado', 'CVE_MUN', 'Municipio-Inegi']
pigoo_inegi_df[pigoo_inegi_df['Nombre- PIGOO'] == "Tampico Y Madero"][datos_pigoo]


I am working on the file "Datasets/Pigoo/Pigoo_Desagregacion.ipynb".
The first task is:
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.
Can you write Python code for it?

dataset.head()

nom_estandar = pd.read_excel(r'D:\PCCS\01_Dmine\Datasets\Pigoo\standard-pigoo_ooapas_geo.xlsx',
                            dtype={'CVE_MUN': str})
nom_estandar.head()


I am working on the file "Datasets/Pigoo/Pigoo_Desagregacion.ipynb".
The first task is:
El dataset Pigoo se separará en datasets diferentes para cada indicador. Los indicadores que incluye el dataset PIGOO son los siguientes:
Can you write Python code for it?

indicadores = set(dataset['indicador'])
for i in indicadores: print('{} . {}'.format(len(i), i))

# Separacion de dataset por indicador
dict_indicadores = {}
for i in indicadores:
    indicador = dataset[dataset['indicador'] == i]
    dict_indicadores[i] = indicador