概要
DataFrameから平均と標準偏差を計算する方法をメモしておきます。
目次
列の平均と標準偏差を計算したい
とても簡単にできます。
>>> import pandas as pd >>> df = pd.DataFrame([[1,2,3,4,5,6], [6,5,4,3,2,1], [0,1,2,3,4,5], [5,4,3,2,1,0]], columns=[*"ABCDEF"]) >>> df.mean() A 3.0 B 3.0 C 3.0 D 3.0 E 3.0 F 3.0 dtype: float64 >>> df.std() A 2.943920 B 1.825742 C 0.816497 D 0.816497 E 1.825742 F 2.943920 dtype: float64
何も考える必要はないのだった。
リファレンス:
pandas.DataFrame.mean — pandas 0.24.2 documentation
pandas.DataFrame.std — pandas 0.24.2 documentation
行の平均と標準偏差を計算したい
「転置しとけば?」という天の声が聞こえたのを無視してやります。
numpy配列のようにaxisを指定するだけなのでこれも簡単です。
>>> import pandas as pd >>> df = pd.DataFrame([[1,2,3,4,5,6], [6,5,4,3,2,1], [0,1,2,3,4,5], [5,4,3,2,1,0]], columns=[*"ABCDEF"]) >>> df.mean(axis=1) 0 3.5 1 3.5 2 2.5 3 2.5 dtype: float64 >>> df.std(axis=1) 0 1.870829 1 1.870829 2 1.870829 3 1.870829 dtype: float64
よくできてますね。
特定の列・行だけ取り出してから計算する
基本的なindexing操作と組み合わせて使うことで、特定の行・列だけに対して計算するということも可能です。
A, Bに対してのみ出力させたい場合。
>>> df[["A", "B"]].mean() A 3.0 B 3.0 dtype: float64
describeメソッドで全体の雰囲気を掴む
describeメソッドを使うと様々な統計量を勝手に出してくれます。
>>> df.describe() # 列ごとに A B C D E F count 4.00000 4.000000 4.000000 4.000000 4.000000 4.00000 mean 3.00000 3.000000 3.000000 3.000000 3.000000 3.00000 std 2.94392 1.825742 0.816497 0.816497 1.825742 2.94392 min 0.00000 1.000000 2.000000 2.000000 1.000000 0.00000 25% 0.75000 1.750000 2.750000 2.750000 1.750000 0.75000 50% 3.00000 3.000000 3.000000 3.000000 3.000000 3.00000 75% 5.25000 4.250000 3.250000 3.250000 4.250000 5.25000 max 6.00000 5.000000 4.000000 4.000000 5.000000 6.00000 >>> df.T.describe() # describeで行ごとに処理したい場合は転置する 0 1 2 3 count 6.000000 6.000000 6.000000 6.000000 mean 3.500000 3.500000 2.500000 2.500000 std 1.870829 1.870829 1.870829 1.870829 min 1.000000 1.000000 0.000000 0.000000 25% 2.250000 2.250000 1.250000 1.250000 50% 3.500000 3.500000 2.500000 2.500000 75% 4.750000 4.750000 3.750000 3.750000 max 6.000000 6.000000 5.000000 5.000000
参考:
pandas.DataFrame.describe — pandas 0.24.2 documentation
pandasのdescribeで各列の要約統計量(平均、標準偏差など)を取得 | note.nkmk.me