Merge
Mezclar por dos columnas
Supongamos que tenemos dos DataFrames
, llamados dfA
y dfB
. Si
quieremos mezclar usando ambos, se usa como argumento de la variable
left_on
una lista.
Por ejemplo, si dfA
es:
DIR | ID | var1 | var2 |
---|---|---|---|
1 | 1 | 0.4 | 0.2 |
1 | 2 | 0.4 | 0.2 |
2 | 1 | 0.1 | 0.2 |
2 | 2 | 0.1 | 0.2 |
3 | 1 | 0.3 | 0.4 |
y dfB
es:
DIR | ID | var3 | var4 |
---|---|---|---|
1 | 1 | 9.1 | 42 |
1 | 2 | 8.9 | 41 |
2 | 1 | 8.8 | 40 |
2 | 2 | 9.2 | 44 |
3 | 1 | 4.5 | 39 |
Y queremos un nuevo dataframe, llamado dfNew que tenga como llave las
variables DIR
e ID
y como variables de valores var1
, var2
,
var3
y var4
, es decir:
DIR | ID | var1 | var2 | var3 | var4 |
---|---|---|---|---|---|
1 | 1 | 0.4 | 0.2 | 9.1 | 42 |
1 | 2 | 0.4 | 0.2 | 8.9 | 41 |
2 | 1 | 0.1 | 0.2 | 8.8 | 40 |
2 | 2 | 0.1 | 0.2 | 9.2 | 44 |
3 | 1 | 0.3 | 0.4 | 4.5 | 39 |
lo hacemos así:
dfNew = pd.merge(left=dfA,right=dfB,how="left", left_on=["DIR","ID"], right_on=["DIR","ID"])
https://stackoverflow.com/questions/41815079/pandas-merge-join-two-data-frames-on-multiple-columns
2024 S2 D2. Encuesta Calidad de Vida DANE
Documentación técnica
Se encuentra en la ruta:
Encuesta Calidad de Vida :arrow_forward: Materiales Relacionados :arrow_forward: Estructura Base de Datos
Por ejemplo, para la encuesta del 2018, en la siguiente página: https://microdatos.dane.gov.co/index.php/catalog/607/related-materials
Estructura de los datos
La estructura de datos del DANE tiene la siguiente distinción:
-
Tabla Padre (Maestro)
-
Tabla Hijo (Detalle)
‘un registro en la tabla padre puede tener uno o varios registros correspondientes en la tabla hijo’
Ejemplo: Estructura, Salud y Servicios del hogar
En este caso:
-
Tabla Padre (Maestro): Servicios del Hogar
-
Tabla Hijo (Detalle): Salud
Llave (clave)
Como mencionamos antes, al mezclar dos bases de datos se debe tener en cuenta cuál es la variable que identifica los registros. Es la llave o clave para mezclar. En la estructura de las bases de datos del DANE, esta variable es diferente entre la tabla Maestro (padre) y la tabla Detalle (Hijo).
Ejemplo: Merge, Salud y Servicios del hogar
Descargamos los datos de salud y servicios del hogar de la página del DANE de la encuesta del 2018: https://microdatos.dane.gov.co/index.php/catalog/607/get-microdata
Importamos las librerías
import pandas as pd
import numpy as np
Cargamos los conjuntos de datos
dfSalud = pd.read_csv("Salud.csv",sep=';')
dfServicios = pd.read_csv("Servicios del hogar.csv",sep=';')
Preguntas:
-
¿con qué comando imprime los primeros registros de estas dos bases de datos?
-
¿con qué comandos imprime los nombres de las variables de éstas bases de datos?
-
¿con qué comando renombra la variable
secuencia_encuesta
de la tablaServicios del Hogar
al nombreID
? -
¿con qué comando renombra la variable
secuencia_p
de la tablaSalud
al nombreID
? -
¿con qué comando mezclaria los dos conjuntos de datos?
¿cómo hacer cálculos sobre estos datos?
-
Factor de expansión: https://medium.com/tacosdedatos/explora-los-microdatos-del-inegi-con-python-b803650b0501
-
stratum, psu (consultar al DANE)