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_encuestade la tablaServicios del Hogaral nombreID? -
¿con qué comando renombra la variable
secuencia_pde la tablaSaludal 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)