Panda: come utilizzare groupby con il conteggio dei contenitori


È possibile utilizzare la seguente sintassi per calcolare il numero di riquadri di una variabile raggruppata da un’altra variabile in panda:

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

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

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: utilizzare GroupBy con il numero di contenitori in Panda

Supponiamo di avere il seguente DataFrame panda che mostra i punti segnati da giocatori di basket di diverse squadre:

 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

Possiamo utilizzare la seguente sintassi per calcolare la frequenza dei punti per ciascuna squadra, raggruppati in contenitori specifici:

 #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

Ecco come interpretare il risultato:

  • In totale, 3 giocatori della squadra A hanno segnato tra 0 e 10 punti.
  • In totale, 3 giocatori della squadra A hanno segnato tra 10 e 15 punti.
  • In totale, 2 giocatori della squadra A hanno segnato tra 15 e 20 punti.

E così via.

Nota che possiamo specificare quali contenitori vogliamo nella funzione pd.cut() .

Ad esempio, potremmo definire solo due contenitori:

 #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

Ecco come interpretare il risultato:

  • In totale, 3 giocatori della squadra A hanno segnato tra 0 e 10 punti.
  • In totale, 5 giocatori della squadra A hanno segnato tra 10 e 20 punti.
  • In totale, 2 giocatori della squadra B hanno segnato tra 0 e 10 punti.
  • In totale, 6 giocatori della squadra B hanno segnato tra 10 e 20 punti.

Nota 1 : puoi trovare la documentazione completa della funzione GroupBy qui .

Nota 2 : qui è possibile trovare la documentazione completa della funzione di taglio .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Panda: come calcolare il cumulato per gruppo
Panda: come contare i valori unici per gruppo
Panda: come calcolare la modalità per gruppo
Panda: come calcolare la correlazione per gruppo

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *