• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
      • Ajuste de Curvas
      • Calculadora de Matrices
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Uso de índices jerárquicos en Pandas: Domina df.set_index() y df.unstack()

Pandas

diciembre 9, 2024 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 5 minutos

pandas

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

  • 1. La necesidad de los índices jerárquicos en Pandas
  • 2. Uso de índices jerárquicos en Pandas: las funciones df.set_index() y df.unstack()
    • 2.1. ¿Qué es un índice jerárquico?
    • 2.2. Crear un índice jerárquico con df.set_index()
    • 2.3. Organizar datos con df.unstack()
  • 3. Casos prácticos de índices jerárquicos en Pandas
    • 3.1. Crear un índice jerárquico con set_index()
    • 3.2. Transformar datos con unstack()
    • 3.3. Combinando índices jerárquicos y operaciones avanzadas
  • 4. Conclusiones

La necesidad de los índices jerárquicos en Pandas

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.

Desbalanceo de Clases en Credit Scoring: Por Qué Usamos Ponderación en lugar de Undersampling
En Analytics Lane
Desbalanceo de Clases en Credit Scoring: Por Qué Usamos Ponderación en lugar de Undersampling

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.

Uso de índices jerárquicos en Pandas: las funciones 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.

Publicidad


¿Qué es un índice jerárquico?

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:

  • Índices externos: Representan el nivel más alto de agrupación, como una región geográfica.
  • Índices internos: Proporcionan detalles más específicos dentro de un grupo externo, como fechas o productos individuales dentro de una región.

Esta estructura jerárquica es ideal para trabajar con datos complejos y realizar análisis detallados de forma eficiente.

Crear un índice jerárquico con 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.

Organizar datos con 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).

Publicidad


Casos prácticos de índices jerárquicos en Pandas

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.

Crear un índice jerárquico con 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.

Transformar datos con 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.

Publicidad


Combinando índices jerárquicos y operaciones avanzadas

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.

Conclusiones

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.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Desbalanceo de Clases en Credit Scoring: Por Qué Usamos Ponderación en lugar de Undersampling
  • Por Qué las Contraseñas Largas son más Seguras que las Complejas
  • Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción
  • Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring
  • Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)
  • BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas
  • Curiosidad: De dónde vienen foo, bar y foobar
  • Curiosidad: El “bug”, la polilla y la leyenda de Grace Hopper
  • Curiosidad: Por qué la criptografía habla siempre de Alice y Bob

Publicado en: Python Etiquetado como: Pandas

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Curiosidad: Por qué la criptografía habla siempre de Alice y Bob

septiembre 3, 2026 Por Daniel Rodríguez

Desbalanceo de Clases en Credit Scoring: Por Qué Usamos Ponderación en lugar de Undersampling

septiembre 1, 2026 Por Daniel Rodríguez

Curiosidad: El “bug”, la polilla y la leyenda de Grace Hopper

agosto 27, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • El método de la bisección e implementación en Python publicado el marzo 11, 2022 | en Ciencia de datos
  • Excel en Python Guardar y leer archivos Excel en Python publicado el julio 30, 2018 | en Python
  • Eliminar la protección en archivos Excel publicado el mayo 30, 2018 | en Herramientas
  • Logitech MX Keys y Master 3 Revisión del Logitech MX Master 3 publicado el mayo 6, 2022 | en Reseñas
  • Gráfica con los datos y las anomalías detectadas con OneClass SVM One-Class SVM: Detección de anomalías con máquinas de vector soporte publicado el marzo 15, 2024 | en Ciencia de datos

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • Daniel Rodríguez en Los récords con asterisco, o la épica del titular sin contexto – El bestiario de los indicadores económicos absurdos (parte 8 y final)
  • Juan en Los récords con asterisco, o la épica del titular sin contexto – El bestiario de los indicadores económicos absurdos (parte 8 y final)
  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto