Python
Pandas Unstack: Una guía para principiantes sobre la remodelación de datos

Pandas Unstack: Una guía para principiantes sobre la remodelación de datos

MoeNagy Dev

Comprensión de unstack en pandas

Explicación de unstack en pandas

¿Qué es unstack en pandas?

unstack() es una función de pandas que transforma un DataFrame de un formato largo a un formato ancho. Toma un índice de columna de varios niveles y lo "desenrolla", creando un nuevo DataFrame con uno o más niveles de índice que se convierten en columnas.

¿En qué se diferencia de pivot y melt?

La función unstack() es similar a la función pivot(), pero sirven para diferentes propósitos. pivot() se utiliza para remodelar datos de formato largo a formato ancho, mientras que unstack() se utiliza para remodelar datos de formato ancho a formato largo.

La función melt(), por otro lado, se utiliza para transformar datos de formato ancho a formato largo, que es lo contrario de lo que hace unstack().

¿Cuándo usar unstack en pandas?

Deberías usar unstack() cuando tengas un DataFrame con un índice de columna de varios niveles y quieras transformarlo en un formato amplio, donde los niveles del índice de columna se conviertan en nuevas columnas en el DataFrame.

Preparación de los datos

Importación de las bibliotecas necesarias

import pandas as pd
import numpy as np

Creación de un DataFrame de muestra

# Crear un DataFrame de muestra
data = {
    ('Tienda A', 'Ventas'): [100, 120, 80, 90, 110],
    ('Tienda A', 'Beneficio'): [20, 25, 15, 18, 22],
    ('Tienda B', 'Ventas'): [150, 180, 120, 160, 200],
    ('Tienda B', 'Beneficio'): [30, 35, 25, 32, 40]
}
 
df = pd.DataFrame(data)

Explorar la estructura del DataFrame

print(df)
           (Tienda A, Ventas)  (Tienda A, Beneficio)  (Tienda B, Ventas)  (Tienda B, Beneficio)
0                      100                 20               150                 30
1                      120                 25               180                 35
2                       80                 15               120                 25
3                       90                 18               160                 32
4                      110                 22               200                 40

Como se puede ver, el DataFrame tiene un índice de columna de varios niveles, donde el primer nivel representa la tienda y el segundo nivel representa la métrica (Ventas o Beneficio).

Conceptos básicos de unstack en pandas

Desenrollando un índice de un solo nivel

Para desenrollar un índice de un solo nivel, puedes utilizar la función unstack() sin argumentos:

df_desenrollado = df.unstack()
print(df_desenrollado)
                 Ventas        Beneficio
                 Tienda A Tienda B Tienda A Tienda B
0                    100     150       20       30
1                    120     180       25       35
2                     80     120       15       25
3                     90     160       18       32
4                    110     200       22       40

El DataFrame resultante tiene los nombres de las tiendas como índice de columna, y los nombres de columna originales (Ventas y Beneficio) se han convertido en el índice de las filas.

Desenrollando un índice de varios niveles

Si el DataFrame tiene un índice de columna de varios niveles, puedes especificar el nivel a desenrollar:

df_desenrollado = df.unstack(level=0)
print(df_desenrollado)
                  (Ventas, Tienda A)  (Ventas, Tienda B)  (Beneficio, Tienda A)  (Beneficio, Tienda B)
0                             100               150                 20                 30
1                             120               180                 25                 35
2                              80               120                 15                 25
3                              90               160                 18                 32
4                             110               200                 22                 40

En este caso, los nombres de las tiendas se han convertido en el índice de columna, y los nombres de columna originales (Ventas y Beneficio) ahora forman parte del índice de columna de varios niveles.

Comprensión de la estructura del DataFrame resultante

El DataFrame desenrollado tiene un índice de columna de varios niveles, donde el primer nivel representa los nombres de columna originales, y el segundo nivel representa los valores que antes estaban en el índice de la columna.

Esta estructura puede ser útil para ciertos tipos de análisis y visualizaciones de datos, ya que te permite acceder y manipular fácilmente los datos de diferentes formas.

Manejo de datos faltantes en unstack en pandas

Tratando con valores NaN

Si hay valores faltantes en el DataFrame original, la función unstack() introducirá valores NaN en el DataFrame resultante:

# Agregar algunos valores faltantes al DataFrame de muestra
data = {
    ('Tienda A', 'Ventas'): [100, 120, 80, np.nan, 110],
    ('Tienda A', 'Beneficio'): [20, 25, 15, 18, 22],
    ('Tienda B', 'Ventas'): [150, 180, 120, 160, 200],
    ('Tienda B', 'Beneficio'): [30, 35, 25, 32, np.nan]
}
 
df = pd.DataFrame(data)
df_desenrollado = df.unstack()
print(df_desenrollado)
                 Ventas        Beneficio
                 Tienda A Tienda B Tienda A Tienda B
0                    100     150       20     30.0
1                    120     180       25     35.0
2                     80     120       15     25.0
3                    NaN     160       18     32.0
4                    110     200       22      NaN

Se puede ver que los valores faltantes en el DataFrame original se han transferido al DataFrame desenrollado.

Rellenando valores faltantes

Para manejar los valores faltantes, puedes utilizar el método fillna() para reemplazarlos con un valor específico:

df_desenrollado = df.unstack().fillna(0)
print(df_desenrollado)
                 Ventas        Beneficio
                 Tienda A Tienda B Tienda A Tienda B

Por favor proporciona la traducción al español para este archivo markdown. Si hay un frontmatter, asegúrate de traducir el parámetro de idioma al es correspondiente. No traduzcas el código, sólo traduce los comentarios. No traduzcas el contenido de la muestra de la indicación. Aquí está el archivo: Un problema común con unstack() es que puede introducir valores NaN si hay Al entender y aplicar estas técnicas, estarás en camino de convertirte en un programador de Python competente. Recuerda practicar regularmente, experimentar con diferentes ejemplos de código y explorar el vasto ecosistema de bibliotecas y frameworks de Python para ampliar tus conocimientos y habilidades.

¡Feliz codificación!

MoeNagy Dev