Panda's: hoe twee kolommen te groeperen en samen te voegen
U kunt de volgende basissyntaxis gebruiken met de functie groupby() in panda’s om op twee kolommen te groeperen en een andere kolom samen te voegen:
df. groupby ([' var1 ',' var2 '])[' var3 ']. mean ()
In dit specifieke voorbeeld wordt het DataFrame gegroepeerd op de kolommen var1 en var2 en wordt vervolgens het gemiddelde van kolom var3 berekend.
De volgende voorbeelden laten zien hoe u op twee kolommen kunt groeperen en aggregeren met behulp van de volgende panda’s DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'F'], ' points ': [15, 22, 24, 25, 20, 35, 34, 19, 14, 12]}) #view DataFrame print (df) team position points 0 AG 15 1 AG 22 2 AF 24 3 AF 25 4 AF 20 5 BG 35 6 BG 34 7 BG 19 8 BG 14 9 BF 12
Voorbeeld 1: Groepeer twee kolommen en bereken het gemiddelde van een andere kolom
We kunnen de volgende syntaxis gebruiken om de gemiddelde waarde van de puntenkolom te berekenen, gegroepeerd op team- en positiekolommen :
#calculate mean of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. mean ()
team position
AF23.0
G 18.5
BF 12.0
G 25.5
Name: points, dtype: float64
Uit het resultaat kunnen we zien:
- De gemiddelde puntenwaarde van spelers van team A op positie F is 23 .
- De gemiddelde puntenwaarde van de spelers van team A op positie G is 18,5 .
Enzovoort.
Voorbeeld 2: Groepeer twee kolommen en bereken het maximum van een andere kolom
We kunnen de volgende syntaxis gebruiken om de maximale waarde van de puntenkolom te berekenen, gegroepeerd op team- en positiekolommen :
#calculate max of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. max ()
team position
AF25
G22
BF 12
G 35
Name: points, dtype: int64
Uit het resultaat kunnen we zien:
- De maximale puntenwaarde voor spelers van team A op positie F is 25 .
- De maximale puntenwaarde voor spelers van team A op positie G is 22 .
Enzovoort.
Voorbeeld 3: Groepeer op twee kolommen en tel exemplaren
We kunnen de volgende syntaxis gebruiken om het aantal keren dat elke combinatie van de team- en positiekolommen voorkomt te tellen:
#count occurrences of each combination of team and position columns
df. groupby ([' team ', ' position ']). size ()
team position
AF3
G2
BF 1
G4
dtype: int64
Uit het resultaat kunnen we zien:
- Er zijn 3 spelers in team A op positie F.
- Er zijn 2 spelers van team A op positie G.
Enzovoort.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:
Hoe u unieke waarden kunt tellen met Pandas GroupBy
Een functie toepassen op Panda’s Groupby
Hoe u een staafdiagram kunt maken vanuit Pandas GroupBy