• 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
    • 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()

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.

La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)
En Analytics Lane
La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)

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

  • La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)
  • Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring
  • Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura
  • Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales
  • Ley de Benford: cómo detectar datos manipulados con ejemplos reales
  • Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar
  • Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos
  • WOE e IV: La Base Matemática del Credit Scoring
  • De la Regresión Logística al Scorecard: La Transformación Matemática

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

La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)

junio 4, 2026 Por Daniel Rodríguez

Calibración vs Discriminación en Credit Scoring: diferencias clave y cómo evaluarlas

junio 2, 2026 Por Daniel Rodríguez

Ley de Benford: cómo detectar datos manipulados con ejemplos reales

mayo 28, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Codificación JSON Archivos JSON con Python: lectura y escritura publicado el julio 16, 2018 | en Python
  • Buscar en Excel con dos o más criterios publicado el septiembre 7, 2022 | en Herramientas
  • Introducción al Análisis de Componentes Principales (PCA) publicado el mayo 3, 2024 | en Ciencia de datos
  • pandas Eliminar las filas con valores nulos en Pandas publicado el abril 24, 2023 | en Python
  • La pantalla del sistema operativo anfitrión no se adapta al de la pantalla en VirtualBox Configuración del tamaño de pantalla en VirtualBox publicado el noviembre 11, 2022 | en Herramientas

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.1 (11)

Aplicar el método D’Hondt en Excel

Comentarios recientes

  • 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
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria

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