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.

Webhosting
Top-Hosting für Ihre Website
  • 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)
python

Relevante 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)
python

Der 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)
python

Folgender 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
War dieser Artikel hilfreich?
Page top