Pandas GroupBy – Desapilar

Pandas Unstack es una función que gira el nivel de las columnas indexadas en un marco de datos apilado. Un marco de datos apilado suele ser el resultado de una función groupby agregada en pandas. Stack() establece las columnas en un nuevo nivel de jerarquía, mientras que Unstack() gira la columna indexada. Hay diferentes formas de desapilar un marco de datos de pandas que se discutirán en los métodos a continuación.

Método 1: desapilado general del marco de datos de pandas en varios niveles usando unstack()

La agregación Groupby en un marco de datos generalmente devuelve un objeto de marco de datos apilado, de varios niveles según el modelo de agregación.

Python3

# import the python pandas package
import pandas as pd
# create a sample dataframe
data = pd.DataFrame({"cars": ["bmw", "bmw", "benz", "benz"],
                     "sale_q1 in Cr": [20, 22, 24, 26],
                     'sale_q2 in Cr': [11, 13, 15, 17]},
                    columns=["cars", "sale_q1 in Cr",
                             'sale_q2 in Cr'])
print(data)
 
# stack the data using stack() function
stacked_data = data.stack()
print(stacked_data)
 
# unstack the dataframe by first level
stack_level_1 = stacked_data.unstack(level=0)
print(stack_level_1)
 
# unstack the dataframe by second level
stack_level_2 = stacked_data.unstack(level=1)
print(stack_level_2)

Producción:

Explicación del código:

  • Cree un marco de datos de muestra que muestre las ventas de automóviles en dos trimestres.
  • Ahora, apile el marco de datos usando la función stack(), esto apilará las columnas a los valores de fila.
  • Como tenemos dos columnas mientras desapilamos, se considerará como dos niveles diferentes.
  • Ahora, use la función de desapilar con el nivel 0 y el nivel 1 por separado para apilar el marco de datos en dos niveles diferentes.
  • Depende del caso de uso para apilar el primer o segundo nivel.

Método 2: Agrupar por desapilar el marco de datos de pandas con simple desapilar()

Cada vez que usamos la función groupby en el marco de datos de pandas con más de una función de agregación por columna, la salida suele ser una columna de múltiples índices donde el primer índice especifica el nombre de la columna y el índice de la segunda columna especifica el nombre de la función de agregación.

Python3

# import the python pandas package
import pandas as pd
 
# create a sample dataframe
data = pd.DataFrame({"cars": ["bmw", "bmw", "benz", "benz"],
                     "sale_q1 in Cr": [20, 22, 24, 26],
                     'sale_q2 in Cr': [11, 13, 15, 17]},
                    columns=["cars", "sale_q1 in Cr",
                             'sale_q2 in Cr'])
print(data)
 
# aggregate the car sales data by sum min
# and max sales of two quarters as shown
grouped_data = data.groupby('cars').agg(
    {"sale_q1 in Cr": [sum, max],
     "sale_q2 in Cr": [sum, min]})
print(grouped_data)
 
# general way of unstacking the grouped dataframe
gen_unstack = grouped_data.unstack()
print(gen_unstack)
 
# stacking the grouped dataframe at
# different levels and unstacking
# unstacking the stacked dataframe at level = 0
unstack_level1 = grouped_data.stack(level=0).unstack()
print(unstack_level1)
 
# unstacking the stacked dataframe at level =1
unstack_level2 = grouped_data.stack(level=1).unstack()
print(unstack_level2)

Producción:

Explicación del código:

  • Cree un marco de datos de muestra que muestre las ventas de automóviles en dos trimestres.
  • Use la función GroupBy para agrupar los datos de ventas de automóviles por ventas mínimas y máximas de dos trimestres, como se muestra
  • Como tenemos dos columnas mientras desapilamos, se considerará como dos niveles diferentes en dos índices. El primer índice tendrá el nombre de la columna y el segundo índice tendrá el nombre de la función agregada.
  • Ahora, realice una operación simple de desapilar en el marco de datos agrupado. Esta simple desapilación convertirá las columnas en filas y viceversa, como se muestra en la salida.

Método 3: Desapilar GroupBy del marco de datos de pandas con múltiples unstack() en dos niveles diferentes.

En general, para tener más información detallada generada por la función GroupBy, normalmente se apila en diferentes niveles del marco de datos agrupado. Este marco de datos agrupado se puede investigar más a fondo desapilando en diferentes niveles usando la función unstack(). La implementación práctica se da a continuación.

Python3

# import the python pandas package
import pandas as pd
# create a sample dataframe
data = pd.DataFrame({"cars": ["bmw", "bmw", "benz", "benz"],
                     "sale_q1 in Cr": [20, 22, 24, 26],
                     'sale_q2 in Cr': [11, 13, 15, 17]},
                    columns=["cars", "sale_q1 in Cr",
                             'sale_q2 in Cr'])
print(data)
 
# aggregate the car sales data by sum min and
# max sales of two quarters as shown
grouped_data = data.groupby('cars').agg(
    {"sale_q1 in Cr": [sum, max], "sale_q2 in Cr": [sum, min]})
print(grouped_data)
 
# stacking the grouped dataframe at
# different levels and unstacking
# unstacking the stacked dataframe at level = 0
unstack_level1 = grouped_data.stack(level=0).unstack()
print(unstack_level1)
 
# unstacking the stacked dataframe at level =1
unstack_level2 = grouped_data.stack(level=1).unstack()
print(unstack_level2)

Producción:

Explicación del código:

  • Cree un marco de datos de muestra que muestre las ventas de automóviles en dos trimestres.
  • Use la función GroupBy para agrupar los datos de ventas de automóviles por ventas mínimas y máximas de dos trimestres, como se muestra
  • Como tenemos dos columnas mientras desapilamos, se considerará como dos niveles diferentes en dos índices. El primer índice tendrá el nombre de la columna y el segundo índice tendrá el nombre de la función agregada.
  • Ahora, use stack() en el nivel 0 del marco de datos agrupado y unstack() el marco de datos agrupado.
  • Luego, use stack() en el nivel 1 del marco de datos agrupado y unstack() el marco de datos agrupado.
  • Depende del caso de uso para desapilar el marco de datos en el primer o segundo nivel.

Publicación traducida automáticamente

Artículo escrito por jssuriyakumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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