Panda's: groupby gebruiken met het aantal bakken


U kunt de volgende syntaxis gebruiken om het aantal vakken van een variabele te berekenen, gegroepeerd door een andere variabele in panda’s:

 #define bins
groups = df. groupby ([' group_var ', pd. cut (df. value_var , bins)])

#display bin count by group variable
groups. size (). unstack ()

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: Gebruik GroupBy met het aantal bakken in Pandas

Stel dat we het volgende panda’s DataFrame hebben dat de punten weergeeft die zijn gescoord door basketbalspelers van verschillende teams:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                            'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [4, 7, 7, 11, 12, 15, 19, 19,
                             5, 5, 11, 12, 14, 14, 15, 15]})

#view DataFrame
print (df)

   team points
0 to 4
1 to 7
2 to 7
3 to 11
4 to 12
5 to 15
6 to 19
7 to 19
8 B 5
9 B 5
10 B 11
11 B 12
12 B 14
13 B 14
14 B 15
15 B 15

We kunnen de volgende syntaxis gebruiken om de frequentie van de punten voor elk team te berekenen, gegroepeerd in specifieke bakken:

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 15, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 15] (15, 20]
  team			
     A 3 3 2
     B 2 6 0

Zo interpreteert u het resultaat:

  • In totaal scoorden 3 spelers van team A tussen 0 en 10 punten.
  • In totaal scoorden 3 spelers van team A tussen de 10 en 15 punten.
  • In totaal scoorden 2 spelers van team A tussen de 15 en 20 punten.

Enzovoort.

Merk op dat we kunnen specificeren welke bins we willen in de functie pd.cut() .

We zouden bijvoorbeeld slechts twee bakken kunnen definiëren:

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 20]
  team		
     At 3 5
     B 2 6

Zo interpreteert u het resultaat:

  • In totaal scoorden 3 spelers van team A tussen 0 en 10 punten.
  • In totaal scoorden 5 spelers van team A tussen de 10 en 20 punten.
  • In totaal scoorden 2 spelers van team B tussen 0 en 10 punten.
  • In totaal scoorden 6 spelers van team B tussen de 10 en 20 punten.

Opmerking 1 : De volledige documentatie van de GroupBy- functie vindt u hier .

Opmerking 2 : De volledige documentatie van de knipfunctie vindt u hier .

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:

Panda’s: hoe bereken je de cumulatieve som per groep
Panda’s: unieke waarden per groep tellen
Panda’s: hoe de modus per groep te berekenen
Panda’s: hoe de correlatie per groep te berekenen

Einen Kommentar hinzufügen

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