Panda's: gebruik groupby om het gemiddelde te berekenen en negeer nan's niet
Wanneer u de functie pandas groupby() gebruikt om op één kolom te groeperen en de gemiddelde waarde van een andere kolom te berekenen, negeren panda’s standaard de NaN- waarden.
Als u in plaats daarvan NaN wilt weergeven als er NaN- waarden in een kolom aanwezig zijn, kunt u de volgende basissyntaxis gebruiken:
df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})
In dit specifieke voorbeeld worden de rijen van de DataFrame op Team- kolom gegroepeerd en wordt vervolgens de gemiddelde waarde van de puntenkolom berekend zonder de NaN- waarden te negeren.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: gebruik panda’s groupby() en negeer NaN’s niet
Stel dat we het volgende panda’s DataFrame hebben dat informatie bevat over verschillende basketbalspelers:
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
Stel dat we de volgende syntaxis gebruiken om de gemiddelde puntwaarde te berekenen, gegroepeerd per team :
#calculate mean of points, grouped by team
df. groupby (' team ')[' points ']. mean ()
team
At 21.0
B 22.8
Name: points, dtype: float64
Houd er rekening mee dat de gemiddelde puntenwaarde voor elk team wordt geretourneerd, zelfs als er een NaN- waarde voor team A in de puntenkolom staat.
Standaard negeren panda’s eenvoudigweg de NaN- waarde bij het berekenen van het gemiddelde.
Als u in plaats daarvan NaN als gemiddelde waarde wilt weergeven als er inderdaad NaN’s aanwezig zijn, kunt u de volgende syntaxis gebruiken:
#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
Houd er rekening mee dat er deze keer een NaN- waarde wordt geretourneerd als de gemiddelde puntwaarde voor team A.
Door het argument skipna=False te gebruiken, hebben we panda’s verteld de NaN- waarden niet te negeren bij het berekenen van het gemiddelde.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:
Hoe u unieke waarden kunt tellen met Pandas GroupBy
Een functie toepassen op Panda’s Groupby
Hoe u een staafdiagram kunt maken vanuit Pandas GroupBy