Mit der Python Pandas DataFrame.groupby()-Funktion kannst du Daten nach spe­zi­fi­schen Kriterien grup­pie­ren und ver­schie­de­ne Be­rech­nun­gen oder Trans­for­ma­tio­nen auf diesen Gruppen ausführen.

Syntax von Pandas DataFrame.groupby()

Pandas groupby() ak­zep­tiert bis zu vier Parameter. Die grund­le­gen­de Syntax sieht so aus:

DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)
python

Relevante Parameter

Parameter Be­schrei­bung Stan­dard­wert
by Schlüssel oder Liste von Schlüs­seln für die Grup­pie­rung; nicht mit level kom­bi­nier­bar None
level Spe­zi­fi­ziert bei Mul­ti­in­di­zes eine oder mehrere Ebenen für die Grup­pie­rung None
as_index Bei True dienen die Grup­pen­schlüs­sel als Index des re­sul­tie­ren­den Da­ta­Frames True
group_keys Bei True sind die Grup­pen­schlüs­sel 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 un­ter­stützt dich dabei, große Da­ten­men­gen effizient zu ana­ly­sie­ren und Muster oder Ab­wei­chun­gen schnell zu iden­ti­fi­zie­ren.

Grup­pie­ren und Agg­re­gie­ren

Schauen wir uns einen Datensatz von Verkäufen an, der Datum, Produkt und die jeweilige Ver­kaufs­men­ge 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)
python

Der 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     10

Nun grup­pie­ren wir den Datensatz nach Produkten. Dazu nutzen wir pandas groupby() und berechnen mit der sum()-Funktion die Summe der ver­kauf­ten 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 Ab­satz­men­ge pro Produkt auf einen Blick:

Produkt
A    35
B    45
Name: Menge, dtype: int64

Mehrfache Ag­gre­ga­tio­nen

Im nächsten Beispiel verwenden wir einen er­wei­ter­ten Datensatz, der zu­sätz­lich 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)
python

Dieser 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     100

Die Daten werden erneut via pandas DataFrame.groupby() nach Produkt sortiert. Mit der agg()-Funktion ermitteln wir gleich­zei­tig die Ge­samt­sum­me 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 End­ergeb­nis aus:

Menge Umsatz        
      sum    sum    mean
Produkt             
A      35    350  116.666667
B      45    450  225.000000
Zum Hauptmenü