Skip to content
Tutoriales
Pandas
Pandas Unstack: Explicación Clara

Pandas Unstack: Explicación Clara

Pandas es una poderosa biblioteca de manipulación de datos en Python que proporciona estructuras de datos flexibles y eficientes. Una de las características más útiles de Pandas es la capacidad de remodelar los datos de varias formas para adaptarse a tus necesidades de análisis. Este artículo se centrará en la función unstack(), un método que se utiliza con frecuencia pero no siempre se comprende completamente.

La función unstack() en Pandas se utiliza para remodelar un data frame. Es parte de un grupo más amplio de métodos que se utilizan para pivotar los data frames entre formatos largo y ancho. Comprender cómo utilizar unstack() de manera efectiva puede mejorar en gran medida tus capacidades de manipulación de datos en Pandas.

¿Quieres crear rápidamente visualizaciones de datos a partir de un dataframe de Python Pandas sin código?

PyGWalker es una biblioteca de Python para el análisis exploratorio de datos con visualización. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis y visualización de datos en el Jupyter Notebook, convirtiendo tu dataframe de pandas (y dataframe de polars) en una interfaz de usuario similar a Tableau para la exploración visual.

PyGWalker para visualización de datos (opens in a new tab)

¿Qué hace unstack() en Pandas?

La función unstack() en Pandas se utiliza para remodelar un data frame. Es un método que "pivotar" un DataFrame desde un formato largo (o apilado) a un formato ancho. Básicamente mueve los datos de las filas a las columnas, proporcionando una nueva vista de tus datos.

Por ejemplo, considera un DataFrame con índices de varios niveles. La función unstack() puede mover los datos de un nivel interno del índice de filas a los encabezados de las columnas, creando efectivamente una tabla dinámica. Esto puede ser especialmente útil cuando se trabaja con índices jerárquicos, ya que te permite reorganizar tus datos de una manera más propicia para ciertos tipos de análisis.

¿Cómo hacer unstack en Pandas?

La realización de unstack en Pandas es sencilla una vez que entiendes el concepto. La función unstack() se llama en un objeto DataFrame y toma un argumento opcional: el nivel para "desapilar" o pivotar.

Si no se especifica un nivel, la función unstack() desapilará el último nivel del índice del DataFrame. Si deseas desapilar un nivel diferente, puedes especificarlo mediante su número de índice o su nombre.

Aquí tienes un ejemplo básico:

import pandas as pd
 
## Crea un DataFrame con índices múltiples
índice = pd.MultiIndex.from_tuples([(i, j) for i in ['A', 'B', 'C'] for j in ['x', 'y', 'z']])
df = pd.DataFrame({'Datos': range(9)}, index=índice)
 
## Desapila el DataFrame
df_desapilado = df.unstack()
 
print(df_desapilado)

En este ejemplo, la función unstack() pivota el último nivel del índice ('x', 'y', 'z') en los encabezados de las columnas, creando efectivamente una tabla dinámica.

¿Cuál es el nivel de unstack?

El nivel en unstack() se refiere al nivel o niveles del índice que deseas desapilar o pivotar. En un DataFrame con un índice de varios niveles, los niveles se numeran desde el nivel más externo (0) hasta el nivel más interno.

Cuando llamas a unstack(), puedes especificar el nivel que deseas desapilar. Si no se especifica un nivel, unstack() desapilará el último (o más interno) nivel del índice.

Por ejemplo, en un DataFrame con un índice de múltiples niveles de ['A', 'B', 'C'] y ['x', 'y', 'z'], el nivel de 'A', 'B', 'C' es 0 (el nivel más externo), y el nivel de 'x', 'y', 'z' es 1.

¿Cuándo usar unstack() con pivot() en Pandas?

La función unstack() y la función pivot() en Pandas se utilizan para remodelar datos, pero sirven para propósitos ligeramente diferentes y se utilizan en escenarios diferentes.

La función unstack() se utiliza cuando tienes un DataFrame con un índice de varios niveles y deseas mover uno o más niveles del índice a los encabezados de las columnas. Esto es útil cuando tienes datos jerárquicos y deseas reorganizar tus datos para facilitar su análisis.

Por otro lado, la función pivot() se utiliza cuando deseas remodelar tus datos en función de los valores de las columnas. Te permite transformar o remodelar los datos desde un formato largo a un formato ancho. Se utiliza con frecuencia cuando tienes medidas repetidas para los mismos sujetos y deseas obtener cada sujeto en su propia línea con cada medida en una columna separada.

Aquí tienes un ejemplo de cómo puedes usar tanto unstack() como pivot() en el mismo análisis:

import pandas as pd
 
## Crea un DataFrame
df = pd.DataFrame({
    'fecha': pd.date_range(start='2023-01-01', periods=3),
    'país': ['EE. UU.', 'Reino Unido', 'CA'] * 3,
    'producto': ['A', 'B', 'C'] * 3,
    'ventas': range(1, 10)
})
 
## Pivotar el DataFrame
df_pivot = df.pivot(index='fecha', columns='país', values='ventas')
 
## Desapilar el DataFrame
df_desapilado = df.set_index(['fecha', 'país']).unstack('país')
 
print(df_pivot)
print(df_desapilado)

En este ejemplo, primero usamos pivot() para obtener cada país en su propia columna, con las ventas como valores. Luego usamos unstack() para lograr el mismo resultado, pero moviendo el nivel 'país' del índice a los encabezados de las columnas.

En conclusión, si utilizar unstack() o pivot() depende de la estructura de tus datos y de la operación de remodelación específica que deseas realizar. Ambos son herramientas poderosas para remodelar datos en Pandas, y comprender cómo usarlos de manera efectiva puede mejorar en gran medida tus capacidades de análisis de datos.

Conclusión

Dominar el arte de desapilar en Pandas puede mejorar significativamente tus capacidades de manipulación de datos. La función unstack() es una herramienta poderosa que te permite pivotar los datos de filas a columnas, proporcionando una nueva perspectiva de tus datos. Ya sea que estés lidiando con índices jerárquicos o quieras pivotar un nivel de tu DataFrame, unstack() es una función que debería estar en el arsenal de cada analista de datos. Con el conocimiento y ejemplos proporcionados en este artículo, estás preparado para empezar a desapilar tus propios DataFrames en Pandas. ¡Feliz desapilado!

Preguntas frecuentes (FAQs)

¿Qué hace unstack() en pandas?

La función unstack() en Pandas se utiliza para remodelar un DataFrame. Es un método que "pivotar" un DataFrame desde un formato largo (o apilado) a un formato ancho. Básicamente mueve los datos de filas a columnas, proporcionando una nueva vista de tus datos.

¿Cómo desapilar datos en pandas?

Desapilar datos en Pandas es sencillo una vez que entiendes el concepto. La función unstack() se llama en un objeto DataFrame y toma un argumento opcional: el nivel a "desapilar" o pivotar. Si no se especifica ningún nivel, la función unstack() desapilará el último nivel del índice del DataFrame. Si deseas desapilar un nivel diferente, puedes especificarlo ya sea por su número de índice o por su nombre.

¿Cuándo usar unstack() con pivot() en pandas?

La función unstack() y la función pivot() en Pandas se utilizan para remodelar datos, pero sirven para diferentes propósitos y se utilizan en diferentes escenarios. La función unstack() se utiliza cuando tienes un DataFrame con un índice de varios niveles y deseas mover uno o más niveles del índice a los encabezados de las columnas. La función pivot() se utiliza cuando deseas remodelar tus datos basándote en los valores de las columnas.