Fusión de DataFrames con Pandas: merge, concat y join
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
# CrearDataFrames 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.
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.
# CrearDataFrames 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)
Les dejo los DataFrames que la profesora utiliza en la clase:
# Ejercicios con merge()df1 = pd.DataFrame({'key':['A','B','C'],'value1':[1,2,3]})df2 = pd.DataFrame({'key':['B','C','D'],'value2':[4,5,6]})# Ejercicios con concat()df3 = pd.DataFrame({'A':['A0','A1','A2'],'B':['B0','B1','B2'],})df4 = pd.DataFrame({'A':['A3','A4','A5'],'B':['B3','B4','B5'],})# Ejercicios con join()df5 = pd.DataFrame({'A':['A0','A1','A2'],'B':['B0','B1','B2']}, index =['K0','K1','K2'])df6 = pd.DataFrame({'C':['C0','C1','C2'],'D':['DO','D1','D2']}, index =['K0','K2','K3'])
Espero este aporte les sea de ayuda 💚.
gracias
muchas gracias :3
La fusión de **DataFrames** en **Pandas** es una operación clave para combinar datos de diferentes fuentes, similar a las uniones de tablas en SQL. Se puede realizar de diferentes maneras, dependiendo de cómo deseas combinar los conjuntos de datos. Las funciones principales para fusionar son merge(), join(), y concat().
### 1. **merge() para fusionar DataFrames**
El método merge() es el más común para fusionar dos **DataFrames** basándose en una o más columnas o índices en común. Ofrece varias opciones de tipo de unión (join), como **inner**, **outer**, **left**, y **right**.
#### Tipos de uniones:
- **Inner join**: Devuelve solo las filas que tienen correspondencias en ambos DataFrames.
- **Left join**: Devuelve todas las filas del DataFrame izquierdo y solo las que coinciden del DataFrame derecho.
- **Right join**: Devuelve todas las filas del DataFrame derecho y solo las que coinciden del DataFrame izquierdo.
- **Outer join**: Devuelve todas las filas de ambos DataFrames, completando con NaN donde no haya correspondencias.
  id nombre ciudad ventas
03JuanValencia20014LucíaBarcelona150
### 3. **concat() para concatenar DataFrames**
El método concat() se utiliza para apilar DataFrames uno encima del otro (unión vertical) o uno al lado del otro (unión horizontal).
#### Concatenación vertical (por filas):
\# Crear dos DataFrames de ejemplo
df1 = pd.DataFrame({  'id': \[1, 2],  'nombre': \['Ana', 'Pedro']})df2 = pd.DataFrame({  'id': \[3, 4],  'nombre': \['Juan', 'Lucía']})
\# Concatenar los DataFrames por filas
df\_concat = pd.concat(\[df1, df2], axis=0)print(df\_concat)
**Resultado:**
  id nombre
01Ana12Pedro03Juan14Lucía
#### Concatenación horizontal (por columnas):
\# Crear dos DataFrames de ejemplo con el mismo número de filas
df3 = pd.DataFrame({  'edad': \[25, 30],  'ciudad': \['Madrid', 'Barcelona']})
\# Concatenar por columnas
df\_concat\_cols = pd.concat(\[df1, df3], axis=1)print(df\_concat\_cols)
**Resultado:**
  id nombre edad ciudad
01Ana25Madrid12Pedro30Barcelona
### 4. **join() para combinar DataFrames basados en el índice**
El método join() se utiliza para combinar DataFrames usando sus índices en lugar de una columna específica. Esto es útil cuando ya tienes índices bien definidos en los DataFrames.
#### Ejemplo:
\# Crear dos DataFrames con índices
df1 = pd.DataFrame({  'nombre': \['Ana', 'Pedro'],  'edad': \[25, 30]}, index=\['A','B'])df2 = pd.DataFrame({  'ciudad': \['Madrid', 'Barcelona'],  'ventas': \[100, 200]}, index=\['A','B'])
\# Hacer join usando el índice
df\_join = df1.join(df2)print(df\_join)
**Resultado:**
  nombre edad ciudad ventas
AAna25Madrid100BPedro30Barcelona200
#### Usando join() con diferentes índices:
Si los índices no coinciden, puedes usar el argumento how para especificar el tipo de unión (por defecto es left).
  nombre edad ciudad ventas
AAna25.0Madrid100.0BPedro30.0Barcelona200.0CNaNNaNSevilla150.0DNaNNaNValencia250.0
### Resumen de funciones:
- **merge()**: Fusiona dos DataFrames basado en columnas comunes, con soporte para diferentes tipos de uniones (inner, outer, left, right).
- **concat()**: Concatenación de DataFrames por filas (vertical) o columnas (horizontal).
- **join()**: Combina DataFrames usando índices, con soporte para diferentes tipos de uniones.
Estas operaciones son útiles para consolidar datos de diferentes fuentes y reorganizar la información de manera eficiente. Si tienes algún caso específico o necesitas más detalles, ¡déjame saber!
Buenas clases pero no entendí el desafío de como hacer uso de la fusión de Dataframes al nuestro df Retail. El método trata de unir más de dos dataframes y el Retail solo es uno solo df.
Aquí están los seis DataFrames:
df1 = pd.DataFrame({
'key': ['A', 'B', 'C'],
'value1': [1,2,3]
})
df2 = pd.DataFrame({
'key': ['B', 'C', 'D'],
'value2': [4,5,6]
})
df3 = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2'],
})
df4 = pd.DataFrame({
'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5'],
})
df5 = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
}, index = ['K0', 'K1', 'K2'])
df6 = pd.DataFrame({
'C': ['C0', 'C1', 'C2'],
'D': ['DO', 'D1', 'D2']
}, index = ['K0', 'K2', 'K3'])
el codigo que deja esta clase en los archivos no esta acorde a lo practicadpo
El merge me recordo mucho a las operaciones que se hacen con conjuntos
Incluye todas las filas de df2 y las filas coincidentes de df1.
Resultado:
key value1 value2
0 B 2.0 4
1 C 3.0 5
2 D NaN 6
6. Concatenación Vertical
vertical_concat = pd.concat([df3, df4])
print(vertical_concat)
Descripción:
Concatena dos DataFrames, df3 y df4, de forma vertical.
Resultado:
A B
0 A0 B0
1 A1 B1
2 A2 B2
0 A3 B3
1 A4 B4
2 A5 B5
7. Concatenación Horizontal
horizontal_concat = pd.concat([df3, df4], axis=1)
print(horizontal_concat)
Descripción:
Concatena df3 y df4 de forma horizontal.
Resultado:
A B A B
0 A0 B0 A3 B3
1 A1 B1 A4 B4
2 A2 B2 A5 B5
8. Operación Join
joined = df5.join(df6, how='inner')
print(joined)
Descripción:
Realiza un inner join entre df5 y df6 utilizando sus índices.
Resultado:
A B C D
K0 A0 B0 C0 D0
K2 A2 B2 C1 D1
Gracias por las informaciones, pero hubiese sido mucho mejor con usos en dataFrames.
La fusión de DataFrames en pandas es un proceso esencial para combinar datos de diferentes fuentes en un solo DataFrame. Este proceso es crucial en la manipulación de datos y en el análisis porque permite integrar información dispersa para un análisis más completo.
Mis Apuntes:
Importancia de la Fusión de DataFrames
Integración de Datos:
Unificación: Permite combinar datos que están en diferentes DataFrames pero que comparten una o más columnas comunes. Por ejemplo, fusionar datos de ventas con datos de clientes basados en una columna de ID de cliente.
Enriquecimiento: Añade información adicional a un DataFrame principal, lo que permite un análisis más enriquecido. Por ejemplo, agregar detalles de productos a un DataFrame de ventas para obtener un contexto adicional.
Análisis Completo:
Combinación de Información: Facilita el análisis de datos combinando diferentes aspectos del mismo problema o contexto. Por ejemplo, combinar datos de transacciones con datos de stock para evaluar el rendimiento de productos.
Contextualización: Proporciona una vista más completa al combinar datos relacionados, lo que ayuda a identificar patrones y relaciones entre variables.
pendiente por realizar para entender ssu funcionalidada para la toma de decisiones y aplicacion con un objetivo claro de toma de decisiones
saludos
MOdelo coworcountry o modelo coworculture con muchas actividades para pausas activas y acompañamiento de tu rol profesional Recuerda que Estamos enfocados en atender y brindar espacios para nomadas digitales, teletrabajo y coworking space en Agrolenials Paradise Ecohostel Country Inns contacto directo whatsapp +573206299333 y Faccebook
import pandas as pd
# --- 1. PREPARACIÓN DE DATOS (Simulando mi Retail) ---
print("--- Resultado de JOIN (Catálogo con metas) ---")
print(df_con_metas)
Por suerte estos métodos ya los conozco gracias a que trabajo con PLSQL de Oracle jaja
No se si es asombroso o me da meido
Esta clase se facilita mucho si ya tienes conocimientos previos en bases de datos
En los DataFrames de Pandas, los nombres de las columnas deben ser únicos para evitar confusiones al acceder a los datos. Sin embargo, los índices pueden no ser únicos; puedes tener índices duplicados, lo cual puede complicar ciertas operaciones. Es recomendable tener índices únicos para facilitar la manipulación y análisis de datos. Esto se relaciona con la importancia de la organización y limpieza de datos, un aspecto clave en el análisis de datos que se ha tratado en tu curso.
Si alguien se confundió aquí y no ha estudiado SQL, revise los JOIN en SQL, eso lo guiará muy bien. Es pura teoría de conjuntos.
Cuando se utilizan joins en Pandas y hay columnas coincidentes, el resultado dependerá del tipo de join que se esté utilizando:
Inner Join: Solo se incluirán las filas donde las columnas coinciden en ambos DataFrames.
Outer Join: Se incluirán todas las filas de ambos DataFrames. Las filas que no tienen coincidencias se llenarán con NaN.
Left Join: Se incluirán todas las filas del DataFrame de la izquierda y solo las coincidencias del de la derecha. Los valores no coincidentes se llenarán con NaN.
Right Join: Similar al left, pero incluye todas las filas del DataFrame de la derecha.
Estos métodos permiten combinar datos de manera efectiva.
El on='key' especifica la columna 'key' que se usará para buscar coincidencias entre df1 y df2. El how='inner' indica que solo se incluirán las filas donde hay coincidencias en ambas tablas, es decir, sólo las filas que tienen el mismo valor en la columna 'key'. Esto resulta en un DataFrame que combina datos de ambos DataFrames solo para las claves coincidentes.
La plataforma es excelente y la maestra también, pero el curso parece hecho con miedo, con desconfianza a los alumnos; si va a haber este mismo curso en nivel dos, entonces entendería... igual hay varios "errorcitos" a lo largo del curso"