PyEPH - Procesamiento de Encuesta Permanente de Hogares de INDEC en Python#
La librería Pyeph tiene como objetivo facilitar el procesamiento en Python de las Encuesta Permanente de Hogares (eph) publicadas por INDEC de forma periódica. Está pensada como un espacio donde se nuclean y centralizan los cálculos vinculados a las mismas para posteriormente ser utilizadas en investigaciones, artículos, publicaciones, etc. Es una librería que hace principal hincapié en la transparencia metodológica utilizando licencias de código abierto y que promueve la colaboración de las comunidades de cientístas de datos, sociales, investigadorxs, desarrolladorxs, periodistas y demás curiosxs.
Permite la descarga de archivos de EPH's
y otros como la canasta basica
y adulto equivalente
, como asi también algunos calculos rápidos relacionados con las mismas
Repo: https://github.com/institutohumai/pyeph
Cómo citar la librería#
Carolina Trogliero, Mariano Valdez y Maria Frances Gaska (2022). PyEPH: Librería para la obtención y el procesamiento de la Encuesta Permanente de Hogares (EPH-INDEC). PyEPH version https://doi.org/10.5281/zenodo.6727908
Tenga en cuenta#
Esta librería se encuentra en estado permanente de desarrollo.
Cualquier colaboración es bienvenida
Agradecimientos#
Dejamos aquí un especial agradecimiento al equipo de desarrollo de la librería EPH en R. Todo el amor para elles ❤️ y a Rami Argañaraz por armarnos el loguito 😻
Instalación#
Pueden probar nuestra notebook de ejemplo en Google Colab
Recordá abrir en una nueva pestaña
Prerequisitos#
Instalando PyEPH#
Abra una terminal del sistema y escriba
$ pip install pyeph
Uso básico#
Los siguientes son algunos ejemplos de uso. Para ver todos los cálculos podés ir para la documentación
En inglés
import pyeph
# Obtención
eph = pyeph.get(data="eph", year=2021, period=2, base_type='individual') # EPH individual
basket = pyeph.get(data="canastas") # canasta basica total y alimentaria
adequi = pyeph.get(data="adulto-equivalente") # adulto equivalente
# Cálculos de ejemplo de pobreza
poverty = pyeph.Poverty(eph, basket)
population_poverty = poverty.population(group_by='CH04') # Población pobre por sexo
labeled_poverty = pyeph.map_labels(population_poverty) # Etiquetado de las variables
# Cálculos de Mercado Laboral
labor_market = pyeph.LaborMarket(eph)
unemployment = labor_market.unemployment(group_by="REGION", div_by="PT") # Desempleo agrupado por region y dividiendo por Población Total
labeled_unemployment = pyeph.map_labels(unemployment) # Etiquetado de las variables
En español
import pyeph
# Obtención
eph = pyeph.obtener(data="eph", ano=2021, periodo=2, tipo_base='individual') # EPH individual
canastas = pyeph.obtener(data="canastas") # canasta basica total y alimentaria
adequi = pyeph.obtener(data="adulto-equivalente") # adulto equivalente
# Cálculos de ejemplo de pobreza
pobreza = pyeph.Pobreza(eph, canastas)
poblacion_pobre = pobreza.poblacion(agrupar_por='CH04') # Población pobre por sexo
poblacion_pobre_etiquetado = pyeph.etiquetar(poblacion_pobre) # Etiquetado de las variables
# Cálculos de Mercado Laboral
mercado_laboral = pyeph.MercadoLaboral(eph)
desempleo = mercado_laboral.desempleo(agrupar_por="REGION", div_por="PT") # Desempleo agrupado por region y dividiendo por Población Total
desempleo_etiquetado = pyeph.etiquetar(desempleo) # Etiquetado de las variables
Obtención de bases de datos#
La función pyeph.obtener()
o pyeph.get()
- genera la obtención de un pandas.DataFrame de las bases que el usuario solicite.
¿Qué se obtiene?#
Microdata
Canasta básica
Adulto equivalente
En construcción…
¿En qué formato se obtienen?#
Los archivos originales se encuentran en formato “.csv” comprimidos en formato “.zip” Lo que se alacema efectivamente en disco es el archivo “.zip”
¿Desde dónde se obtienen?#
Los archivos se encuentran almacenados en github. Esto debido a la necesidad de estandarizar los archivos para su posterior procesamiento en los cálculos. Los archivo servidos por INDEC se encuentran descentralizados y con diferentes nomenclaturas. Y, además, de esta manera ahorramos el posible mal funcionamiento del módulo de descarga de la libreria puesto que no siempre está disponible el sitio de INDEC para su consulta. En cualquier caso, de verse necesario realizar la obtención de los datos desde INDEC por asuntos de fiabilidad, es un llamamiento a la comunidad para desarrollar esa sescción. En getter.py se deberá modificar el método from_indec()
¿Dónde se almacenan?#
Los archivos descargados se pueden encontrar dentro de la carpeta «.db», localizada dentro de «ruta-local-de-python/site-packages/pyeph/»
Uso#
Dependiendo el tipo de base que se quiera obtener, se realizarán diferentes acciones.
Microdatos#
Al peticionar los microdatos pyeph revisa si existe el archivo de la eph solicitada en local. En caso de que exista, retorna el DataFrame del archivo .csv; en caso de no existir primero realiza su descarga.
pyeph.obtener(data="eph", ano=2017, periodo=2, frecuencia="trimestre", tipo_base="individual")
o
pyeph.get(data="eph", year=2017, period=2, freq="trimestre", base_type="individual")
Parámetros#
Parámetros |
Tipo de dato |
Descripción |
---|---|---|
data=eph |
str |
«eph» para solicitar los microdatos de las EPH’s |
ano (year) |
int |
Año de la EPH solicitada |
periodo (period) |
int |
Periodo de la EPH solicitada |
frecuencia (freq) |
str |
Frecuencia de periodización (default: «trimestre») |
tipo_base (base_type) |
str |
Tipo de base (Hogar o Individual) (default: «individual») |
Canasta Básica Alimentaria y Canasta Básica Total#
Al peticionar la canasta pyeph intenta obtener las CBA y CBT más actualizadas. Retornará la ultima que encuentre
pyeph.obtener(data="canastas")
o
pyeph.get(data="basket")
Parámetros#
Parámetros |
Tipo de dato |
Descripción |
---|---|---|
data=canastas (basket) |
str |
CBA y CBT |
Cálculos#
Cálculo de la Pobreza e Indigencia#
La clase pyeph.Pobreza()
o pyeph.Poverty()
- instancia el calculo de la pobreza e indigencia utilizando la metodología de línea para las bases trimestrales. Tiene dos métodos principales (hogares()
/household()
y poblacion()
/population()
) que devuleven un dataframe con información referida a la tasa de pobreza de personas y la tasa de pobreza de hogares.
Aclaración: No existe información publicada fuera de los informes de prensa en formato pdf sobre los valores de las canastas básicas y alimentarias. No obstante, hemos desarrollado dos funcionaes que, de encontrarse disponibles dichos datos, podrían calcular de forma automática los valores de pobreza e indigencia.
Uso#
La clase pyeph.Pobreza()
o pyeph.Poverty()
recibe los siguientes parámetros:
pyeph.Pobreza(eph, canasta)
o
pyeph.Poverty(eph, basket)
Parámetros#
Parámetros |
Tipo de dato |
Descripción |
---|---|---|
eph |
pandas.DataFrame |
Base de EPH individual publicada por INDEC. |
basket (canasta) |
pandas.DataFrame |
Base de datos de Canasta Básica Total y Canasta Básica Alimentaria con el formato específicado aquí. |
Métodos#
La clase pyeph.Pobreza()
o pyeph.Poverty()
instancia el calculo de pobreza e indigencia. Para obtener el dataframe con los resultados podrá consultar los métodos hogares()
/household()
o poblacion()
/population()
, según corresponda.
Pobreza e Indigencia de Personas
Este método retorna como resultado un pandas.DataFrame donde se especifica el porcentaje y la cantidad de personas en situación de pobreza e indigencia. Esta información puede calcularse agrupada por otras categorías de interés (ejemplo: sexo).
pyeph.Pobreza(eph, canasta).poblacion(agrupar_por)
o
pyeph.Poverty(eph, basket).population(group_by)
Pobreza e Indigencia de Hogares
Este método retorna como resultado un pandas.DataFrame donde se especifica el porcentaje y la cantidad de hogares en situación de pobreza e indigencia. En este caso, no es posible obtener la información agrupada por otra categoría.
pyeph.Pobreza(eph, canasta).hogares()
o
pyeph.Poverty(eph, basket).household()
Ejemplos#
Primero se instancia la clase pyeph.Pobreza()
o pyeph.Poverty()
:
import pyeph
# Obtencion de la base de datos
eph = pyeph.obtener(data="eph", ano=2019, periodo=1, tipo_base='individual') # INGLÉS: eph = pyeph.get(data="eph", year=2019, period=1, base_type='individual')
#Obtencion de la canasta
canasta = pyeph.obtener(data="canastas") # INGLÉS: canasta = pyeph.get(data="canastas")
# Instanciar la clase Pobreza() o Poverty()
pobreza = pyeph.Pobreza(eph=eph, canasta=canasta) # INGLÉS: pobreza = pyeph.Poverty(eph=eph, basket=canasta)
Una vez instancida la clase con una EPH individual particular, se puede calcular la tasa de pobreza e indigencia de personas y de hogares, ejecutando los diferentes métodos.
Pobreza e Indigencia de Personas#
Una vez instanciada la clase pyeph.Pobreza()
o pyeph.Poverty()
se ejecuta el método poblacion()
/population()
:
# Calculo de Pobreza e Indigencia (general)
print('Pobreza de personas:')
pobreza_personas = pobreza.poblacion() # INGLÉS: pobreza_personas = pobreza.population()
# Calculo de Pobreza e Indigencia agrupado por categoría (puede ser mas de una)
print('Pobreza de personas según sexo:')
pobreza_personas = pobreza.poblacion(agrupar_por='CH04') # INGLÉS: pobreza_personas = pobreza.population(group_by='CH04')
Pobreza e Indigencia de Hogares#
Una vez instanciada la clase pyeph.Pobreza()
o pyeph.Poverty()
se ejecuta el método hogares()
/household()
:
# Calculo de Pobreza e Indigencia (general)
print('Pobreza de hogares:')
pobreza_personas = pobreza.hogares() # INGLÉS: pobreza_personas = pobreza.household()
Cálculos de Mercado Laboral#
La clase pyeph.MercadoLaboral()
o pyeph.LaborMarket()
- prepara las bases para los cálculos de los diferentes indicadores habituales vinculados al mercado laboral. Tiene tres métodos principales -empleo()
/employment()
, desempleo()
/unemployment()
y actividad()
/activity()
- que devuleven un dataframe con información referida a cada indicador.
Uso#
La clase pyeph.MercadoLaboral()
o pyeph.LaborMarket()
recibe los siguientes parámetros:
pyeph.MercadoLaboral(eph)
o
pyeph.LaborMarket(eph)
Parámetros#
Parámetros |
Tipo de dato |
Descripción |
---|---|---|
eph |
pandas.DataFrame |
Base de EPH individual publicada por INDEC. |
Métodos#
La clase pyeph.MercadoLaboral()
o pyeph.LaborMarket()
prepara las bases para los cálculos de los diferentes indicadores habituales vinculados al mercado laboral. Para obtener el dataframe con los resultados podrá consultar los métodos empleo()
/employment()
, desempleo()
/unemployment()
o actividad()
/activity()
, según corresponda.
Empleo
Este método retorna como resultado un pandas.DataFrame donde se especifica […].
pyeph.MercadoLaboral(eph).empleo(agrupar_por, div_por)
o
pyeph.LaborMarket(eph).employment(group_by, div_by)
Parámetros |
Tipo de dato |
Descripción |
---|---|---|
group_by (agrupar_por) |
str or list, default: None |
Nombre de la variable o lista de nombres de las variables por las cuales se desea agrupar y calcular los indicadores. Ejemplo: “CH04” o [ “CH04”, “REGION”] |
div_by (div_por) |
str, default=”PT” |
Indica la población que se utilizará para el cálculo de la tasa de empleo. Puede asumir “PT” indicando población total o “PET” indicando población en edad de trabajar. |
Desempleo
Este método retorna como resultado un pandas.DataFrame donde se especifica […].
pyeph.MercadoLaboral(eph).desempleo(agrupar_por, div_por)
o
pyeph.LaborMarket(eph).unemployment(group_by, div_by)
Parámetros |
Tipo de dato |
Descripción |
---|---|---|
group_by (agrupar_por) |
str or list, default: None |
Nombre de la variable o lista de nombres de las variables por las cuales se desea agrupar y calcular los indicadores. Ejemplo: “CH04” o [ “CH04”, “REGION”] |
div_by (div_por) |
str, default=”PET” |
Indica la población que se utilizará para el cálculo de la tasa de empleo. Puede asumir “PT” indicando población total o “PET” indicando población en edad de trabajar. |
Actividad
Este método retorna como resultado un pandas.DataFrame donde se especifica […].
pyeph.MercadoLaboral(eph).actividad(agrupar_por, div_por)
o
pyeph.LaborMarket(eph).activity(group_by, div_by)
Parámetros |
Tipo de dato |
Descripción |
---|---|---|
group_by (agrupar_por) |
str or list, default: None |
Nombre de la variable o lista de nombres de las variables por las cuales se desea agrupar y calcular los indicadores. Ejemplo: “CH04” o [ “CH04”, “REGION”] |
div_by (div_por) |
str, default=”PT” |
Indica la población que se utilizará para el cálculo de la tasa de empleo. Puede asumir “PT” indicando población total o “PET” indicando población en edad de trabajar. |
Ejemplos#
Primero se instancia la clase pyeph.MercadoLaboral()
o pyeph.LaborMarket()
:
import pyeph
# Obtencion de la base de datos
eph = pyeph.obtener(data="eph", ano=2019, periodo=1, tipo_base='individual') # INGLÉS: eph = pyeph.get(data="eph", year=2019, period=1, base_type='individual')
Resultado:
index |
CODUSU |
ANO4 |
TRIMESTRE |
NRO_HOGAR |
COMPONENTE |
H15 |
REGION |
MAS_500 |
AGLOMERADO |
PONDERA |
CH03 |
CH04 |
CH05 |
CH06 |
CH07 |
CH08 |
CH09 |
CH10 |
CH11 |
CH12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 |
TQRMNOPPUHKNKNCDEFOCD00629562 |
2019 |
1 |
2 |
2 |
1 |
41 |
N |
8 |
108 |
2 |
2 |
03/06/1990 |
28 |
1 |
4 |
1 |
2 |
0 |
4 |
1 |
TQRMNOPPUHKNKNCDEFOCD00629562 |
2019 |
1 |
2 |
3 |
1 |
41 |
N |
8 |
108 |
3 |
2 |
29/12/2005 |
13 |
5 |
4 |
1 |
1 |
1 |
4 |
2 |
TQRMNOPPUHKNKNCDEFOCD00629562 |
2019 |
1 |
2 |
4 |
0 |
41 |
N |
8 |
108 |
3 |
1 |
26/01/2018 |
1 |
5 |
4 |
3 |
0 |
0 |
0 |
3 |
TQRMNORUQHKNKNCDEFOCD00629563 |
2019 |
1 |
1 |
1 |
1 |
41 |
N |
8 |
108 |
1 |
2 |
30/03/1978 |
41 |
5 |
4 |
1 |
2 |
0 |
6 |
4 |
TQRMNORUQHKNKNCDEFOCD00629563 |
2019 |
1 |
1 |
2 |
0 |
41 |
N |
8 |
108 |
3 |
2 |
20/09/2009 |
9 |
5 |
4 |
1 |
1 |
1 |
2 |
5 |
TQRMNOPUVHKOKMCDEFOCD00629564 |
2019 |
1 |
1 |
2 |
1 |
41 |
N |
8 |
141 |
1 |
1 |
26/04/1967 |
51 |
3 |
4 |
1 |
2 |
0 |
2 |
6 |
TQRMNOQWVHMNLPCDEFOCD00629565 |
2019 |
1 |
1 |
1 |
1 |
41 |
N |
8 |
221 |
1 |
1 |
15/03/1955 |
63 |
2 |
1 |
1 |
2 |
0 |
4 |
7 |
TQRMNOQWVHMNLPCDEFOCD00629565 |
2019 |
1 |
1 |
2 |
1 |
41 |
N |
8 |
221 |
2 |
2 |
25/04/1956 |
62 |
2 |
1 |
1 |
2 |
0 |
4 |
8 |
TQRMNOQWVHMNLPCDEFOCD00629565 |
2019 |
1 |
1 |
3 |
1 |
41 |
N |
8 |
221 |
3 |
2 |
10/06/1994 |
24 |
5 |
1 |
1 |
1 |
1 |
7 |
9 |
TQRMNOQWXHMNLPCDEFOCD00629566 |
2019 |
1 |
1 |
1 |
1 |
41 |
N |
8 |
221 |
1 |
1 |
22/07/1944 |
74 |
4 |
1 |
1 |
2 |
0 |
2 |
# Instanciar la clase LaborMarket o MercadoLaboral
mercado_laboral = pyeph.MercadoLaboral(eph) # INGLÉS: mercado_laboral = pyeph.LaborMarket(eph)
Una vez instancida la clase con una EPH individual particular, se pueden calcular los indicadores del mercado laboral, ejecutando los diferentes métodos.
Desempleo#
Una vez instanciada la clase pyeph.MercadoLaboral()
o pyeph.LaborMarket()
se ejecuta el método desempleo()
/unemployment()
:
# Calculo de Desempleo General
print("\nTasa de desempleo considerando la Población en Edad de Trabajar:\n")
print(mercado_laboral.desempleo()) # INGLÉS: mercado_laboral.unemployment()
Resultado:
Tasa de desempleo considerando la Población en Edad de Trabajar:
Tasa de Desempleo |
---|
10.1 |
print("\nTasa de desempleo considerando la Población Total:\n")
print(mercado_laboral.desempleo(div_por='PT')) # INGLÉS: mercado_laboral.unemployment(div_by='PT')
Resultado:
Tasa de desempleo considerando la Población Total:
Tasa de Desempleo |
---|
10.1 |
# Calculo de Desempleo agrupado por categoría (puede ser mas de una)
print("\nTasa de desempleo considerando la Población en Edad de Trabajar según sexo:\n")
print(mercado_laboral.desempleo(agrupar_por = 'CH04')) # INGLÉS: mercado_laboral.unemployment(group_by='CH04')
Resultado:
Tasa de desempleo considerando la Población en Edad de Trabajar según sexo:
CH04 |
Tasa de Desempleo |
---|---|
1 |
9.2 |
2 |
11.2 |
print("\nTasa de desempleo considerando la Población Total según sexo:\n")
print(mercado_laboral.desempleo(agrupar_por = 'CH04', div_por='PT')) # INGLÉS: mercado_laboral.unemployment(group_by='CH04', div_by='PT')
Resultado:
Tasa de desempleo considerando la Población Total según sexo:
CH04 |
Tasa de Desempleo |
---|---|
1 |
9.2 |
2 |
11.2 |
Empleo#
Una vez instanciada la clase pyeph.MercadoLaboral()
o pyeph.LaborMarket()
se ejecuta el método empleo()
/employment()
:
# Calculo de Empleo General
print("\nTasa de empleo considerando la Población en Edad de Trabajar:\n")
print(mercado_laboral.empleo()) # INGLÉS: mercado_laboral.employment()
Resultado:
Tasa de empleo considerando la Población en Edad de Trabajar:
Tasa de Empleo |
---|
42.3 |
print("\nTasa de empleo considerando la Población Total:\n")
print(mercado_laboral.empleo(div_por='PT')) # INGLÉS: mercado_laboral.employment(div_by='PT')
Resultado:
Tasa de empleo considerando la Población Total:
Tasa de Empleo |
---|
42.3 |
# Calculo de Empleo agrupado por categoría (puede ser mas de una)
print("\nTasa de empleo considerando la Población en Edad de Trabajar según sexo:\n")
print(mercado_laboral.empleo(agrupar_por = 'CH04')) # INGLÉS: mercado_laboral.employment(group_by='CH04')
Resultado:
Tasa de empleo considerando la Población en Edad de Trabajar según sexo:
CH04 |
Tasa de Empleo |
---|---|
1 |
49.7 |
2 |
35.3 |
print("\nTasa de empleo considerando la Población Total según sexo:\n")
print(mercado_laboral.empleo(agrupar_por = 'CH04', div_por='PT')) # INGLÉS: mercado_laboral.employment(group_by='CH04', div_by='PT')
Resultado:
Tasa de empleo considerando la Población Total según sexo:
CH04 |
Tasa de Empleo |
---|---|
1 |
49.7 |
2 |
35.3 |
Actividad#
Una vez instanciada la clase pyeph.MercadoLaboral()
o pyeph.LaborMarket()
se ejecuta el método actividad()
/activity()
:
# Calculo de Actividad General
print("\nTasa de actividad considerando la Población en Edad de Trabajar:\n")
print(mercado_laboral.actividad()) # INGLÉS: mercado_laboral.activity()
Resultado:
Tasa de actividad considerando la Población en Edad de Trabajar:
Tasa de Actividad |
---|
47.0 |
print("\nTasa de actividad considerando la Población Total:\n")
print(mercado_laboral.actividad(div_por='PT')) # INGLÉS: mercado_laboral.activity(div_by='PT')
Resultado:
Tasa de actividad considerando la Población Total:
Tasa de Actividad |
---|
47.0 |
# Calculo de Actividad agrupado por categoría (puede ser mas de una)
print("\nTasa de actividad considerando la Población en Edad de Trabajar según sexo:\n")
print(mercado_laboral.actividad(agrupar_por = 'CH04')) # INGLÉS: mercado_laboral.activity(group_by='CH04')
Resultado:
Tasa de actividad considerando la Población en Edad de Trabajar según sexo:
CH04 |
Tasa de Actividad |
---|---|
1 |
54.7 |
2 |
39.8 |
print("\nTasa de actividad considerando la Población Total según sexo:\n")
print(mercado_laboral.actividad(agrupar_por = 'CH04', div_por='PT')) # INGLÉS: mercado_laboral.activity(group_by='CH04', div_by='PT')
Resultado:
Tasa de actividad considerando la Población Total según sexo:
CH04 |
Tasa de Actividad |
---|---|
1 |
54.7 |
2 |
39.8 |