So meisterst du Pandas groupby()
Mit der Python Pandas DataFrame.groupby()-Funktion kannst du Daten nach spezifischen Kriterien gruppieren und verschiedene Berechnungen oder Transformationen auf diesen Gruppen ausführen.
Syntax von Pandas DataFrame.groupby()
Pandas groupby() akzeptiert bis zu vier Parameter. Die grundlegende Syntax sieht so aus:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonRelevante Parameter
| Parameter | Beschreibung | Standardwert |
|---|---|---|
by
|
Schlüssel oder Liste von Schlüsseln für die Gruppierung; nicht mit level kombinierbar
|
None
|
level
|
Spezifiziert bei Multiindizes eine oder mehrere Ebenen für die Gruppierung | None
|
as_index
|
Bei True dienen die Gruppenschlüssel als Index des resultierenden DataFrames
|
True
|
group_keys
|
Bei True sind die Gruppenschlüssel in den Indizes der Gruppen enthalten
|
True
|
dropna
|
Bestimmt, ob Gruppen mit NaN-Werten ignoriert werden sollen | True
|
Anwendung von Pandas DataFrame.grouby()
Die Pandas groupyby()-Funktion unterstützt dich dabei, große Datenmengen effizient zu analysieren und Muster oder Abweichungen schnell zu identifizieren.
Gruppieren und Aggregieren
Schauen wir uns einen Datensatz von Verkäufen an, der Datum, Produkt und die jeweilige Verkaufsmenge enthält:
import pandas as pd
# Beispiel-Datensatz mit Produktverkäufen
data = {
'Datum': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
'Produkt': ['A', 'B', 'A', 'B', 'A'],
'Menge': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(data)
print(df)pythonDer erstellte DataFrame sieht so aus:
Datum Produkt Menge
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 10Nun gruppieren wir den Datensatz nach Produkten. Dazu nutzen wir pandas groupby() und berechnen mit der sum()-Funktion die Summe der verkauften Einheiten pro Produkt:
# Gruppieren nach Produkt und Summe der verkauften Menge berechnen
summe = df.groupby('Produkt')['Menge'].sum()
print(summe)Das Ergebnis zeigt die gesamte Absatzmenge pro Produkt auf einen Blick:
Produkt
A 35
B 45
Name: Menge, dtype: int64Mehrfache Aggregationen
Im nächsten Beispiel verwenden wir einen erweiterten Datensatz, der zusätzlich den erzielten Umsatz enthält:
data = {
'Datum': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
'Produkt': ['A', 'B', 'A', 'B', 'A'],
'Menge': [10, 20, 15, 25, 10],
'Umsatz': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(data)
print(df)pythonDieser DataFrame dient als Basis:
Datum Produkt Menge Umsatz
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 100Die Daten werden erneut via pandas DataFrame.groupby() nach Produkt sortiert. Mit der agg()-Funktion ermitteln wir gleichzeitig die Gesamtsumme der Mengen und Umsätze sowie den mittleren Umsatz pro Produkt.
# Gruppieren nach Produkt und Anwendung mehrerer Aggregationen anwenden
gruppen = df.groupby('Produkt').agg({
'Menge': 'sum',
'Umsatz': ['sum', 'mean']
})
print(gruppen)So sieht das Endergebnis aus:
Menge Umsatz
sum sum mean
Produkt
A 35 350 116.666667
B 45 450 225.000000