Panda: come utilizzare groupby e contare in modo condizionale
È possibile utilizzare la seguente sintassi di base per eseguire un groupby e contare con la condizione in un DataFrame panda:
df. groupby (' var1 ')[' var2 ']. apply ( lambda x:(x==' val '). sum ()). reset_index (name=' count ')
Questa particolare sintassi raggruppa le righe del DataFrame in base a var1 e quindi conta il numero di righe in cui var2 è uguale a “val”.
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: Groupby e Count con Condizione in Panda
Supponiamo di avere il seguente DataFrame panda che contiene informazioni su vari giocatori di basket:
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
Il codice seguente mostra come raggruppare DataFrame in base alla variabile team e contare il numero di righe in cui la variabile pos è uguale a “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
Dal risultato possiamo vedere:
- La squadra A ha 1 riga in cui la colonna pos è uguale a “Gu”
- La squadra B ha 2 righe in cui la colonna pos è uguale a “Gu”
Possiamo usare una sintassi simile per eseguire un groupby e contare con una condizione numerica.
Ad esempio, il codice seguente mostra come raggruppare per variabile della squadra e contare il numero di righe in cui la variabile punti è maggiore di 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
Dal risultato possiamo vedere:
- La squadra A ha 3 linee in cui la colonna dei punti è maggiore di 15
- La squadra B ha 2 linee in cui la colonna dei punti è maggiore di 15
Puoi utilizzare una sintassi simile per eseguire un groupby e contare con qualsiasi condizione specifica desideri.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:
Come contare valori univoci utilizzando Pandas GroupBy
Come applicare una funzione a Pandas Groupby
Come creare un grafico a barre da Pandas GroupBy