Manejar datos tabulares de forma eficiente es una habilidad esencial en la mayoría de los análisis de datos. Sin embargo, las estructuras tradicionales con filas y columnas simples a menudo no son suficientes para capturar algunas relaciones complejas presentes en muchos conjuntos de datos. En estos casos, los índices jerárquicos en Pandas, también conocidos como índices multinivel, se convierten en una herramienta imprescindible. Estos índices permiten organizar y estructurar los datos de manera más flexible, facilitando tareas avanzadas como agrupaciones, creación de tablas pivote y transformaciones complejas.
En esta entrada, se explicará cómo crear y manipular índices jerárquicos utilizando las funciones df.set_index() y df.unstack() de Pandas. Enseñando a resolver problemas comunes, como reorganizar datos para un análisis más detallado o realizar cálculos específicos en diferentes niveles de un índice.
Tabla de contenidos
Al trabajar con datos tabulares, generalmente se dispone de columnas que representan características y filas que contienen los registros. Por ejemplo, una tabla que registre las ventas de productos en distintas regiones y fechas podría incluir columnas como Región, Fecha, Producto y Ventas. Esta estructura es suficiente para realizar análisis básicos. Sin embargo, cuando se busca realizar análisis más avanzados, como comparar ventas por región y producto o identificar tendencias temporales, es necesario reorganizar los datos para reflejar relaciones jerárquicas entre ellos.
Sin un índice jerárquico, estos análisis requerirían varios pasos adicionales que pueden llegar a ser complicados e ineficientes. Afortunadamente, Pandas simplifica significativamente estas tareas mediante el uso de índices jerárquicos y funciones como set_index() y unstack(), que permiten estructurar los datos de manera más flexible y adaptada a diferentes requerimientos.
df.set_index() y df.unstack()Antes de aprender a crear índices jerárquicos con df.set_index() y a reorganizarlos con df.unstack(), es importante comprender el concepto y su utilidad en la manipulación de datos complejos.
Un índice jerárquico, o índice multinivel, es una estructura que organiza los datos en múltiples niveles de índices. Esto permite acceder, analizar y organizar la información de manera más intuitiva y eficiente, especialmente en conjuntos de datos con relaciones complejas. Cada nivel del índice funciona como una dimensión adicional que describe aspectos específicos de los datos, lo que proporciona mayor flexibilidad para realizar fácilmente algunas operaciones avanzadas.
Además de mejorar la organización, los índices jerárquicos también permiten que ciertas operaciones sean más rápidas y expresivas. Por ejemplo, es mucho más sencillo trabajar con datos ya agrupados en niveles jerárquicos que realizar filtrados repetitivos sobre un DataFrame convencional. Simplificando tareas como agrupaciones, filtrados y cálculos específicos dentro de un nivel del índice.
Un índice jerárquico puede estar compuesto por uno o más niveles, donde cada nivel actúa como una capa adicional de información. Estos niveles se dividen en:
Esta estructura jerárquica es ideal para trabajar con datos complejos y realizar análisis detallados de forma eficiente.
df.set_index()La función set_index() permite convertir una o más columnas de un DataFrame en un índice jerárquico. Organizando los datos en múltiples niveles y proporcionando una estructura más flexible para operaciones posteriores. La sintaxis básica de esta función es:
df.set_index(keys, drop=True, inplace=False)
keys: Columnas que se usarán como índices.drop: Si es True, elimina las columnas seleccionadas del DataFrame.inplace: Si es True, realiza la operación directamente en el DataFrame original.df.unstack()La función unstack() pivota uno de los niveles del índice jerárquico para convertirlo en columnas. Esto transforma los datos de un formato largo a uno ancho, útil en tablas resumen o análisis comparativo. La sintaxis básica de esta función es:
df.unstack(level=-1)
level: Nivel del índice que se quiere pivotar. El valor por defecto es el nivel más interno (-1).Una vez explicadas las funciones de Pandas para trabajar con índices jerárquicos, es útil explorar algunos casos prácticos en los que estas funciones son particularmente útiles.
set_index()Para trabajar con índices jerárquicos es necesario contar con un conjunto de datos. Como el conjunto de datos de ventas que se muestra a continuación:
import pandas as pd
# Crear DataFrame
data = {
'Región': ['Norte', 'Norte', 'Sur', 'Sur'],
'Fecha': ['2023-01-01', '2023-01-02', '2023-01-01', '2023-01-02'],
'Producto': ['A', 'B', 'A', 'B'],
'Ventas': [100, 200, 150, 300]
}
df = pd.DataFrame(data)
print(df) Región Fecha Producto Ventas
0 Norte 2023-01-01 A 100
1 Norte 2023-01-02 B 200
2 Sur 2023-01-01 A 150
3 Sur 2023-01-02 B 300
Ahora, para analizar las ventas por región y fecha, se puede crear un índice jerárquico:
# Crear índice jerárquico df_indexed = df.set_index(['Región', 'Fecha']) print(df_indexed)
Producto Ventas
Región Fecha
Norte 2023-01-01 A 100
2023-01-02 B 200
Sur 2023-01-01 A 150
2023-01-02 B 300
Obteniendo como resultado una tabla jerárquica en la que los datos están organizados por región y fecha. Esta estructura no solo mejora la organización, sino que también facilita realizar diversos análisis de manera más eficiente y clara.
unstack()Ahora, supongamos que se desean comparar las ventas por fecha para cada una de las regiones. Para ello se puede usar unstack(), lo que permite crear una tabla pivote con el nivel de Fecha en columnas:
# Pivotar el nivel de Fecha df_unstacked = df_indexed.unstack(level='Fecha') print(df_unstacked)
Producto Ventas
Fecha 2023-01-01 2023-01-02 2023-01-01 2023-01-02
Región
Norte A B 100 200
Sur A B 150 300
Creando una tabla donde cada columna representa una fecha y cada fila corresponde a una región. Esta disposición permite comparar las ventas de forma clara y directa entre diferentes regiones y periodos.
Los índices jerárquicos se pueden utilizar para la realización de cálculos agrupados. Por ejemplo, para calcular el total de ventas por región:
# Calcular total de ventas por región ventas_por_region = df_indexed.groupby(level='Región')['Ventas'].sum() print(ventas_por_region)
Región
Norte 300
Sur 450
Name: Ventas, dtype: int64
En este caso, el índice jerárquico facilita las agrupaciones al identificar automáticamente los niveles relevantes.
El uso de índices jerárquicos en Pandas es una herramienta para organizar y analizar datos complejos. Las funciones set_index() y unstack() permiten crear estructuras flexibles y realizar transformaciones avanzadas con gran facilidad. Dominar estas técnicas, permite abordar problemas complejos de análisis de datos con menos esfuerzo y una mayor eficiencia.
“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…
Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…
Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…
Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…
En el octavo aniversario de Analytics Lane seguimos ampliando nuestro laboratorio de aplicaciones interactivas y,…
Hoy, 2 de mayo de 2026, Analytics Lane cumple exactamente ocho años. Todo empezó con…
This website uses cookies.