Path: blob/main/Trabajo_grupal/WG6/Grupo_3_py_Ejercicio3.py
2714 views
#!/usr/bin/env python1# coding: utf-823# In[125]:456#En primer lugar, en términos generales, el programa pensión 65 se focaliza en hogares pobres7#con algún miembro del hogar mayor a 65 años. Usted debe crear una dummy si el hogar cumple8#tales características. Para ello use el módulo 2 (características de los miembros del hogar).910#Primero, aplique groupby , luego realice un merge con el módulo 34, y finalmente, debe crear la variable dummy.111213# In[126]:141516#Primero importamos las librerías con la que vamos a trabajar:1718import pandas as pd19import numpy as np202122# In[127]:232425#Dado que nuestra base de datos está en formato stata, para poder trabajarla en python tenemos que26#utilizar el comando pd.read_stata2728enahomódulo02_2020 = pd.read_stata(r"/Users/diegoyeliseo/Desktop/Archivos Stata Ejercicio Groupby/enaho01-2020-200.dta",29convert_categoricals=False)3031#Para mostrar la base de datos ponemos:3233enahomódulo02_2020343536# In[128]:373839# En primera instancia, vamos a aplicar groupby a hogares:4041#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:4243pensión65= enahomódulo02_2020.groupby( [ "conglome", "vivienda", "hogar" ],44as_index = False ).agg(45miembros_totales = ('conglome', np.size),46edad = ('p208a', np.max))474849# In[129]:505152#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:5354enahomódulo34_2020 = pd.read_stata(r"/Users/diegoyeliseo/Desktop/Archivos Stata Ejercicio Groupby/sumaria-2020.dta",55convert_categoricals=False)565758#Para mostrar la base de datos ponemos:5960enahomódulo34_2020616263# In[130]:646566# En segunda instancia, se realizará un merge del módulo 2(características de los miembros del hogar) con el módulo 34.67#En este sentido, vamos a realizar un merge entre pensión65 y enahomódulo34_2020:6869#Vamos a establecer una nueva variable llamada pensión65_1 que va a ser el merge entre ambas bases de datos:7071pensión65_1 = pd.merge(pensión65,enahomódulo34_2020 ,72on = ["conglome","vivienda","hogar"],73how = "left",74suffixes=('', '_y'),75validate = "m:1")767778# In[131]:798081# Por lo mencionado en la nota, vamos a filtrar la base de datos con las variables que se necesitarán82#para que los programas no sean lentos:8384#Todas las variables en corchete son mis variables relevantes con las que voy a trabajar:8586pensión65_1 = pensión65_1[["aÑo","conglome", "vivienda", "hogar" ,87"ubigeo", "dominio" ,"estrato" , "inghog1d",88"gashog2d", "mieperho", "linea", "edad", "miembros_totales"]]899091# In[132]:929394#Por último vamos a crear la variable dummy:9596#En este sentido, empezamos creando el ingreso y gasto mensual de los hogares:9798# Para ingreso mensual, el cálculo a realizar es el siguiente:99100pensión65_1["ingreso_del_mes"]=pensión65_1["inghog1d"]/(12*pensión65_1["mieperho"])101102# Para gasto mensual, el cálculo a realizar es el siguiente:103104pensión65_1["gasto_del_mes"]=pensión65_1["gashog2d"]/(12*pensión65_1["mieperho"])105106107# In[133]:108109110# Por último, vamos a generar las variables dummies:111112# Es relevante mencionar que en términos generales, el programa pensión 65113# se focaliza en hogares pobres con algún miembro del hogar mayor a 65 años.114115# En primera instancia, la primera dummy que vamos a generar es116# si el hogar es pobre le ponemos 1 y si el hogar no es pobre le ponemos 0117118# Vamos a crear una variable llamada hogar_pobre que va a ser igual a 1 si es que la variable gasto_del_mes119# 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.120121pensión65_1["hogar_pobre"]=np.where(pensión65_1["gasto_del_mes"]<pensión65_1["linea"],1,0)122123124# En segunda instancia, generamos la dummy si hay algún miembro del hogar que sea mayor de 65 años125# le ponemos 1, y si es menor de 65 años le ponemos 0126127#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 mayor128# a 65 años y es igual a 0 si es menor a 65 años.129130pensión65_1["miembrodelhogar_supera_los_65años"]=np.where(pensión65_1["edad"]> 65,1,0)131132# En tercera instancia, generamos la dummy de si se cumple las condiciones de Pensión 65 le ponemos 1133# y si no se cumple las condiciones le ponemos 0134135#Vamos a crear una variable llamada formaparte_de_pension65 que va a ser igual136# a 1 si se cumple que el hogar sea pobre y que cuente con algún miembro que sea mayor a 65 años,137# y le pondremos 0 para el caso contrario.138139140pensión65_1["formaparte_de_pension65"]=np.where((pensión65_1["hogar_pobre"] == 1) & (pensión65_1["miembrodelhogar_supera_los_65años"] == 1),1,0)141142143# In[134]:144145146# A modo de ver si los cambios se han realizado en la base de datos, pongamos lo siguiente:147148pensión65_1149150151152