パンダ: groupby を使用して平均を計算し、nan を無視しません


pandas のgroupby()関数を使用して 1 つの列でグループ化し、別の列の平均値を計算する場合、pandas はデフォルトでNaN値を無視します。

列にNaN値が存在する場合にNaNを表示したい場合は、次の基本構文を使用できます。

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

この特定の例では、DataFrame by Team列の行をグループ化し、 NaN値を無視せずにポイント列の平均値を計算します。

次の例は、この構文を実際に使用する方法を示しています。

例: pandas groupby() を使用し、NaN を無視しないでください。

さまざまなバスケットボール選手に関する情報を含む次のパンダ データフレームがあるとします。

 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

次の構文を使用して、チームごとにグループ化された平均ポイント値を計算するとします。

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

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

ポイント列にチーム A のNaN値がある場合でも、各チームの平均ポイント値が返されることに注意してください。

デフォルトでは、pandas は平均を計算するときにNaN値を無視します。

実際にNaNが存在する場合にNaN を平均値として表示したい場合は、次の構文を使用できます。

 #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

今回はチーム A の平均ポイント値としてNaN値が返されることに注意してください。

Skipna=False引数を使用することで、平均を計算するときにNaN値を無視しないようにパンダに指示しました。

追加リソース

次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。

Pandas GroupBy を使用して一意の値をカウントする方法
Pandas Groupby に関数を適用する方法
Pandas GroupBy から棒グラフを作成する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です