ここでは PythonのPandasライブラリを使って標準偏差を計算する方法 を、基礎から実用的な応用まで、できるだけ詳しく解説します。
目次
標準偏差とは?
- 標準偏差(Standard Deviation, SD) はデータのばらつきを表す代表的な統計量です。
- 値が小さいほどデータは平均値の近くに集まり、大きいほど散らばっています。
- 数式的には、平均からの偏差の二乗和をデータ数で割り、その平方根を取ったものです。
Pandasで標準偏差を計算する基本
Pandasでは、DataFrame.std()
または Series.std()
を使います。
例:Seriesの場合
import pandas as pd
data = pd.Series([10, 12, 23, 23, 16, 23, 21, 16])
print(data.std())
DataFrameでの標準偏差
DataFrameでは、列ごと・行ごとに計算できます。
df = pd.DataFrame({
"A": [1, 2, 3, 4],
"B": [10, 20, 30, 40]
})
# 列ごとの標準偏差(デフォルト)
print(df.std())
# 行ごとの標準偏差
print(df.std(axis=1))
引数の詳細
Series.std(ddof=1)
/ DataFrame.std(axis=0, ddof=1, skipna=True)
axis
0
(デフォルト):列ごとに計算1
:行ごとに計算
ddof
(自由度調整)- デフォルトは
1
(母集団ではなく標本標準偏差) 0
にすると「母標準偏差」として計算
- デフォルトは
skipna
True
(デフォルト):欠損値NaNを無視False
:NaNを含む場合は結果もNaN
NumPyとの違い
Pandasは内部的にNumPyを使っていますが、少し違いがあります。
import numpy as np
data = [10, 12, 23, 23, 16, 23, 21, 16]
print(np.std(data, ddof=0)) # 母標準偏差
print(np.std(data, ddof=1)) # 標本標準偏差
print(pd.Series(data).std()) # デフォルトはddof=1
Pandasのstd()
は標本標準偏差(ddof=1) がデフォルトです。
実用例
グループごとの標準偏差
df = pd.DataFrame({
"Category": ["A", "A", "B", "B", "B"],
"Value": [10, 12, 23, 21, 16]
})
print(df.groupby("Category")["Value"].std())
欠損値がある場合
df = pd.DataFrame({"A": [1, 2, None, 4, 5]})
print(df.std()) # skipna=True(欠損値無視)
print(df.std(skipna=False)) # 欠損値含めるのでNaN
まとめ
- Pandasで標準偏差を計算するのは
std()
メソッド。 - デフォルトは 標本標準偏差(ddof=1)。
- 行・列単位で指定可能(
axis
)。 - 欠損値はデフォルトで無視(
skipna=True
)。 - グループ化やNumPyとの併用で柔軟に使える。
以上、PythonのPandasで標準偏差を計算する方法についてでした。
最後までお読みいただき、ありがとうございました。