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