Panda's: hoe te groeperen en aggregeren over meerdere kolommen


Vaak wilt u mogelijk meerdere kolommen van een Panda DataFrame groeperen en samenvoegen.

Gelukkig is dit eenvoudig te doen met de panda’s .groupby() en .agg() functies.

In deze tutorial worden verschillende voorbeelden van praktisch gebruik van deze functies uitgelegd.

Voorbeeld 1: Groepeer op twee kolommen en vind het gemiddelde

Stel dat we de volgende panda’s DataFrame hebben:

 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

De volgende code laat zien hoe u kunt groeperen op de kolommen ‚team‘ en ‚positie‘ en hoe u de gemiddelde passen kunt vinden:

 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

De uitvoer vertelt ons:

  • De gemiddelde assists voor spelers op positie G van team A zijn 5,0 .
  • De gemiddelde assists voor spelers op positie F in team B zijn 6,0 .
  • De gemiddelde assists voor spelers op positie G van team B zijn 7,5 .

Enzovoort.

We kunnen ook de volgende code gebruiken om de kolommen van het resulterende DataFrame te hernoemen:

 #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

Voorbeeld 2: Groepeer op twee kolommen en vind meerdere statistieken

Laten we aannemen dat we dezelfde panda’s DataFrame gebruiken als in het vorige voorbeeld:

 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]})

De volgende code laat zien hoe je het mediaan- en maximumaantal rebounds kunt vinden, gegroepeerd in de kolommen ‚team‘ en ‚positie‘:

 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

De uitvoer vertelt ons:

  • De gemiddelde rebounds voor spelers in de G-positie van team A zijn 11 .
  • De maximale rebounds voor spelers in positie G van team A zijn 11 .
  • De mediane rebounds van spelers op positie F van team B zijn 8 .
  • De maximale rebounds voor spelers in positie F van team B zijn 10 .

Enzovoort.

Aanvullende bronnen

Hoe u een Pandas DataFrame op meerdere voorwaarden kunt filteren
Hoe ontbrekende waarden in een Pandas DataFrame te tellen
Hoe meerdere Panda’s DataFrames te stapelen

Einen Kommentar hinzufügen

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