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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert