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

Aggiungi un commento

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