Unir y transformar tablas

Mapa conceptual
- Python para Datos
- Entorno
- pip
- venv
- Reproducibilidad
- Funcional
- Comprensiones
- Lambda
- map filter
- Calidad
- try except
- pytest
- Asserts
- NumPy
- Arrays
- Broadcasting
- Indexacion
- Pandas
- DataFrame
- Groupby
- Merge Join
- Entorno
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
- inner: solo las claves presentes en ambas tablas.
- left: conserva todas las filas de la izquierda, con NaN donde la otra no tenga pareja.
- right y outer: simétricos y completo, respectivamente.
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.
| Situación | Herramienta | Efecto |
|---|---|---|
| Añadir filas del mismo esquema | concat(axis=0) | más largo |
| Añadir columnas alineadas | concat(axis=1) | más ancho |
| Unir por una clave común | merge(on=...) | ancho enriquecido |
| Conservar aunque falte pareja | merge(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
- Datos mensuales en columnas que quieres analizar como serie: melt a largo.
- Un listado de transacciones que quieres ver como tabla por categoría y mes: pivot_table.
- Preparar un informe: pivot; preparar para agrupar o graficar: melt.
Errores frecuentes
- Unir sin comprobar la unicidad de la clave y duplicar filas sin darse cuenta.
- Elegir inner cuando se necesitaban las filas no coincidentes, perdiendo datos en silencio.
- Confundir concat (apilar) con merge (relacionar por clave).
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:
Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.
Pandas DocsGuí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.
Tu texto se guarda sólo en este dispositivo.
Documentacion pandasGuia de referencia para manipulacion de datos en Python.
Comentarios
Inicia sesión para comentar.
Todavía no hay comentarios. Sé la primera persona en opinar.