Panda: usa groupby per calcolare la media e non ignorare i nan
Quando si utilizza la funzione pandas groupby() per raggruppare in base a una colonna e calcolare il valore medio di un’altra colonna, i panda ignoreranno i valori NaN per impostazione predefinita.
Se invece vuoi visualizzare NaN se in una colonna sono presenti valori NaN , puoi utilizzare la seguente sintassi di base:
df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})
Questo particolare esempio raggrupperà le righe della colonna DataFrame per Team e quindi calcolerà il valore medio della colonna dei punti senza ignorare i valori NaN .
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: usa pandas groupby() e non ignorare NaNs
Supponiamo di avere il seguente DataFrame panda che contiene informazioni su vari giocatori di basket:
import pandas as pd
import numpy as np
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
' points ': [15, np.nan, 24, 25, 20, 35, 34, 19, 14, 12]})
#view DataFrame
print (df)
team points
0 to 15.0
1 A NaN
2 A 24.0
3 A 25.0
4 A 20.0
5 B 35.0
6 B 34.0
7B 19.0
8B 14.0
9B 12.0
Supponiamo di utilizzare la seguente sintassi per calcolare il valore del punto medio, raggruppato per squadra :
#calculate mean of points, grouped by team
df. groupby (' team ')[' points ']. mean ()
team
At 21.0
B 22.8
Name: points, dtype: float64
Tieni presente che viene restituito il valore del punto medio per ciascuna squadra , anche se è presente un valore NaN per la squadra A nella colonna dei punti.
Per impostazione predefinita, i panda ignorano semplicemente il valore NaN quando calcolano la media.
Se invece vuoi visualizzare NaN come valore medio se sono effettivamente presenti NaN , puoi utilizzare la seguente sintassi:
#calculate mean points value grouped by team and don't ignore NaNs df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )}) points team To NaN B 22.8
Tieni presente che questa volta viene restituito un valore NaN come valore del punto medio per la squadra A.
Utilizzando l’argomento skipna=False , abbiamo detto ai panda di non ignorare i valori NaN nel calcolo della media.
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