Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG6/Grupo_3_py_Ejercicio3.py
2714 views
1
#!/usr/bin/env python
2
# coding: utf-8
3
4
# In[125]:
5
6
7
#En primer lugar, en términos generales, el programa pensión 65 se focaliza en hogares pobres
8
#con algún miembro del hogar mayor a 65 años. Usted debe crear una dummy si el hogar cumple
9
#tales características. Para ello use el módulo 2 (características de los miembros del hogar).
10
11
#Primero, aplique groupby , luego realice un merge con el módulo 34, y finalmente, debe crear la variable dummy.
12
13
14
# In[126]:
15
16
17
#Primero importamos las librerías con la que vamos a trabajar:
18
19
import pandas as pd
20
import numpy as np
21
22
23
# In[127]:
24
25
26
#Dado que nuestra base de datos está en formato stata, para poder trabajarla en python tenemos que
27
#utilizar el comando pd.read_stata
28
29
enahomódulo02_2020 = pd.read_stata(r"/Users/diegoyeliseo/Desktop/Archivos Stata Ejercicio Groupby/enaho01-2020-200.dta",
30
convert_categoricals=False)
31
32
#Para mostrar la base de datos ponemos:
33
34
enahomódulo02_2020
35
36
37
# In[128]:
38
39
40
# En primera instancia, vamos a aplicar groupby a hogares:
41
42
#Para ello, vamos a denotar una nueva variable llamada pensión65. Además de ello, generamos la variable de miembros_totales y la edad máxima:
43
44
pensión65= enahomódulo02_2020.groupby( [ "conglome", "vivienda", "hogar" ],
45
as_index = False ).agg(
46
miembros_totales = ('conglome', np.size),
47
edad = ('p208a', np.max))
48
49
50
# In[129]:
51
52
53
#Dado que nuestra segunda base de datos también está en formato stata, tenemos que utilizar el comando pd.read_stata para poder trabajar en python:
54
55
enahomódulo34_2020 = pd.read_stata(r"/Users/diegoyeliseo/Desktop/Archivos Stata Ejercicio Groupby/sumaria-2020.dta",
56
convert_categoricals=False)
57
58
59
#Para mostrar la base de datos ponemos:
60
61
enahomódulo34_2020
62
63
64
# In[130]:
65
66
67
# En segunda instancia, se realizará un merge del módulo 2(características de los miembros del hogar) con el módulo 34.
68
#En este sentido, vamos a realizar un merge entre pensión65 y enahomódulo34_2020:
69
70
#Vamos a establecer una nueva variable llamada pensión65_1 que va a ser el merge entre ambas bases de datos:
71
72
pensión65_1 = pd.merge(pensión65,enahomódulo34_2020 ,
73
on = ["conglome","vivienda","hogar"],
74
how = "left",
75
suffixes=('', '_y'),
76
validate = "m:1")
77
78
79
# In[131]:
80
81
82
# Por lo mencionado en la nota, vamos a filtrar la base de datos con las variables que se necesitarán
83
#para que los programas no sean lentos:
84
85
#Todas las variables en corchete son mis variables relevantes con las que voy a trabajar:
86
87
pensión65_1 = pensión65_1[["aÑo","conglome", "vivienda", "hogar" ,
88
"ubigeo", "dominio" ,"estrato" , "inghog1d",
89
"gashog2d", "mieperho", "linea", "edad", "miembros_totales"]]
90
91
92
# In[132]:
93
94
95
#Por último vamos a crear la variable dummy:
96
97
#En este sentido, empezamos creando el ingreso y gasto mensual de los hogares:
98
99
# Para ingreso mensual, el cálculo a realizar es el siguiente:
100
101
pensión65_1["ingreso_del_mes"]=pensión65_1["inghog1d"]/(12*pensión65_1["mieperho"])
102
103
# Para gasto mensual, el cálculo a realizar es el siguiente:
104
105
pensión65_1["gasto_del_mes"]=pensión65_1["gashog2d"]/(12*pensión65_1["mieperho"])
106
107
108
# In[133]:
109
110
111
# Por último, vamos a generar las variables dummies:
112
113
# Es relevante mencionar que en términos generales, el programa pensión 65
114
# se focaliza en hogares pobres con algún miembro del hogar mayor a 65 años.
115
116
# En primera instancia, la primera dummy que vamos a generar es
117
# si el hogar es pobre le ponemos 1 y si el hogar no es pobre le ponemos 0
118
119
# Vamos a crear una variable llamada hogar_pobre que va a ser igual a 1 si es que la variable gasto_del_mes
120
# es menor a la línea de pobreza, y es igual a 0 si la variable gasto_del_mes es mayor a la línea de pobreza.
121
122
pensión65_1["hogar_pobre"]=np.where(pensión65_1["gasto_del_mes"]<pensión65_1["linea"],1,0)
123
124
125
# En segunda instancia, generamos la dummy si hay algún miembro del hogar que sea mayor de 65 años
126
# le ponemos 1, y si es menor de 65 años le ponemos 0
127
128
#Vamos a crear una variable llamada miembrodelhogar_supera_los_65años que va a ser igual a 1 si es que la variable edad es mayor
129
# a 65 años y es igual a 0 si es menor a 65 años.
130
131
pensión65_1["miembrodelhogar_supera_los_65años"]=np.where(pensión65_1["edad"]> 65,1,0)
132
133
# En tercera instancia, generamos la dummy de si se cumple las condiciones de Pensión 65 le ponemos 1
134
# y si no se cumple las condiciones le ponemos 0
135
136
#Vamos a crear una variable llamada formaparte_de_pension65 que va a ser igual
137
# a 1 si se cumple que el hogar sea pobre y que cuente con algún miembro que sea mayor a 65 años,
138
# y le pondremos 0 para el caso contrario.
139
140
141
pensión65_1["formaparte_de_pension65"]=np.where((pensión65_1["hogar_pobre"] == 1) & (pensión65_1["miembrodelhogar_supera_los_65años"] == 1),1,0)
142
143
144
# In[134]:
145
146
147
# A modo de ver si los cambios se han realizado en la base de datos, pongamos lo siguiente:
148
149
pensión65_1
150
151
152