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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert