0Pricing
Pandas & NumPy Academy · Lektion

Die Methode agg()

Wenden Sie mit agg() mehrere Aggregationsfunktionen gleichzeitig an und übergeben Sie ein dict, um für verschiedene Spalten unterschiedliche Statistiken zu berechnen.

Die Methode agg() ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum agg() verwenden?

Wenn Sie sum() oder mean() direkt auf einem GroupBy-Objekt aufrufen, erhalten Sie nur eine einzelne Statistik. In der Praxis benötigen Analysen jedoch häufig mehrere Statistiken gleichzeitig – beispielsweise den Gesamtumsatz, die durchschnittliche Bestellgröße und die Anzahl der Bestellungen pro Region. Mit der Methode agg() (kurz für aggregate) können Sie all diese Werte in einem einzigen effizienten Aufruf berechnen, statt separate Aggregationen auszuführen und die Ergebnisse zusammenzuführen.

Eine Liste von Funktionsnamen übergeben

Die einfachste Verwendung von agg() besteht darin, eine Liste von Zeichenfolgen mit Funktionsnamen zu übergeben. Pandas wendet jede Funktion auf die ausgewählte Spalte an und gibt einen DataFrame zurück, dessen Spalten jeweils einer Funktion entsprechen. Dieser Ansatz funktioniert mit jedem integrierten Aggregationsnamen: 'sum', 'mean', 'min', 'max', 'count', 'std', 'median' und weiteren.

import pandas as pd

df = pd.DataFrame({
    'region': ['East', 'West', 'East', 'West', 'East', 'West'],
    'revenue': [200, 340, 150, 290, 310, 410],
    'units':   [20,   35,  15,  30,  28,  40]
})

result = df.groupby('region')['revenue'].agg(['sum', 'mean', 'count', 'max'])
print(result)
#          sum        mean  count  max
# region
# East     660  220.000000      3  310
# West    1040  346.666667      3  410

Ausgabespalten mit benannten Aggregationen umbenennen

Wenn Sie eine Liste von Zeichenfolgen übergeben, werden die Ausgabespalten nach den Funktionen selbst benannt ('sum', 'mean' usw.). Für eine übersichtlichere Ausgabe verwenden Sie benannte Aggregationen: Übergeben Sie Schlüsselwortargumente, bei denen der Schlüssel Ihr gewünschter Spaltenname und der Wert ein Tupel aus (column, function) ist. Dies ist der moderne Ansatz in Pandas und erzeugt selbstdokumentierenden Code.

result = df.groupby('region').agg(
    total_revenue=('revenue', 'sum'),
    avg_revenue=('revenue', 'mean'),
    order_count=('revenue', 'count'),
    max_order=('revenue', 'max')
)
print(result)
#         total_revenue  avg_revenue  order_count  max_order
# region
# East              660   220.000000            3        310
# West             1040   346.666667            3        410

Unterschiedliche Funktionen für unterschiedliche Spalten

Sie können ein Dictionary an agg() übergeben, bei dem jeder Schlüssel ein Spaltenname und jeder Wert eine auf diese Spalte anzuwendende Funktion oder Funktionsliste ist. So können Sie beispielsweise sum auf revenue, aber mean auf units anwenden – alles in einem einzigen GroupBy-Aufruf.

result = df.groupby('region').agg({
    'revenue': ['sum', 'mean'],
    'units':   ['sum', 'max']
})
print(result)
#        revenue             units
#            sum        mean   sum max
# region
# East       660  220.000000    63  28
# West      1040  346.666667   105  40

Spalten-MultiIndex aus Dict agg()

Wenn Sie ein Dictionary mit mehreren Funktionen pro Spalte übergeben, besitzt das Ergebnis einen MultiIndex für die Spalten. Die erste Ebene ist der ursprüngliche Spaltenname, die zweite Ebene der Funktionsname. Mit einer List Comprehension können Sie diese Spaltennamen zu einer einzigen Zeichenfolge zusammenführen, sodass sich das Ergebnis in nachfolgenden Verarbeitungsschritten leichter verwenden lässt.

result = df.groupby('region').agg({'revenue': ['sum', 'mean'], 'units': 'sum'})

# Flatten MultiIndex columns
result.columns = ['_'.join(c).strip() for c in result.columns]
print(result.columns.tolist())
# ['revenue_sum', 'revenue_mean', 'units_sum']

Benutzerdefinierte Funktionen in agg() verwenden

Zusätzlich zu Zeichenfolgennamen können Sie an agg() jedes aufrufbare Python-Objekt übergeben. Die Funktion erhält eine Series – die Werte dieser Spalte in einer Gruppe – und muss einen Skalar zurückgeben. Sie können eine Lambda-Funktion oder eine benannte Funktion übergeben. Benutzerdefinierte Funktionen sind flexibler, aber langsamer als integrierte Funktionen mit Namen, da sie die Optimierungen auf C-Ebene nicht nutzen können.

def revenue_range(s):
    return s.max() - s.min()

result = df.groupby('region')['revenue'].agg(['sum', revenue_range])
print(result)
#          sum  revenue_range
# region
# East     660            160
# West    1040            120

Benannte Aggregationen mit benutzerdefinierten Funktionen

Die Syntax für benannte Aggregationen funktioniert auch mit aufrufbaren Funktionen und nicht nur mit Zeichenkettennamen. Übergeben Sie einfach ein Tupel aus (column, function) als Wert des Schlüsselwortarguments, wobei die Funktion eine Series akzeptiert und einen Skalar zurückgibt. So bleibt Ihr Code übersichtlich, auch wenn Sie integrierte Funktionen mit eigener Logik kombinieren.

result = df.groupby('region').agg(
    total=('revenue', 'sum'),
    spread=('revenue', lambda s: s.max() - s.min()),
    top_units=('units', 'max')
)
print(result)
#         total  spread  top_units
# region
# East      660     160         28
# West     1040     120         40

Aggregieren ohne Auswahl einer Spalte

Wenn Sie agg() auf einem GroupBy-Objekt aufrufen, ohne eine bestimmte Spalte auszuwählen, wendet Pandas die Funktion auf jede numerische Spalte im DataFrame an. So erhalten Sie schnell eine Zusammenfassung aller numerischen Spalten auf einmal. Beachten Sie, dass Spalten mit nicht numerischen Datentypen bei den meisten Aggregationen stillschweigend übersprungen werden.

# Aggregate all numeric columns in one call
result = df.groupby('region').agg(['sum', 'mean'])
print(result)
#        revenue              units
#            sum        mean    sum   mean
# region
# East       660  220.000000     63  21.00
# West      1040  346.666667    105  35.00

agg() mit reset_index() kombinieren

Nach agg() sind die Gruppierungsspalten der Index. Ein häufig verwendetes Muster besteht darin, direkt anschließend reset_index() aufzurufen, um einen flachen DataFrame zu erhalten, in dem die Gruppenschlüssel normale Spalten sind. Anschließend können Sie das Ergebnis wie jeden anderen DataFrame umbenennen, sortieren und filtern. Dadurch lässt es sich einfach an nachgelagerte Verarbeitungsschritte übergeben oder exportieren.

summary = (
    df.groupby('region')
      .agg(total=('revenue', 'sum'), orders=('revenue', 'count'))
      .reset_index()
      .sort_values('total', ascending=False)
)
print(summary)
#   region  total  orders
# 1   West   1040       3
# 0   East    660       3

agg() vs transform() vs apply()

Es ist wichtig, drei GroupBy-Methoden zu unterscheiden: agg() reduziert jede Gruppe auf einen Skalar und erzeugt ein Ergebnis mit weniger Zeilen als das Original. transform() gibt ein Array mit der gleichen Form wie die Eingabe zurück, sodass Sie Gruppenstatistiken als neue Spalten hinzufügen können. apply() ist am flexibelsten, aber auch am langsamsten und wird in der nächsten Lektion behandelt.

# agg: one row per group
print(df.groupby('region')['revenue'].agg('mean'))
# region
# East    220.0
# West    346.7

# transform: one row per original row (group mean broadcast back)
df['group_mean'] = df.groupby('region')['revenue'].transform('mean')
print(df[['region', 'revenue', 'group_mean']].head())

Praxisbeispiel: Zusammenfassung von Verkäufen

Hier ist ein realistisches End-to-End-Beispiel: Erstellen Sie eine Übersichtstabelle mit Gesamtumsatz, durchschnittlichem Bestellwert, Anzahl der Bestellungen und Umsatzspanne je Region, mit aussagekräftigen Spaltennamen und absteigend nach dem Gesamtumsatz sortiert. Dieses Muster lässt sich direkt in Analyseprozessen für Produktmanagement, Finanzen und Marketing einsetzen.

summary = (
    df.groupby('region')
      .agg(
          total_revenue=('revenue', 'sum'),
          avg_order=('revenue', 'mean'),
          num_orders=('revenue', 'count'),
          revenue_range=('revenue', lambda s: s.max() - s.min())
      )
      .reset_index()
      .sort_values('total_revenue', ascending=False)
      .round(2)
)
print(summary)

Kurze Überprüfung

Testen Sie Ihr Verständnis der Methode agg() aus dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt, wie Sie mit agg() mehrere Aggregationen gleichzeitig berechnen, wie Sie benannte Aggregationen für aussagekräftige Spaltennamen verwenden und wie Sie mithilfe eines Dicts unterschiedliche Funktionen auf unterschiedliche Spalten anwenden. Als Nächstes sehen wir uns transform() und filter() an, die Informationen auf Gruppenebene wieder zum ursprünglichen DataFrame hinzufügen.

Häufig gestellte Fragen

Ist die Lektion „Die Methode agg()“ kostenlos?

Ja — der vollständige Text von „Die Methode agg()“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Pandas & NumPy Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Die Methode agg()“?

Wenden Sie mit agg() mehrere Aggregationsfunktionen gleichzeitig an und übergeben Sie ein dict, um für verschiedene Spalten unterschiedliche Statistiken zu berechnen. Du übst Pandas & NumPy Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Pandas & NumPy Academy zu starten?

Keine Vorkenntnisse erforderlich. Pandas & NumPy Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Die Methode agg()“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Pandas & NumPy Academy-Lektion Code schreiben und ausführen?

Ja. Jede Pandas & NumPy Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Das Split-Apply-Combine-Muster
  2. GroupBy mit einem und mehreren Schlüsseln
  3. Die Methode agg()
  4. GroupBy-Transformation und -Filterung
← Zurück zu Pandas & NumPy Academy