Panda: come usare groupby con nlargest()


È possibile utilizzare la seguente sintassi per visualizzare gli n valori più grandi per gruppo in un DataFrame panda:

 #display two largest values by group
df. groupby (' group_var ')[' values_var ']. nlargest ( 2 )

E puoi utilizzare la seguente sintassi per eseguire determinate operazioni (come prendere la somma) sugli n valori più grandi per gruppo in un DataFrame panda:

 #find sum of two largest values by group
df. groupby (' group_var ')[' values_var ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con i seguenti DataFrame panda:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [12, 29, 34, 14, 10, 11, 7, 36, 34, 22]})

#view DataFrame
print (df)

  team points
0 to 12
1 to 29
2 to 34
3 to 14
4 to 10
5 B 11
6 B 7
7 B 36
8 B 34
9 B 22

Esempio 1: Visualizza gli N valori più grandi per gruppo

La seguente sintassi può essere utilizzata per visualizzare i due valori di punti più grandi raggruppati per squadra :

 #display two largest points values grouped by team
df. groupby (' team ')[' points ']. nlargest ( 2 )

team   
At 2 34
      1 29
B 7 36
      8 34
Name: points, dtype: int64

Il risultato mostra i due valori di punto più grandi per ciascuna squadra , insieme alle loro posizioni di indice nel DataFrame originale.

Esempio 2: eseguire un’operazione sugli N valori più grandi per gruppo

Possiamo utilizzare la seguente sintassi per calcolare la somma dei due valori di punti più grandi raggruppati per squadra :

 #calculate sum of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

team
At 63
B70
Name: points, dtype: int64

Ecco come interpretare il risultato:

  • La somma dei due valori di punto più grandi per la Squadra A è 63 .
  • La somma dei due valori di punto più grandi per la Squadra B è 70 .

Possiamo usare una sintassi simile per calcolare la media dei due valori di punti più grandi raggruppati per squadra :

 #calculate mean of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .mean ())

team
At 31.5
B 35.0
Name: points, dtype: float64

Ecco come interpretare il risultato:

  • La media dei due valori di punteggio più alti per la Squadra A è 31,5 .
  • La media dei due valori di punteggio più alti per la Squadra B è 35,0 .

Nota : qui è possibile trovare la documentazione completa per la funzione GroupBy .

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 *