La funzione DataFrame.groupby() in Pandas per Python permette di raggruppare i dati in base a determinati criteri e di effettuare diverse aggregazioni e trasformazioni su questi gruppi.

Il tuo web hosting come mai prima d'ora
  • Certificato SSL e protezione DDoS
  • Velocità, flessibilità e scalabilità
  • Dominio e consulente personale
  • 1 anno gratis del gestionale di fatturazione elettronica FlexTax

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 applicabili

Parametro Descrizione Valore predefinito
by Chiave o lista di chiavi su cui basare il raggruppamento; non in combinazione con level None
level Utilizzato con multi-indici per specificare uno o più livelli per effettuare il raggruppamento per livelli specifici None
as_index Se True, le chiavi del gruppo vengono impostate come indice del DataFrame risultante True
group_keys Se True, le chiavi del gruppo sono contenute negli indici dei gruppi True
dropna Stabilisce se escludere i gruppi con valori NaN True

Applicazione di DataFrame.groupby() in Pandas

La funzione groupby() di Pandas è particolarmente utile per analizzare e riassumere grandi quantità di dati al fine di individuare modelli o anomalie.

Raggruppamento e aggregazione

Nelle parti seguenti utilizziamo un record di dati contenente le vendite di prodotti con informazioni 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 risultante 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 successiva passiamo a raggruppare il record di dati per prodotto. A tal fine utilizziamo la funzione groupby() di Pandas. Il totale della quantità venduta per ciascun prodotto viene quindi calcolato utilizzando 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

Aggregazioni 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 considerazione 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 nuovamente raggruppati per prodotto utilizzando DataFrame.groupby() in Pandas. Successivamente si utilizza la funzione agg() per eseguire aggregazioni 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
Hai trovato questo articolo utile?
Vai al menu principale