La funzione groupby() in Pandas
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.
- 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)
pythonParametri 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)
pythonIl 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)
pythonViene 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