Wat is pandas groupby() en hoe gebruik je het?
Met de Python pandas DataFrame.groupby() -functie kunt u gegevens groeperen op basis van specifieke criteria en verschillende aggregaties en transformaties op de gegevens uitvoeren.
Wat is de syntaxis voor pandas DataFrame.groupby()?
Pandas groupby() accepteert maximaal vier parameters. De basissyntaxis is als volgt:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonBelangrijke parameters voor groupby
| Parameter | Beschrijving | Standaardwaarde |
|---|---|---|
by
|
Sleutel of Python-lijst met sleutels om te groeperen; niet te combineren met level
|
None
|
level
|
Gebruikt voor MultiIndex om een of meer niveaus voor groepering te specificeren | None
|
as_index
|
Als True, worden de groepssleutels ingesteld als de index van het resulterende DataFrame
|
True
|
group_keys
|
Als True, worden de groepssleutels opgenomen in de index van de groepen.
|
True
|
dropna
|
Geeft aan of groepen met NaN-waarden moeten worden uitgesloten. | True
|
Hoe pandas DataFrame.groupby() te gebruiken
De functie pandas groupby() is bijzonder nuttig voor het analyseren en samenvatten van grote datasets, waardoor patronen of afwijkingen kunnen worden geïdentificeerd.
Groeperen en samenvoegen
Hieronder vindt u een voorbeeld van een verkoopdataset met informatie over de verkoopdatum, het verkochte product en de verkochte hoeveelheid:
import pandas as pd
# Sample sales dataset
data = {
'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
'Product': ['A', 'B', 'A', 'B', 'A'],
'Quantity': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(data)
print(df)pythonHet resulterende DataFrame ziet er als volgt uit:
Date Product Quantity
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 10Vervolgens groeperen we de dataset op product met behulp van pandas groupby(). Daarna berekenen we de totale verkochte hoeveelheid voor elk product met behulp van de functie sum():
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Het resultaat toont het totale aantal verkochte eenheden voor elk product:
Product
A 35
B 45
Name: Quantity, dtype: int64Meerdere aggregaties
In het volgende voorbeeld gebruiken we een uitgebreide dataset die ook omzetgegevens bevat:
data = {
'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
'Product': ['A', 'B', 'A', 'B', 'A'],
'Quantity': [10, 20, 15, 25, 10],
'Revenue': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(data)
print(df)pythonHet DataFrame ziet er als volgt uit:
Date Product Quantity Revenue
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 100Met behulp van pandas DataFrame.groupby() gaan we de gegevens groeperen op product en vervolgens de functie agg() gebruiken om de totale hoeveelheid en omzet te berekenen, evenals de gemiddelde omzet per product.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Dit is het resultaat:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000