Die Python Pandas DataFrame.groupby()-Funktion er­mög­licht es, Daten nach be­stimm­ten Kriterien zu grup­pie­ren und ver­schie­de­ne Ag­gre­ga­tio­nen und Trans­for­ma­tio­nen auf diesen Gruppen durch­zu­füh­ren.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

Syntax von Pandas DataFrame.groupby()

Pandas groupby() nimmt bis zu vier Parameter entgegen. Die grund­le­gen­de Syntax sieht fol­gen­der­ma­ßen aus:

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

Relevante Parameter

Parameter Be­schrei­bung De­fault­wert
by Schlüssel oder Liste von Schlüs­seln, nach denen gruppiert werden soll; nicht in Kom­bi­na­ti­on mit level None
level Wird bei Mul­ti­in­di­zes verwendet, um eine oder mehrere Ebenen zu spe­zi­fi­zie­ren, sodass die Grup­pie­rung nach be­stimm­ten Ebenen erfolgt None
as_index Wenn True, werden die Grup­pen­schlüs­sel als Index des re­sul­tie­ren­den DataFrame gesetzt True
group_keys Wenn True, sind die Grup­pen­schlüs­sel in den Indizes der Gruppen enthalten True
dropna Legt fest, ob Gruppen mit NaN-Werten aus­ge­schlos­sen werden sollen True

Anwendung von Pandas DataFrame.grouby()

Die Pandas groupyby()-Funktion ist besonders nützlich, wenn man große Da­ten­men­gen ana­ly­sie­ren und zu­sam­men­fas­sen möchte, um Muster oder Anomalien zu erkennen.

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

Im Folgenden wird ein Datensatz von Pro­dukt­ver­käu­fen be­trach­tet, der In­for­ma­tio­nen über das Ver­kaufs­da­tum, das verkaufte Produkt und die verkaufte Menge 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 re­sul­tie­ren­de DataFrame sieht fol­gen­der­ma­ß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. An­schlie­ßend wird die Summe der ver­kauf­ten Menge jedes Produktes mithilfe der sum()-Funktion aus­ge­rech­net:

# 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 Ag­gre­ga­tio­nen

Das folgende Beispiel nutzt einen ähnlichen, aber er­wei­ter­ten Datensatz an, der zu­sätz­lich 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 be­trach­tet:

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. An­schlie­ßend wird die agg()-Funktion genutzt, um nach der Ge­samt­sum­me der ver­kauf­ten Mengen und Umsätze sowie dem durch­schnitt­li­chen Umsatz pro Produkt zu agg­re­gie­ren.

# 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
Zum Hauptmenü