Pandas: so gruppieren und aggregieren sie über mehrere spalten hinweg
Häufig möchten Sie möglicherweise mehrere Spalten eines Pandas-DataFrames gruppieren und aggregieren.
Glücklicherweise ist dies mit den Pandas-Funktionen .groupby() und .agg() einfach zu bewerkstelligen.
In diesem Tutorial werden einige Beispiele für den praktischen Einsatz dieser Funktionen erläutert.
Beispiel 1: Gruppieren Sie nach zwei Spalten und ermitteln Sie den Durchschnitt
Angenommen, wir haben den folgenden Pandas-DataFrame:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame print (df) team position assists rebounds 0 AG 5 11 1 BG 7 8 2 BF 7 10 3 BG 8 6 4 BF 5 6 5 MF 7 9 6 MC 6 6 7 MC 9 10
Der folgende Code zeigt, wie man nach den Spalten „Team“ und „Position“ gruppiert und die durchschnittlichen Pässe ermittelt:
df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () team position assists mean 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
Die Ausgabe sagt uns:
- Der durchschnittliche Assists für Spieler auf Position G von Team A beträgt 5,0 .
- Der durchschnittliche Assists-Wert für Spieler auf Position F in Team B beträgt 6,0 .
- Der durchschnittliche Assists-Wert für Spieler auf Position G von Team B beträgt 7,5 .
Und so weiter.
Wir können auch den folgenden Code verwenden, um die Spalten des resultierenden DataFrame umzubenennen:
#group by team and position and find mean assists new = df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () #rename columns new.columns = ['team', 'pos', 'mean_assists'] #view DataFrame print (new) team pos mean_assists 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
Beispiel 2: Gruppieren Sie nach zwei Spalten und finden Sie mehrere Statistiken
Nehmen wir an, wir verwenden denselben Pandas-DataFrame wie im vorherigen Beispiel:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})
Der folgende Code zeigt, wie man den Median und die maximale Anzahl von Rebounds ermittelt, gruppiert in den Spalten „Team“ und „Position“:
df. groupby (['team', 'position']). agg ({'rebounds': ['median', 'max']}). reset_index () team position rebounds median max 0 A G 11 11 1 B F 8 10 2 B G 7 8 3 M C 8 10 4 M F 9 9
Die Ausgabe sagt uns:
- Der Median der Rebounds für Spieler auf der G-Position in Team A beträgt 11 .
- Der maximale Rebound für Spieler auf Position G von Team A beträgt 11 .
- Der Median der Rebounds der Spieler auf Position F von Team B beträgt 8 .
- Der maximale Rebound für Spieler auf Position F von Team B beträgt 10 .
Und so weiter.
Zusätzliche Ressourcen
So filtern Sie einen Pandas DataFrame nach mehreren Bedingungen
So zählen Sie fehlende Werte in einem Pandas DataFrame
So stapeln Sie mehrere Pandas DataFrames