Path: blob/main/Trabajo_grupal/WG6/Grupo_5_py.py
2714 views
# -*- coding: utf-8 -*-1"""2Created on Fri Oct 21 17:27:46 202234@author: Usuario5"""67# Tarea 68import os # for usernanme y set direcotrio9import pandas as pd10import numpy as np11import weightedcalcs as wc # ponderador12from tqdm import tqdm # controlar el tiempo en un loop1314user = os.getlogin() # Username1516os.chdir(f"D:/Users/W10/Documents/GitHub/1ECO35_2022_2/Lab7") # Set directorio1718192021#%% Pregunta 122# Establecemos las bases que usaremos enaho01_19 y enaho34_1923enaho01_19 = pd.read_stata(r"../../../datos/2019/687-Modulo01/687-Modulo01/enaho01-2019-100.dta",24convert_categoricals=False)2526enaho34_19 = pd.read_stata(r"../../../datos/2019/687-Modulo34/687-Modulo34/sumaria-2019.dta",27convert_categoricals=False)2829# Hacemos el merge entre ambas30merge_hog_19 = pd.merge(enaho01_19, enaho34_19,31on = ["conglome", "vivienda", "hogar"],32how = "left",33suffixes=('', '_y'),34validate = "1:1")3536# Establecemos las bases que usaremos enaho01_20 y enaho34_2037enaho01_20 = pd.read_stata(r"../../../datos/2020/737-Modulo01/737-Modulo01/enaho01-2020-100.dta",38convert_categoricals=False)3940enaho34_20 = pd.read_stata(r"../../../datos/2020/737-Modulo34/737-Modulo34/sumaria-2020.dta",41convert_categoricals=False)4243# Hacemos el merge entre ambas44merge_hog_20 = pd.merge(enaho01_20, enaho34_20,45on = ["conglome", "vivienda", "hogar"],46how = "left",47suffixes=('', '_y'),48validate = "1:1")4950# Realizamos el append para los dos años51merge_append_bases = merge_hog_19.append(merge_hog_20, ignore_index = True)5253# Establecemos la base de los deflactores54enaho34_deflactores_2020 = pd.read_stata(r"../../../datos/2020/737-Modulo34/737-Modulo34/ConstVarGasto-Metodologia actualizada/Gasto2020/Bases/deflactores_base2020_new.dta",55convert_categoricals=False)5657merge_append_bases['dpto'] = merge_append_bases['ubigeo'].str[:2] #Generamos indicador de región58merge_append_bases['dpto'] = merge_append_bases['dpto'].astype(float) #Convertimos a float para merge59merge_append_bases['aniorec'] = merge_append_bases['aÑo'] #Generamos indicador de año60merge_append_bases['aniorec'] = merge_append_bases['aniorec'].astype(float) #Convertimos a float para merge6162print (enaho34_deflactores_2020.dtypes)63print (merge_append_bases.dtypes)6465#Ahora, con los nombres de variables editados, realizamos el merge final por departamento y año6667merge_hog_deflactores_2 = pd.merge(merge_append_bases, enaho34_deflactores_2020,68on = ["dpto", "aniorec"],69how = "left",70suffixes=('', '_y'),71validate = "m:1")7273merge_hog_deflactores = merge_hog_deflactores_2[["conglome", "vivienda", "hogar" ,74"ubigeo", "dominio" ,"estrato" ,"dpto", "aniorec",75"inghog1d", "gashog2d", "mieperho" , "ld", "i00"]] #Conservamos las variables que nos interesan7677merge_hog_deflactores['ingreso_real_mensual'] = merge_hog_deflactores["inghog1d"] / (merge_hog_deflactores["mieperho"]*12*merge_hog_deflactores["ld"]*merge_hog_deflactores["i00"])78#Creamose el ingreso real menusal79merge_hog_deflactores['gasto_real_mensual'] = merge_hog_deflactores["gashog2d"] / (merge_hog_deflactores["mieperho"]*12*merge_hog_deflactores["ld"]*merge_hog_deflactores["i00"])80#Creamose el gasto real menusal8182838485#%% Pregunta 2: Salario por hora del trabajador dependiente8687# Establecemos las bases que usaremos enaho05_2088enaho05_20 = pd.read_stata(r"../../../datos/2020/737-Modulo05/737-Modulo05/enaho01a-2020-500.dta",89convert_categoricals=False)90print (enaho05_20.dtypes)9192# Conservamos las variables que usaremos93enaho05_20 = enaho05_20[["aÑo", "mes", "conglome", "vivienda", "hogar" ,94"ubigeo", "dominio" ,"estrato", "i524e1", "i538e1", "i513t", "i518"]]9596#Editamos la base de datos para reemplazar los missing por ceros97enaho05_20["i524e1"].replace({np.nan: 0}, inplace =True)98enaho05_20["i538e1"].replace({np.nan: 0}, inplace =True)99enaho05_20["i513t"].replace({np.nan: 0}, inplace =True)100enaho05_20["i518"].replace({np.nan: 0}, inplace =True)101102103enaho05_20['ingreso_anual'] = enaho05_20["i524e1"] + enaho05_20["i538e1"]104#Generamos el ingreso anual105106enaho05_20['horas_trabajoxsemana'] = enaho05_20["i513t"] + enaho05_20["i518"]107#Generamos horas de trabajo por semana108109enaho05_20['salarioxhora_trabajo'] = enaho05_20['ingreso_anual'] / (enaho05_20['horas_trabajoxsemana']*52)110#Generamos salario por hora de trabajo111112enaho05_20['salarioxhora_trabajo'].replace({0: np.nan}, inplace =True)113#Reemplazamos los valores de 0 por missing nan114115print(enaho05_20['salarioxhora_trabajo'].value_counts())116117118119120121#%%Pregunta 3: Groupby122123# Establecemos las bases que usaremos enaho02_20124enaho02_20 = pd.read_stata(r"../../../datos/2020/737-Modulo02/737-Modulo02/enaho01-2020-200.dta",125convert_categoricals=False)126127# Generamos la agrupación para hogares y creamos los miembros totales y la edad máxima de los miembros128enaho_pension_65_20 = enaho02_20.groupby( [ "conglome", "vivienda", "hogar" ],129as_index = False ).agg(130total_miembros = ('conglome', np.size),131edad = ('p208a', np.max))132133# Realizamos el merge entre enaho_pension_65_20 y enaho34_20134enaho_pension_65_20_2 = pd.merge(enaho_pension_65_20, enaho34_20,135on = ["conglome","vivienda","hogar"],136how = "left",137suffixes=('', '_y'),138validate = "m:1")139140# Conservamos las variables que nos interesan141enaho_pension_65_20_2 = enaho_pension_65_20_2[["aÑo","conglome", "vivienda", "hogar" ,142"ubigeo", "dominio" ,"estrato" , "inghog1d",143"gashog2d", "mieperho", "linea", "edad", "total_miembros"]]144145#Generamos ingreso_mensual y gasto_mensual146enaho_pension_65_20_2["ingreso_mensual"] = enaho_pension_65_20_2["inghog1d"]/(12*enaho_pension_65_20_2["mieperho"])147148enaho_pension_65_20_2["gasto_mensual"] = enaho_pension_65_20_2["gashog2d"]/(12*enaho_pension_65_20_2["mieperho"])149150enaho_pension_65_20_2["pobre"] = np.where(151enaho_pension_65_20_2["gasto_mensual"] < enaho_pension_65_20_2["linea"],1521, 0) #Generamos dummy para "pobre" con 1 y "no pobre" con 0153154enaho_pension_65_20_2["mayor_de_65"] = np.where(155enaho_pension_65_20_2["edad"] > 65,1561, 0) #Generamos dummy para "mayor_de_65" con 1 , "no_mayor_de_65" con 0157158enaho_pension_65_20_2["apto_pension_65"] = np.where(159(enaho_pension_65_20_2["pobre"] == 1) & (enaho_pension_65_20_2["mayor_de_65"] == 1),1601, 0) #Generamos dummy para "apto_pension_65"con 1 si se cumple las condiciones y "no_apto_pension_65" con 0161162print(enaho_pension_65_20_2["apto_pension_65"].value_counts())163164165166167