Pandas: verwenden sie groupby, um den durchschnitt zu berechnen und nans nicht zu ignorieren


Wenn Sie die Pandas-Funktion groupby() verwenden, um nach einer Spalte zu gruppieren und den Durchschnittswert einer anderen Spalte zu berechnen, ignoriert Pandas standardmäßig NaN- Werte.

Wenn Sie stattdessen NaN anzeigen möchten, wenn in einer Spalte NaN- Werte vorhanden sind, können Sie die folgende grundlegende Syntax verwenden:

 df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})

In diesem speziellen Beispiel werden die Zeilen der Spalte „DataFrame by Team “ gruppiert und dann der Durchschnittswert der Spalte „ points“ berechnet, ohne die NaN- Werte zu ignorieren.

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Verwenden Sie pandas groupby() und ignorieren Sie NaNs nicht

Angenommen, wir haben den folgenden Pandas-DataFrame, der Informationen über verschiedene Basketballspieler enthält:

 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

Angenommen, wir verwenden die folgende Syntax, um den durchschnittlichen Punktwert , gruppiert nach Team , zu berechnen:

 #calculate mean of points, grouped by team
df. groupby (' team ')[' points ']. mean ()

team
At 21.0
B 22.8
Name: points, dtype: float64

Beachten Sie, dass der durchschnittliche Punktwert für jedes Team zurückgegeben wird, auch wenn in der Punktespalte ein NaN- Wert für Team A vorhanden ist.

Standardmäßig ignoriert Pandas bei der Berechnung des Durchschnitts einfach den NaN- Wert.

Wenn Sie stattdessen NaN als Durchschnittswert anzeigen möchten, wenn tatsächlich NaNs vorhanden sind, können Sie die folgende Syntax verwenden:

 #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

Beachten Sie, dass dieses Mal ein NaN- Wert als durchschnittlicher Punktwert für Team A zurückgegeben wird.

Durch die Verwendung des Arguments „skipna=False“ haben wir Pandas angewiesen, NaN- Werte bei der Berechnung des Durchschnitts nicht zu ignorieren.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in Pandas ausführen:

So zählen Sie eindeutige Werte mit Pandas GroupBy
So wenden Sie eine Funktion auf Pandas Groupby an
So erstellen Sie ein Balkendiagramm aus Pandas GroupBy

Einen Kommentar hinzufügen

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