Pandas groupby() erklärt
Die Python Pandas DataFrame.groupby()
-Funktion ermöglicht es, Daten nach bestimmten Kriterien zu gruppieren und verschiedene Aggregationen und Transformationen auf diesen Gruppen durchzuführen.
- Flexibel: Hosting, das jedem Website-Traffic standhält
- Verlässlich: Inklusive 24/7-Support und persönlicher Beratung
- Sicher: Kostenloses SSL-Zertifikat, DDoS-Schutz und Backups
Syntax von Pandas DataFrame.groupby()
Pandas groupby()
nimmt bis zu vier Parameter entgegen. Die grundlegende Syntax sieht folgendermaßen aus:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)
pythonRelevante Parameter
Parameter | Beschreibung | Defaultwert |
---|---|---|
by
|
Schlüssel oder Liste von Schlüsseln, nach denen gruppiert werden soll; nicht in Kombination mit level
|
None
|
level
|
Wird bei Multiindizes verwendet, um eine oder mehrere Ebenen zu spezifizieren, sodass die Gruppierung nach bestimmten Ebenen erfolgt | None
|
as_index
|
Wenn True , werden die Gruppenschlüssel als Index des resultierenden DataFrame gesetzt
|
True
|
group_keys
|
Wenn True , sind die Gruppenschlüssel in den Indizes der Gruppen enthalten
|
True
|
dropna
|
Legt fest, ob Gruppen mit NaN-Werten ausgeschlossen werden sollen | True
|
Anwendung von Pandas DataFrame.grouby()
Die Pandas groupyby()
-Funktion ist besonders nützlich, wenn man große Datenmengen analysieren und zusammenfassen möchte, um Muster oder Anomalien zu erkennen.
Gruppieren und Aggregieren
Im Folgenden wird ein Datensatz von Produktverkäufen betrachtet, der Informationen über das Verkaufsdatum, das verkaufte Produkt und die verkaufte Menge enthält:
import pandas as pd
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 resultierende DataFrame sieht folgendermaßen 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 10
Im nächsten Schritt soll der Datensatz nach Produkt gruppiert werden. Hierfür wird Pandas groupby()
genutzt. Anschließend wird die Summe der verkauften Menge jedes Produktes mithilfe der sum()
-Funktion ausgerechnet:
# Gruppieren nach Produkt und Summe der verkauften Menge berechnen
summe = df.groupby('Produkt')['Menge'].sum()
print(summe)
Das Ergebnis zeigt, wie viele Einheiten jedes Produkts insgesamt verkauft wurden:
Produkt
A 35
B 45
Name: Menge, dtype: int64
Mehrfache Aggregationen
Das folgende Beispiel nutzt einen ähnlichen, aber erweiterten Datensatz an, der zusätzlich den 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)
pythonFolgender DataFrame wird also betrachtet:
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 100
Die Daten werden mithilfe von Pandas DataFrame.groupby()
erneut nach Produkt gruppiert. Anschließend wird die agg()
-Funktion genutzt, um nach der Gesamtsumme der verkauften Mengen und Umsätze sowie dem durchschnittlichen Umsatz pro Produkt zu aggregieren.
# Gruppieren nach Produkt und Anwendung mehrerer Aggregationen anwenden
gruppen = df.groupby('Produkt').agg({
'Menge': 'sum',
'Umsatz': ['sum', 'mean']
})
print(gruppen)
Das Ergebnis sieht wie folgt aus:
Menge Umsatz
sum sum mean
Produkt
A 35 350 116.666667
B 45 450 225.000000