Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG6/Grupo_5_py.py
2714 views
1
# -*- coding: utf-8 -*-
2
"""
3
Created on Fri Oct 21 17:27:46 2022
4
5
@author: Usuario
6
"""
7
8
# Tarea 6
9
import os # for usernanme y set direcotrio
10
import pandas as pd
11
import numpy as np
12
import weightedcalcs as wc # ponderador
13
from tqdm import tqdm # controlar el tiempo en un loop
14
15
user = os.getlogin() # Username
16
17
os.chdir(f"D:/Users/W10/Documents/GitHub/1ECO35_2022_2/Lab7") # Set directorio
18
19
20
21
22
#%% Pregunta 1
23
# Establecemos las bases que usaremos enaho01_19 y enaho34_19
24
enaho01_19 = pd.read_stata(r"../../../datos/2019/687-Modulo01/687-Modulo01/enaho01-2019-100.dta",
25
convert_categoricals=False)
26
27
enaho34_19 = pd.read_stata(r"../../../datos/2019/687-Modulo34/687-Modulo34/sumaria-2019.dta",
28
convert_categoricals=False)
29
30
# Hacemos el merge entre ambas
31
merge_hog_19 = pd.merge(enaho01_19, enaho34_19,
32
on = ["conglome", "vivienda", "hogar"],
33
how = "left",
34
suffixes=('', '_y'),
35
validate = "1:1")
36
37
# Establecemos las bases que usaremos enaho01_20 y enaho34_20
38
enaho01_20 = pd.read_stata(r"../../../datos/2020/737-Modulo01/737-Modulo01/enaho01-2020-100.dta",
39
convert_categoricals=False)
40
41
enaho34_20 = pd.read_stata(r"../../../datos/2020/737-Modulo34/737-Modulo34/sumaria-2020.dta",
42
convert_categoricals=False)
43
44
# Hacemos el merge entre ambas
45
merge_hog_20 = pd.merge(enaho01_20, enaho34_20,
46
on = ["conglome", "vivienda", "hogar"],
47
how = "left",
48
suffixes=('', '_y'),
49
validate = "1:1")
50
51
# Realizamos el append para los dos años
52
merge_append_bases = merge_hog_19.append(merge_hog_20, ignore_index = True)
53
54
# Establecemos la base de los deflactores
55
enaho34_deflactores_2020 = pd.read_stata(r"../../../datos/2020/737-Modulo34/737-Modulo34/ConstVarGasto-Metodologia actualizada/Gasto2020/Bases/deflactores_base2020_new.dta",
56
convert_categoricals=False)
57
58
merge_append_bases['dpto'] = merge_append_bases['ubigeo'].str[:2] #Generamos indicador de región
59
merge_append_bases['dpto'] = merge_append_bases['dpto'].astype(float) #Convertimos a float para merge
60
merge_append_bases['aniorec'] = merge_append_bases['aÑo'] #Generamos indicador de año
61
merge_append_bases['aniorec'] = merge_append_bases['aniorec'].astype(float) #Convertimos a float para merge
62
63
print (enaho34_deflactores_2020.dtypes)
64
print (merge_append_bases.dtypes)
65
66
#Ahora, con los nombres de variables editados, realizamos el merge final por departamento y año
67
68
merge_hog_deflactores_2 = pd.merge(merge_append_bases, enaho34_deflactores_2020,
69
on = ["dpto", "aniorec"],
70
how = "left",
71
suffixes=('', '_y'),
72
validate = "m:1")
73
74
merge_hog_deflactores = merge_hog_deflactores_2[["conglome", "vivienda", "hogar" ,
75
"ubigeo", "dominio" ,"estrato" ,"dpto", "aniorec",
76
"inghog1d", "gashog2d", "mieperho" , "ld", "i00"]] #Conservamos las variables que nos interesan
77
78
merge_hog_deflactores['ingreso_real_mensual'] = merge_hog_deflactores["inghog1d"] / (merge_hog_deflactores["mieperho"]*12*merge_hog_deflactores["ld"]*merge_hog_deflactores["i00"])
79
#Creamose el ingreso real menusal
80
merge_hog_deflactores['gasto_real_mensual'] = merge_hog_deflactores["gashog2d"] / (merge_hog_deflactores["mieperho"]*12*merge_hog_deflactores["ld"]*merge_hog_deflactores["i00"])
81
#Creamose el gasto real menusal
82
83
84
85
86
#%% Pregunta 2: Salario por hora del trabajador dependiente
87
88
# Establecemos las bases que usaremos enaho05_20
89
enaho05_20 = pd.read_stata(r"../../../datos/2020/737-Modulo05/737-Modulo05/enaho01a-2020-500.dta",
90
convert_categoricals=False)
91
print (enaho05_20.dtypes)
92
93
# Conservamos las variables que usaremos
94
enaho05_20 = enaho05_20[["aÑo", "mes", "conglome", "vivienda", "hogar" ,
95
"ubigeo", "dominio" ,"estrato", "i524e1", "i538e1", "i513t", "i518"]]
96
97
#Editamos la base de datos para reemplazar los missing por ceros
98
enaho05_20["i524e1"].replace({np.nan: 0}, inplace =True)
99
enaho05_20["i538e1"].replace({np.nan: 0}, inplace =True)
100
enaho05_20["i513t"].replace({np.nan: 0}, inplace =True)
101
enaho05_20["i518"].replace({np.nan: 0}, inplace =True)
102
103
104
enaho05_20['ingreso_anual'] = enaho05_20["i524e1"] + enaho05_20["i538e1"]
105
#Generamos el ingreso anual
106
107
enaho05_20['horas_trabajoxsemana'] = enaho05_20["i513t"] + enaho05_20["i518"]
108
#Generamos horas de trabajo por semana
109
110
enaho05_20['salarioxhora_trabajo'] = enaho05_20['ingreso_anual'] / (enaho05_20['horas_trabajoxsemana']*52)
111
#Generamos salario por hora de trabajo
112
113
enaho05_20['salarioxhora_trabajo'].replace({0: np.nan}, inplace =True)
114
#Reemplazamos los valores de 0 por missing nan
115
116
print(enaho05_20['salarioxhora_trabajo'].value_counts())
117
118
119
120
121
122
#%%Pregunta 3: Groupby
123
124
# Establecemos las bases que usaremos enaho02_20
125
enaho02_20 = pd.read_stata(r"../../../datos/2020/737-Modulo02/737-Modulo02/enaho01-2020-200.dta",
126
convert_categoricals=False)
127
128
# Generamos la agrupación para hogares y creamos los miembros totales y la edad máxima de los miembros
129
enaho_pension_65_20 = enaho02_20.groupby( [ "conglome", "vivienda", "hogar" ],
130
as_index = False ).agg(
131
total_miembros = ('conglome', np.size),
132
edad = ('p208a', np.max))
133
134
# Realizamos el merge entre enaho_pension_65_20 y enaho34_20
135
enaho_pension_65_20_2 = pd.merge(enaho_pension_65_20, enaho34_20,
136
on = ["conglome","vivienda","hogar"],
137
how = "left",
138
suffixes=('', '_y'),
139
validate = "m:1")
140
141
# Conservamos las variables que nos interesan
142
enaho_pension_65_20_2 = enaho_pension_65_20_2[["aÑo","conglome", "vivienda", "hogar" ,
143
"ubigeo", "dominio" ,"estrato" , "inghog1d",
144
"gashog2d", "mieperho", "linea", "edad", "total_miembros"]]
145
146
#Generamos ingreso_mensual y gasto_mensual
147
enaho_pension_65_20_2["ingreso_mensual"] = enaho_pension_65_20_2["inghog1d"]/(12*enaho_pension_65_20_2["mieperho"])
148
149
enaho_pension_65_20_2["gasto_mensual"] = enaho_pension_65_20_2["gashog2d"]/(12*enaho_pension_65_20_2["mieperho"])
150
151
enaho_pension_65_20_2["pobre"] = np.where(
152
enaho_pension_65_20_2["gasto_mensual"] < enaho_pension_65_20_2["linea"],
153
1, 0) #Generamos dummy para "pobre" con 1 y "no pobre" con 0
154
155
enaho_pension_65_20_2["mayor_de_65"] = np.where(
156
enaho_pension_65_20_2["edad"] > 65,
157
1, 0) #Generamos dummy para "mayor_de_65" con 1 , "no_mayor_de_65" con 0
158
159
enaho_pension_65_20_2["apto_pension_65"] = np.where(
160
(enaho_pension_65_20_2["pobre"] == 1) & (enaho_pension_65_20_2["mayor_de_65"] == 1),
161
1, 0) #Generamos dummy para "apto_pension_65"con 1 si se cumple las condiciones y "no_apto_pension_65" con 0
162
163
print(enaho_pension_65_20_2["apto_pension_65"].value_counts())
164
165
166
167