Cómo utilizar el método Pandas groupby()
La función DataFrame.groupby()
de la Biblioteca Python Pandas se utiliza para agrupar datos según criterios específicos, así como para realizar diferentes agregaciones y transformaciones en dichos grupos.
- Rápido, seguro, flexible y escalable
- Certificado SSL/DDoS incluido
- Dominio y asesor personal incluidos
Sintaxis de la función DataFrame.groupby()
de Pandas
La función groupby()
acepta hasta cinco parámetros y su sintaxis es la siguiente:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)
pythonParámetros relevantes
Parámetro | Descripción | Valor por defecto |
---|---|---|
by
|
Clave o lista de claves según las cuales se agruparán los datos. No puede combinarse con level
|
None
|
level
|
Se utiliza cuando se trabaja con Multi-índices para especificar uno o más niveles, de manera que la agrupación se realice según los niveles especificados | None
|
as_index
|
Si es True , las claves de agrupación se establecen como el índice del DataFrame resultante
|
True
|
group_keys
|
Si es True , las claves de agrupación se incluyen en los índices de los grupos
|
True
|
dropna
|
Define si se deben excluir los grupos con valores NaN | True
|
Uso de la función DataFrame.grouby()
de Pandas
La función groupyby()
de Pandas resulta especialmente útil para identificar patrones o anomalías cuando se desea analizar y resumir grandes volúmenes de datos.
Agrupar y agregar
A continuación, analizamos un conjunto de datos de venta de varios productos en el que se incluye información sobre la fecha de venta, el producto vendido y la cantidad que se ha vendido:
import pandas as pd
# Ejemplo de reporte de ventas
data = {
'Fecha': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
'Producto': ['A', 'B', 'A', 'B', 'A'],
'Cantidad': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(data)
print(df)
pythonEl aspecto del DataFrame resultante es el siguiente:
Fecha Producto Cantidad
0 2021-01-01 A 10
1 2021-01-01 B 20
2 2021-01-02 A 15
3 2021-01-02 B 25
4 2021-01-03 A 10
En el siguiente paso, se utiliza la función groupby()
de Pandas para agrupar los datos por producto. Después, se calcula la cantidad vendida de cada producto utilizando la función sum()
:
# Agrupar por producto y calcular la suma de las cantidades vendidas
suma = df.groupby('Producto')['Cantidad'].sum()
print(suma)
El siguiente resultado indica el total de unidades vendidas de cada producto:
Producto
A 35
B 45
Name: Cantidad, dtype: int64
Agregaciones múltiples
En el siguiente ejemplo se utiliza un conjunto de datos similar al anterior, pero más amplio, que también incluye la columna de ingresos:
data = {
'Fecha': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
'Producto': ['A', 'B', 'A', 'B', 'A'],
'Cantidad': [10, 20, 15, 25, 10],
'Ingresos': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(data)
print(df)
pythonSe genera el siguiente DataFrame:
Fecha Producto Cantidad Ingresos
0 2021-01-01 A 10 100
1 2021-01-01 B 20 200
2 2021-01-02 A 15 150
3 2021-01-02 B 25 250
4 2021-01-03 A 10 100
Se utiliza DataFrame.groupby()
de Pandas para volver a agrupar los datos por producto. Después, se utiliza la función agg()
para agregar los datos calculando la suma total de las cantidades vendidas, los ingresos totales y el ingreso promedio de cada producto.
# Agrupar por producto y aplicar agregaciones múltiples
grupos = df.groupby('Producto').agg({
'Cantidad': 'sum',
'Ingresos': ['sum', 'mean']
})
print(grupos)
El resultado sería el siguiente:
Cantidad Ingresos
sum sum mean
Producto
A 35 350 116.666667
B 45 450 225.000000