Merge en Python Pandas: guía completa para combinar DataFrames
En el análisis de datos con Python Pandas, una tarea fundamental es la combinación de datos. A menudo, tendrás múltiples DataFrames que contienen información relacionada que necesitas integrar para obtener una visión más completa del conjunto de datos. Para realizar estas operaciones de combinación, Pandas proporciona la función pd.merge(), que te permite unir DataFrames de manera similar a las operaciones de bases de datos relacionales.
En este artículo, exploraremos en profundidad la función pd.merge() y te guiaremos a través de diversos ejemplos para que puedas dominar las operaciones de merge o join en Python Pandas.
La función pd.merge() en Python Pandas
La función pd.merge() es la herramienta principal para combinar DataFrames en Pandas. Esta función toma como entrada dos DataFrames y devuelve un nuevo DataFrame que contiene la combinación de datos. La unión se realiza utilizando una o más columnas comunes (claves) entre los DataFrames.
Parámetros Clave de pd.merge()
La función pd.merge() admite una serie de parámetros que te permiten controlar la forma en que se realiza la unión. Algunos de los parámetros más importantes son:
- left: El DataFrame izquierdo que se utilizará en la unión.
- right: El DataFrame derecho que se utilizará en la unión.
- on: Una lista de nombres de columna que se utilizarán como claves de unión. Si no se especifica, Pandas buscará columnas con el mismo nombre en ambos DataFrames.
- how: El tipo de unión que se va a realizar. Los tipos de unión disponibles son:
- left: Conserva todas las filas del DataFrame izquierdo, incluso si no tienen una coincidencia en el DataFrame derecho.
- right: Conserva todas las filas del DataFrame derecho, incluso si no tienen una coincidencia en el DataFrame izquierdo.
- inner: Conserva solo las filas que tienen una coincidencia en ambos DataFrames.
- outer: Conserva todas las filas de ambos DataFrames, incluso si no tienen una coincidencia en el otro DataFrame.
- left_on: Una lista de nombres de columna que se utilizarán como claves de unión en el DataFrame izquierdo.
- right_on: Una lista de nombres de columna que se utilizarán como claves de unión en el DataFrame derecho.
- left_index: Indica si se debe utilizar el índice del DataFrame izquierdo como clave de unión.
- right_index: Indica si se debe utilizar el índice del DataFrame derecho como clave de unión.
- sort: Indica si se deben ordenar las columnas del DataFrame resultante por las claves de unión.
Ejemplos Prácticos de merge en Python Pandas
Para ilustrar cómo funciona pd.merge(), consideraremos varios ejemplos prácticos.
1. Uniones sobre una Clave Común
En este caso, se realiza la unión utilizando una sola columna común como clave.
«`python
import pandas as pd
df1 = pd.DataFrame({‘id’: [1, 2, 3], ‘nombre’: [‘A’, ‘B’, ‘C’], ‘edad’: [25, 30, 28]})
df2 = pd.DataFrame({‘id’: [1, 2, 4], ‘ciudad’: [‘New York’, ‘London’, ‘Paris’], ‘profesión’: [‘Ingeniero’, ‘Doctor’, ‘Artista’]})
merged_df = pd.merge(df1, df2, on=’id’)
print(merged_df)
«`
El código anterior creará un nuevo DataFrame merged_df que contendrá las filas con coincidencia en la columna ‘id’ de ambos DataFrames.
2. Uniones sobre Múltiples Claves
En este ejemplo, se realiza la unión utilizando dos columnas comunes como claves.
«`python
import pandas as pd
df1 = pd.DataFrame({‘id’: [1, 2, 3], ‘nombre’: [‘A’, ‘B’, ‘C’], ‘edad’: [25, 30, 28]})
df2 = pd.DataFrame({‘id’: [1, 2, 4], ‘ciudad’: [‘New York’, ‘London’, ‘Paris’], ‘profesión’: [‘Ingeniero’, ‘Doctor’, ‘Artista’]})
merged_df = pd.merge(df1, df2, on=[‘id’, ‘nombre’])
print(merged_df)
«`
En este caso, la unión se realiza utilizando las columnas ‘id’ y ‘nombre’ como claves.
3. Tipos de Uniones (how)
El parámetro how te permite controlar el tipo de unión que se realiza.
Uniones left:
«`python
import pandas as pd
df1 = pd.DataFrame({‘id’: [1, 2, 3], ‘nombre’: [‘A’, ‘B’, ‘C’], ‘edad’: [25, 30, 28]})
df2 = pd.DataFrame({‘id’: [1, 2, 4], ‘ciudad’: [‘New York’, ‘London’, ‘Paris’], ‘profesión’: [‘Ingeniero’, ‘Doctor’, ‘Artista’]})
merged_df = pd.merge(df1, df2, on=’id’, how=’left’)
print(merged_df)
«`
En este caso, se conservan todas las filas del DataFrame izquierdo (df1) incluso si no hay una coincidencia en el DataFrame derecho (df2).
Uniones right:
«`python
import pandas as pd
df1 = pd.DataFrame({‘id’: [1, 2, 3], ‘nombre’: [‘A’, ‘B’, ‘C’], ‘edad’: [25, 30, 28]})
df2 = pd.DataFrame({‘id’: [1, 2, 4], ‘ciudad’: [‘New York’, ‘London’, ‘Paris’], ‘profesión’: [‘Ingeniero’, ‘Doctor’, ‘Artista’]})
merged_df = pd.merge(df1, df2, on=’id’, how=’right’)
print(merged_df)
«`
En este caso, se conservan todas las filas del DataFrame derecho (df2) incluso si no hay una coincidencia en el DataFrame izquierdo (df1).
Uniones inner:
«`python
import pandas as pd
df1 = pd.DataFrame({‘id’: [1, 2, 3], ‘nombre’: [‘A’, ‘B’, ‘C’], ‘edad’: [25, 30, 28]})
df2 = pd.DataFrame({‘id’: [1, 2, 4], ‘ciudad’: [‘New York’, ‘London’, ‘Paris’], ‘profesión’: [‘Ingeniero’, ‘Doctor’, ‘Artista’]})
merged_df = pd.merge(df1, df2, on=’id’, how=’inner’)
print(merged_df)
«`
En este caso, solo se conservan las filas que tienen una coincidencia en ambos DataFrames (df1 y df2).
Uniones outer:
«`python
import pandas as pd
df1 = pd.DataFrame({‘id’: [1, 2, 3], ‘nombre’: [‘A’, ‘B’, ‘C’], ‘edad’: [25, 30, 28]})
df2 = pd.DataFrame({‘id’: [1, 2, 4], ‘ciudad’: [‘New York’, ‘London’, ‘Paris’], ‘profesión’: [‘Ingeniero’, ‘Doctor’, ‘Artista’]})
merged_df = pd.merge(df1, df2, on=’id’, how=’outer’)
print(merged_df)
«`
En este caso, se conservan todas las filas de ambos DataFrames, incluso si no hay una coincidencia en el otro DataFrame.
4. Uniones con left_on y right_on
En este ejemplo, se realiza la unión utilizando diferentes nombres de columna como claves.
«`python
import pandas as pd
df1 = pd.DataFrame({‘id’: [1, 2, 3], ‘nombre’: [‘A’, ‘B’, ‘C’], ‘edad’: [25, 30, 28]})
df2 = pd.DataFrame({‘clave_id’: [1, 2, 4], ‘ciudad’: [‘New York’, ‘London’, ‘Paris’], ‘profesión’: [‘Ingeniero’, ‘Doctor’, ‘Artista’]})
mergeddf = pd.merge(df1, df2, lefton=’id’, righton=’claveid’)
print(merged_df)
«`
En este caso, se utiliza ‘id’ como clave en el DataFrame izquierdo (df1) y ‘clave_id’ como clave en el DataFrame derecho (df2).
5. Uniones con left_index y right_index
En este ejemplo, se realiza la unión utilizando los índices de los DataFrames como claves.
«`python
import pandas as pd
df1 = pd.DataFrame({‘nombre’: [‘A’, ‘B’, ‘C’], ‘edad’: [25, 30, 28]}, index=[1, 2, 3])
df2 = pd.DataFrame({‘ciudad’: [‘New York’, ‘London’, ‘Paris’], ‘profesión’: [‘Ingeniero’, ‘Doctor’, ‘Artista’]}, index=[1, 2, 4])
mergeddf = pd.merge(df1, df2, leftindex=True, right_index=True)
print(merged_df)
«`
En este caso, el índice del DataFrame izquierdo (df1) se utiliza como clave de unión en el lado izquierdo, y el índice del DataFrame derecho (df2) se utiliza como clave de unión en el lado derecho.
Conclusión
Las operaciones de merge son herramientas esenciales en el análisis de datos con Pandas. La función pd.merge() te permite combinar DataFrames de manera eficiente y flexible. Puedes realizar uniones utilizando una sola o múltiples claves, ajustar el tipo de unión mediante el parámetro how y usar diferentes nombres de columna o índices como claves de unión. Dominar las operaciones de merge te permitirá realizar un análisis de datos más completo e integrado en Python Pandas.
Recuerda que siempre puedes consultar la documentación oficial de Pandas para obtener información más detallada sobre los parámetros de la función pd.merge() y otros aspectos relacionados con las operaciones de merge.
Merge en Python Pandas: Resumen
En este artículo, hemos explorado en profundidad la función pd.merge() de Python Pandas para combinar DataFrames. Hemos cubierto los siguientes aspectos:
- La función
pd.merge(): Su uso y propósito fundamental. - Parámetros clave de
pd.merge():left,right,on,how,left_on,right_on,left_index,right_indexysort. - Ejemplos de merge con una clave, con múltiples claves, y con el argumento
how(left, right, inner, outer). - Uniones utilizando
left_onyright_onpara unir sobre nombres de columna diferentes. - Uniones utilizando
left_indexyright_indexpara unir sobre índices.
Dominar las operaciones de merge en Pandas es crucial para el análisis de datos con Python. Te permite combinar información de diferentes fuentes, realizar análisis integrados y extraer conocimientos más profundos de tus datos.