Panda's: group by gebruiken met de where-voorwaarde
De eenvoudigste manier om group by te gebruiken met een Where- voorwaarde in panda’s is door de functie query() te gebruiken:
df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()
In dit specifieke voorbeeld wordt de gemiddelde waarde van punten berekend, gegroepeerd op positie , waarbij team gelijk is aan „A“ in sommige panda’s DataFrame.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: Groeperen op gebruiken met de Where-voorwaarde in Panda’s
Stel dat we het volgende panda’s DataFrame hebben dat informatie bevat over verschillende basketbalspelers:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'F'], ' points ': [22, 14, 15, 10, 8, 29, 33, 18]}) #view DataFrame print (df) team position points 0 AG 22 1 AG 14 2 AF15 3 AF 10 4 AF 8 5 BG 29 6 BG 33 7 BF 18
We kunnen de volgende code gebruiken om de gemiddelde puntwaarde te berekenen, gegroepeerd op positie , waarbij het team gelijk is aan „A“:
#calculate mean value of points, grouped by position, where team == 'A' df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index () position points 0 F 11.0 1G 18.0
Uit het resultaat kunnen we zien:
- De gemiddelde puntenwaarde voor spelers in positie “F” van team A is 11 .
- De gemiddelde puntenwaarde voor spelers in de “G”-positie van team A is 18 .
Houd er rekening mee dat we ook de operator & in de functie query() kunnen gebruiken om rijen te vinden waarin aan meerdere voorwaarden wordt voldaan.
De volgende code laat bijvoorbeeld zien hoe u de gemiddelde puntwaarde kunt berekenen, gegroepeerd op position , waarbij team gelijk is aan ‚A‘ en positie gelijk is aan ‚G‘:
#calculate mean value of points by position where team is 'A' and position is 'G' df. query (" team=='A' & position=='G' "). groupby ([" position "])[" points "]. mean (). reset_index () position points 0G 18.0
Uit het resultaat kunnen we zien dat de gemiddelde puntenwaarde voor spelers op positie „G“ in team A 18 is.
Omdat we twee voorwaarden hebben opgegeven in de functie query() , zijn alleen rijen gebruikt die aan beide voorwaarden voldoen.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:
Hoe u een GroupBy-som uitvoert in Pandas
Groupby en Plot gebruiken in Panda’s
Hoe u unieke waarden kunt tellen met GroupBy in Pandas