Das Split-Apply-Combine-Muster
Verstehen Sie den konzeptionellen Ablauf von groupby: Aufteilen des DataFrame in Gruppen, Anwenden einer Funktion und Zusammenführen der Ergebnisse.
Das Split-Apply-Combine-Muster ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.
Was ist GroupBy?
Die GroupBy-Operation gehört zu den leistungsfähigsten Mustern in der Datenanalyse. Sie ermöglicht es Ihnen, einen DataFrame in Gruppen aufzuteilen, auf jede Gruppe unabhängig eine Funktion anzuwenden und die Ergebnisse anschließend zu einer neuen Struktur zusammenzuführen. Dieser Ablauf wird als split-apply-combine-Muster bezeichnet – ein Begriff, den der Statistiker Hadley Wickham geprägt hat.
Der Split-Schritt
Im split-Schritt teilt Pandas den DataFrame anhand der eindeutigen Werte in einer oder mehreren Spalten in Teil-DataFrames auf. Enthält Ihre Daten beispielsweise eine Spalte region mit Werten wie 'North', 'South' und 'West', erstellt der Split-Schritt drei separate Gruppen. Dabei werden noch keine Daten verschoben oder kopiert – Pandas merkt sich lediglich, welche Zeilen zu welcher Gruppe gehören.
import pandas as pd
df = pd.DataFrame({
'region': ['North', 'South', 'North', 'West', 'South'],
'sales': [200, 150, 300, 180, 220]
})
# split: create a GroupBy object
grouped = df.groupby('region')
print(type(grouped)) # DataFrameGroupByDer Apply-Schritt
Im apply-Schritt wird auf jede Gruppe unabhängig eine Funktion angewendet. Dabei kann es sich um eine integrierte Aggregation wie sum() oder mean() oder um eine von Ihnen definierte benutzerdefinierte Funktion handeln. Die Zeilen jeder Gruppe werden an die Funktion übergeben, die als Ergebnis einen Skalar, eine Series oder einen DataFrame zurückgibt.
# apply: compute the sum of 'sales' within each region group
total_sales = grouped['sales'].sum()
print(total_sales)
# region
# North 500
# South 370
# West 180
# Name: sales, dtype: int64Der Combine-Schritt
Im combine-Schritt fügt Pandas die Ergebnisse der einzelnen Gruppen automatisch wieder zu einem einzigen Objekt zusammen – normalerweise zu einer Series oder einem DataFrame. Die Gruppenschlüssel werden zum Index des Ergebnisses. Dieser Schritt erfolgt automatisch, wenn Sie eine Aggregationsmethode auf einem GroupBy-Objekt aufrufen, und liefert eine übersichtliche Zusammenfassung mit einer Zeile pro Gruppe.
# combine happens automatically — result is a Series indexed by 'region'
print(total_sales.index) # Index(['North', 'South', 'West'])
print(total_sales.values) # [500, 370, 180]Ein GroupBy-Objekt erstellen
Sie erstellen ein GroupBy-Objekt, indem Sie df.groupby(column) aufrufen. Zu diesem Zeitpunkt wird noch nichts berechnet – es handelt sich um ein verzögert ausgewertetes Objekt. Sie können darüber iterieren, um die Gruppen anzuzeigen, oder eine Aggregationsmethode verketten, um die Berechnung auszulösen. Mit as_index=False bleibt die Gruppierungsspalte im Ergebnis eine normale Spalte und wird nicht zum Index.
grouped = df.groupby('region', as_index=False)
result = grouped['sales'].sum()
print(result)
# region sales
# 0 North 500
# 1 South 370
# 2 West 180Über Gruppen iterieren
Sie können über ein GroupBy-Objekt iterieren, um jede Gruppe einzeln zu untersuchen. Jede Iteration liefert ein Tupel aus (group_key, sub_dataframe). Das ist beim Debugging nützlich oder wenn Sie jede Gruppe mit beliebigem Python-Code verarbeiten möchten. Für die Performance in Produktionsumgebungen sollten Sie jedoch vektorisierte Aggregationsmethoden einer expliziten Iteration vorziehen.
for name, group in df.groupby('region'):
print(f'--- {name} ---')
print(group)
# --- North ---
# region sales
# 0 North 200
# 2 North 300
# --- South ---
# region sales
# 1 South 150
# 4 South 220Häufig verwendete Aggregationsfunktionen
Pandas GroupBy unterstützt viele integrierte Aggregationsfunktionen: sum(), mean(), count(), min(), max(), std(), median() und weitere. Diese Funktionen sind stark optimiert und werden in einem einzigen Durchlauf auf alle Gruppen angewendet. Verwenden Sie sie immer bevorzugt gegenüber einer eigenen Python-Funktion, sofern eine integrierte Funktion vorhanden ist.
print(df.groupby('region')['sales'].mean())
# region
# North 250.0
# South 185.0
# West 180.0
print(df.groupby('region')['sales'].count())
# region
# North 2
# South 2
# West 1Mehrere Spalten gleichzeitig gruppieren
Sie können Aggregationen gleichzeitig auf mehrere Spalten anwenden, indem Sie diese vor dem Aufruf der Aggregationsmethode auswählen, oder die Spaltenauswahl weglassen, um alle numerischen Spalten zu aggregieren. Das Ergebnis ist ein DataFrame statt einer Series mit einer Spalte pro aggregierter Variable.
df2 = pd.DataFrame({
'region': ['North', 'South', 'North', 'South'],
'units': [10, 8, 12, 9],
'revenue': [200, 160, 240, 180]
})
print(df2.groupby('region').sum())
# units revenue
# region
# North 22 440
# South 17 340Das mentale Modell von GroupBy
Stellen Sie sich GroupBy wie die SQL-Klausel GROUP BY vor. Der Pandas-Code df.groupby('region')['sales'].sum() entspricht in SQL SELECT region, SUM(sales) FROM df GROUP BY region. Wenn Sie diese Parallele verstehen, können Sie leichter zwischen den beiden Werkzeugen wechseln und die passende Abstraktion für Ihre Pipeline auswählen.
# Pandas GroupBy is equivalent to SQL GROUP BY
# SQL: SELECT region, SUM(sales) FROM df GROUP BY region
# Pandas: df.groupby('region')['sales'].sum()
result = df.groupby('region')['sales'].sum().reset_index()
result.columns = ['region', 'total_sales']
print(result)Warum nicht einfach eine Schleife verwenden?
Sie fragen sich vielleicht, warum Sie nicht einfach über eindeutige Werte iterieren und die Statistiken manuell berechnen sollten. Die Antwort lautet: Performance und Lesbarkeit. Eine Python-Schleife über Gruppen ist deutlich langsamer als ein einziger vektorisierter GroupBy-Aufruf, insbesondere bei großen Datensätzen. GroupBy-Operationen werden intern in kompiliertem C-Code ausgeführt und sind dadurch 10- bis 100-mal schneller als entsprechende Python-Schleifen.
# Slow approach with a loop
results = {}
for region in df['region'].unique():
subset = df[df['region'] == region]
results[region] = subset['sales'].sum()
# Fast approach with GroupBy
results_fast = df.groupby('region')['sales'].sum().to_dict()
# Both give the same answer, but GroupBy is orders of magnitude fasterGroupBy mit mehreren Gruppierungsschlüsseln
Wenn Sie eine feinere Aufteilung benötigen, gruppieren Sie nach mehreren Spalten, indem Sie eine Liste an groupby() übergeben. Das Ergebnis besitzt einen MultiIndex, dessen Ebenen jeweils einer Gruppierungsspalte entsprechen. Gruppieren Sie beispielsweise nach 'region' und 'quarter', erhalten Sie Summen für jede Kombination aus Region und Quartal.
df3 = pd.DataFrame({
'region': ['North', 'North', 'South', 'South'],
'quarter': ['Q1', 'Q2', 'Q1', 'Q2'],
'sales': [200, 300, 150, 220]
})
print(df3.groupby(['region', 'quarter'])['sales'].sum())
# region quarter
# North Q1 200
# Q2 300
# South Q1 150
# Q2 220Kurze Überprüfung
Testen Sie Ihr Verständnis des in dieser Lektion behandelten split-apply-combine-Musters.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: das split-apply-combine-Muster, auf dem alle GroupBy-Operationen beruhen, wie Sie mit df.groupby() ein GroupBy-Objekt erstellen und wie Sie integrierte Aggregationen wie sum() und mean() anwenden, um ein Ergebnis pro Gruppe zu erhalten. Als Nächstes sehen Sie sich das Gruppieren nach einzelnen und mehreren Schlüsseln mit weiteren Aggregationsmethoden an.
Häufig gestellte Fragen
Ist die Lektion „Das Split-Apply-Combine-Muster“ kostenlos?
Ja — der vollständige Text von „Das Split-Apply-Combine-Muster“ 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 „Das Split-Apply-Combine-Muster“?
Verstehen Sie den konzeptionellen Ablauf von groupby: Aufteilen des DataFrame in Gruppen, Anwenden einer Funktion und Zusammenführen der Ergebnisse. 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 1 von 4.
Wie lange dauert die Lektion „Das Split-Apply-Combine-Muster“?
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
- Das Split-Apply-Combine-Muster
- GroupBy mit einem und mehreren Schlüsseln
- Die Methode agg()
- GroupBy-Transformation und -Filterung