La funzione DataFrame.groupby() in Pandas per Python permette di rag­grup­pa­re i dati in base a de­ter­mi­na­ti criteri e di ef­fet­tua­re diverse ag­gre­ga­zio­ni e tra­sfor­ma­zio­ni su questi gruppi.

Web Hosting
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana

La sintassi di DataFrame.groupby() in Pandas

La funzione groupby()` di Pandas accetta fino a quattro parametri. La sintassi di base si presenta così:

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

Parametri ap­pli­ca­bi­li

Parametro De­scri­zio­ne Valore pre­de­fi­ni­to
by Chiave o lista di chiavi su cui basare il rag­grup­pa­men­to; non in com­bi­na­zio­ne con level None
level Uti­liz­za­to con multi-indici per spe­ci­fi­ca­re uno o più livelli per ef­fet­tua­re il rag­grup­pa­men­to per livelli specifici None
as_index Se True, le chiavi del gruppo vengono impostate come indice del DataFrame ri­sul­tan­te True
group_keys Se True, le chiavi del gruppo sono contenute negli indici dei gruppi True
dropna Sta­bi­li­sce se escludere i gruppi con valori NaN True

Ap­pli­ca­zio­ne di DataFrame.groupby() in Pandas

La funzione groupby() di Pandas è par­ti­co­lar­men­te utile per ana­liz­za­re e rias­su­me­re grandi quantità di dati al fine di in­di­vi­dua­re modelli o anomalie.

Rag­grup­pa­men­to e ag­gre­ga­zio­ne

Nelle parti seguenti uti­liz­zia­mo un record di dati con­te­nen­te le vendite di prodotti con in­for­ma­zio­ni sulla data di vendita, sul prodotto e sulla quantità venduti:

import pandas as pd
# Record di dati di esempio con vendite di prodotti
data = {
    'Data': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Prodotto': ['A', 'B', 'A', 'B', 'A'],
    'Quantità': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(data)
print(df)
python

Il DataFrame ri­sul­tan­te si presenta così:

Data  Prodotto  Quantità
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

Nella fase suc­ces­si­va passiamo a rag­grup­pa­re il record di dati per prodotto. A tal fine uti­liz­zia­mo la funzione groupby() di Pandas. Il totale della quantità venduta per ciascun prodotto viene quindi calcolato uti­liz­zan­do la funzione sum():

# Raggruppamento per prodotto e calcolo del totale della quantità venduta
totale = df.groupby('Prodotto')['Quantità'].sum()
print(totale)

Il risultato mostra quante unità di ciascun prodotto sono state vendute in totale:

Prodotto
A    35
B    45
Nome: quantità, dtype: int64

Ag­gre­ga­zio­ni multiple

L’esempio seguente utilizza un record di dati simile, ma ampliato, che contiene anche il fatturato:

data = {
    'Data': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Prodotto': ['A', 'B', 'A', 'B', 'A'],
    'Quantità': [10, 20, 15, 25, 10],
    'Fatturato': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(data)
print(df)
python

Viene quindi preso in con­si­de­ra­zio­ne il seguente DataFrame:

Data  Prodotto  Quantità Fatturato
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

I dati vengono nuo­va­men­te rag­grup­pa­ti per prodotto uti­liz­zan­do DataFrame.groupby() in Pandas. Suc­ces­si­va­men­te si utilizza la funzione agg() per eseguire ag­gre­ga­zio­ni in base alle quantità totali vendute e ai fatturati, nonché al fatturato medio per prodotto.

# Raggruppamento per prodotto e applicazione di più aggregazioni
gruppi = df.groupby('Prodotto').agg({
    'Quantità': 'sum',
    'Fatturato': ['sum', 'mean']
})
print(gruppi)

Il risultato si presenta così:

Quantità Fatturato        
      sum    sum    mean
Prodotto             
A      35    350  116.666667
B      45    450  225.000000
Vai al menu prin­ci­pa­le