Programación con Python para Datos · Programación

Unir y transformar tablas

Combinar DataFrames con concat y merge, y reorganizar su forma con melt y pivot.

Unir y transformar tablas

Ilustracion de Python para datos: DataFrame, graficas y arrays de NumPy.
Python para ciencia de datos: NumPy, pandas y manipulacion de datos.

Mapa conceptual

Ensamblar y reorientar Una vez tienes datos limpios por separado, el siguiente paso es ensamblarlos: unir tablas que comparten claves y reorientar las que vienen en la forma equivocada. Aquí es donde el análisis cobra sentido.

concat: apilar

pd.concat apila DataFrames. Con axis=0 añade filas (varios meses del mismo informe); con axis=1 añade columnas lado a lado. Es la operación de «juntar trozos del mismo tipo».

merge: relacionar

pd.merge une dos tablas por el valor de una o más columnas clave, como un JOIN de base de datos. Cada fila de una se empareja con las de la otra que comparten clave, enriqueciendo la información.

Tipos de join

Elegir el join correcto

La pregunta es qué NO quieres perder. Si necesitas cada pedido aunque no puedas completar el cliente, usa left sobre pedidos. Si solo te interesa donde hay datos en ambos lados, inner. El tipo de join decide el número de filas del resultado y, con él, la conclusión.

Cada necesidad de ensamblaje tiene su operación.
SituaciónHerramientaEfecto
Añadir filas del mismo esquemaconcat(axis=0)más largo
Añadir columnas alineadasconcat(axis=1)más ancho
Unir por una clave comúnmerge(on=...)ancho enriquecido
Conservar aunque falte parejamerge(how=left)huecos como NaN

Necesitas una tabla con TODOS los clientes y sus pedidos, incluyendo los clientes que no han pedido nada. ¿Qué merge usas?

Claves con nombres distintos

A veces la columna clave se llama diferente en cada tabla: merge(left_on=id_cliente, right_on=cliente_id) lo resuelve. Tras unir, suelen sobrar columnas duplicadas que conviene descartar.

Peligro de las duplicidades

Si la clave se repite en ambos lados, merge produce el producto de las coincidencias y el resultado crece más de lo esperado. Validar que la clave es única (o entender su granularidad) antes de unir evita tablas infladas.

melt: de ancho a largo

Un DataFrame «ancho» (una columna por mes) es difícil de agrupar. pd.melt lo vuelve «largo»: cada medida pasa a una fila con una columna de variable y otra de valor. Es la forma que prefieren groupby y las librerías de gráficos.

pivot: de largo a ancho

pivot (y pivot_table) hace lo inverso: convierte valores de una columna en cabeceras, cruzando con índices y agregando si hay repetidos. Convierte un listado largo en una matriz legible por celdas.

Cuándo reorientar

Errores frecuentes

pd.merge puede generar más filas que las tablas de origen si la clave de unión está repetida en ambos lados.

Cadena de ensamblaje

Un análisis real suele ser: cargar varias fuentes, limpiar, unir por claves, reorientar y luego agregar. Pensar el pipeline en esas etapas hace que cada operación sea pequeña y verificable.

Asigna cada operación a su propósito:

Apilar
Relacionar
AAncho
ALargo

Pandas Docs
Guía de combinación y reorganización de DataFrames.

Tienes una tabla ancha de ventas por trimestre y una tabla de regiones con su continente. Describe los pasos: ¿reorientarías primero o unirías primero? Justifica el orden según lo que quieras responder.

Documentacion pandas
Guia de referencia para manipulacion de datos en Python.