パンダ: 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 から棒グラフを作成する方法