Panda's: groupby gebruiken en voorwaardelijk tellen
U kunt de volgende basissyntaxis gebruiken om een groupby- en count-met-voorwaarde uit te voeren in een pandas DataFrame:
df. groupby (' var1 ')[' var2 ']. apply ( lambda x:(x==' val '). sum ()). reset_index (name=' count ')
Deze specifieke syntaxis groepeert de rijen van het DataFrame op basis van var1 en telt vervolgens het aantal rijen waarbij var2 gelijk is aan „val“.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: Groupby en Count with Condition 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', 'B', 'B', 'B', 'B'], ' pos ': ['Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) team pos points 0 A Gu 18 1 A Fo 22 2 A Fo 19 3 A Fo 14 4 B Gu 14 5 B Gu 11 6 B Fo 20 7 B Fo 28
De volgende code laat zien hoe u het DataFrame kunt groeperen op basis van de teamvariabele en hoe u het aantal rijen kunt tellen waarin de pos- variabele gelijk is aan „Gu“:
#groupby team and count number of 'pos' equal to 'Gu' df_count = df. groupby (' team ')[' pos ']. apply ( lambda x: (x==' Gu '). sum ()). reset_index (name=' count ') #view results print (df_count) team count 0 to 1 1 B 2
Uit het resultaat kunnen we zien:
- Team A heeft 1 rij waarbij de pos-kolom gelijk is aan “Gu”
- Team B heeft 2 rijen waarbij de pos-kolom gelijk is aan “Gu”
We kunnen een soortgelijke syntaxis gebruiken om een groupby uit te voeren en te tellen met een numerieke voorwaarde.
De volgende code laat bijvoorbeeld zien hoe u kunt groeperen op teamvariabele en het aantal rijen kunt tellen waarin de puntenvariabele groter is dan 15:
#groupby team and count number of 'points' greater than 15 df_count = df. groupby (' team ')[' points ']. apply ( lambda x: (x>15). sum ()). reset_index (name=' count ') #view results print (df_count) team count 0 to 3 1 B 2
Uit het resultaat kunnen we zien:
- Team A heeft 3 lijnen waarbij de puntenkolom groter is dan 15
- Team B heeft 2 lijnen waarbij de puntenkolom groter is dan 15
U kunt een vergelijkbare syntaxis gebruiken om een groupby uit te voeren en te tellen met elke gewenste specifieke voorwaarde.
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