Es raro que un análisis de datos involucre un único dataframe. Lo habitual es que tengas muchos dataframes y que debas unirlos (join) para responder a las preguntas que te interesan.
pandas tiene un conjunto muy completo de opciones para combinar uno o más dataframes, y las dos más importantes son concatenate y merge. Algunos de los ejemplos de este capítulo te muestran cómo unir un par de dataframes. Por suerte, esto es suficiente, ya que puedes combinar tres dataframes combinando dos pares.
Requisitos previos
Este capítulo usará el paquete de análisis de datos pandas.
Concatenar
Si tienes dos o más dataframes con el mismo índice o las mismas columnas, puedes pegarlos en un único dataframe usando pd.concat().
Para las mismas columnas, pasa axis=0 para pegar los índices; para el mismo índice, pasa axis=1 para pegar las columnas. La función de concatenación normalmente se usará sobre una lista de dataframes.
Si quieres saber de dónde provienen los datos originales en el dataframe final, usa el argumento keys.
Aquí tienes un ejemplo con datos de la población de dos estados distintos que también usa la opción keys:
import pandas as pdbase_url = ("https://github.com/aeturrell/coding-for-economists/raw/refs/heads/main/data/")state_codes = ["ca", "il"]end_url ="pop.dta"# This grabs the two dataframes, one for each statelist_of_state_dfs = [pd.read_stata(base_url + state + end_url) for state in state_codes]# Show example of first entry in list of dataframesprint(list_of_state_dfs[0])# Concatenate the list of dataframesdf = pd.concat(list_of_state_dfs, keys=state_codes, axis=0)df
county pop
0 Los Angeles 9878554
1 Orange 2997033
2 Ventura 798364
county
pop
ca
0
Los Angeles
9878554
1
Orange
2997033
2
Ventura
798364
il
0
Cook
5285107
1
DeKalb
103729
2
Will
673586
Observa que el argumento keys es opcional, pero resulta útil para saber de qué dataframe de origen proviene cada fila dentro del dataframe combinado.
Hay tantas opciones para combinar dataframes con pd.merge(left, right, on=..., how=... que no podremos cubrirlas todas aquí. Las características más importantes son: los dos dataframes que se van a combinar, sobre qué variables (también llamadas claves) se hace el merge (que pueden ser índices) mediante on=, y cómo hacer el merge (por ejemplo, left, right, outer, inner) mediante how=. Este diagrama muestra un ejemplo de merge usando las claves del dataframe de la izquierda:
El argumento how= funciona de las siguientes maneras: - how='left' usa solo las claves del dataframe de la izquierda para el merge. - how='right' usa solo las claves del dataframe de la derecha para el merge. - how='inner' usa las claves que aparecen en ambos dataframes para el merge. - how='outer' usa el producto cartesiano de las claves de ambos dataframes para el merge.
Observa que la combinación de claves K2 y K0 no existía en el dataframe de la izquierda, por lo que sus entradas en el dataframe final son NaN. Pero sí tiene entradas porque elegimos las claves del dataframe de la derecha.
Ahora podemos ver que están aquí los productos de todas las combinaciones de claves. La opción indicator=True ha hecho que se añada una columna extra, llamada ’_merge’, que nos indica de qué dataframe provienen las claves de esa fila.
TipExercise
Combina los siguientes dos dataframes usando los argumentos left_on y right_on para especificar un join sobre lkey y rkey, respectivamente: