Fusión de DataFrames con Pandas: merge, concat y join

Clase 21 de 32Curso de Python para Ciencia de Datos

Resumen

Combinar datos de múltiples tablas es esencial para integrar información de diferentes fuentes en el análisis de datos. Pandas ofrece funciones como merge(), concat() y join() que facilitan esta tarea de manera eficiente y flexible. A continuación, exploraremos cómo utilizar estas funciones con ejemplos prácticos que te ayudarán a dominar la combinación de DataFrames en tus proyectos de análisis de datos.

¿Cómo se utiliza la función merge()?

La función merge() en Pandas permite combinar DataFrames de manera similar a las uniones en SQL, basándose en una o más claves comunes.

Unión Interna (Inner Join)

Combina solo las filas con claves coincidentes en ambos DataFrames.

import pandas as pd # Crear DataFrames de ejemplo df1 = pd.DataFrame({ 'key': ['A', 'B', 'C'], 'value1': [1, 2, 3] }) df2 = pd.DataFrame({ 'key': ['B', 'C', 'D'], 'value2': [4, 5, 6] }) # Realizar un merge interno inner_merged = pd.merge(df1, df2, on='key', how='inner') print("Unión Interna:\n", inner_merged)

Unión Externa (Outer Join)

Incluye todas las filas de ambos DataFrames, rellenando con NaN donde no haya coincidencias.

# Realizar un merge externo outer_merged = pd.merge(df1, df2, on='key', how='outer') print("Unión Externa:\n", outer_merged)

Unión Izquierda (Left Join)

Devuelve todas las filas del DataFrame izquierdo y las filas coincidentes del DataFrame derecho.

# Realizar un merge izquierda left_merged = pd.merge(df1, df2, on='key', how='left') print("Unión Izquierda:\n", left_merged)

Unión Derecha (Right Join)

Devuelve todas las filas del DataFrame derecho y las filas coincidentes del DataFrame izquierdo.

# Realizar un merge derecha right_merged = pd.merge(df1, df2, on='key', how='right') print("Unión Derecha:\n", right_merged)

¿Cómo se aplica la función concat()?

La función concat() se usa para concatenar DataFrames a lo largo de un eje, ya sea apilándolos verticalmente o combinándolos horizontalmente.

Concatenación Vertical

Apila los DataFrames uno sobre otro de forma vertical.

# Crear DataFrames de ejemplo df3 = pd.DataFrame({ 'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2'] }) df4 = pd.DataFrame({ 'A': ['A3', 'A4', 'A5'], 'B': ['B3', 'B4', 'B5'] }) # Concatenar verticalmente vertical_concat = pd.concat([df3, df4]) print("Concatenación Vertical:\n", vertical_concat)

Concatenación Horizontal

Combina los DataFrames uno al lado del otro.

# Concatenar horizontalmente horizontal_concat = pd.concat([df3, df4], axis=1) print("Concatenación Horizontal:\n", horizontal_concat)

¿Cómo funciona la función join()?

La función join() permite combinar DataFrames en función del índice o una columna clave, similar a merge(), pero más simplificado para uniones basadas en índices.

Join con Índice

Combina DataFrames utilizando el índice como la clave de unión.

# Crear DataFrames de ejemplo con índices df5 = pd.DataFrame({ 'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2'] }, index=['K0', 'K1', 'K2']) df6 = pd.DataFrame({ 'C': ['C0', 'C1', 'C2'], 'D': ['D0', 'D1', 'D2'] }, index=['K0', 'K2', 'K3']) # Realizar un join joined = df5.join(df6, how='inner') print("Join con Índice:\n", joined)