La función DataFrame.groupby() de la Bi­blio­te­ca Python Pandas se utiliza para agrupar datos según criterios es­pe­cí­fi­cos, así como para realizar di­fe­re­n­tes agre­ga­cio­nes y tra­n­s­fo­r­ma­cio­nes en dichos grupos.

Hosting
Hosting de primera al mejor precio
  • 3x más rápido, ahora un 60 % de ahorro
  • Alta di­s­po­ni­bi­li­dad >99.99 %
  • Solo en IONOS: hasta 500 GB incluidos

Sintaxis de la función DataFrame.groupby() de Pandas

La función groupby() acepta hasta cinco pa­rá­me­tros y su sintaxis es la siguiente:

DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)
python

Pa­rá­me­tros re­le­va­n­tes

Parámetro De­s­cri­p­ción Valor por defecto
by Clave o lista de claves según las cuales se agruparán los datos. No puede co­m­bi­nar­se con level None
level Se utiliza cuando se trabaja con Multi-índices para es­pe­ci­fi­car uno o más niveles, de manera que la agru­pa­ción se realice según los niveles es­pe­ci­fi­ca­dos None
as_index Si es True, las claves de agru­pa­ción se es­ta­ble­cen como el índice del DataFrame re­su­l­ta­n­te True
group_keys Si es True, las claves de agru­pa­ció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 es­pe­cia­l­me­n­te útil para ide­n­ti­fi­car patrones o anomalías cuando se desea analizar y resumir grandes volúmenes de datos.

Agrupar y agregar

A co­n­ti­nua­ción, ana­li­za­mos un conjunto de datos de venta de varios productos en el que se incluye in­fo­r­ma­ció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)
python

El aspecto del DataFrame re­su­l­ta­n­te 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 uti­li­za­n­do 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

Agre­ga­cio­nes 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)
python

Se 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 ca­l­cu­la­n­do la suma total de las ca­n­ti­da­des 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
Ir al menú principal