このページでは統計の基本となる標準偏差について全部で5つの求め方を紹介します。
今日はPythonを使って標準偏差を求める方法を勉強していきましょう!
標準偏差をPythonで求める方法はいろいろなモジュールを使ってできますよ。
はい!頑張って理解していきますね!
自分でコードの入力も行えば理解も進みそうですね!
標準偏差は分散と並んでデータのばらつき具合を知る上で重要な指標です。
この記事を参考に扱う情報やデータの型に合わせて、柔軟に標準偏差を求めることができるようになっていただければと思います。
また、標準偏差について統計的な意味を知りたい方はこちらを参照してください。
標準偏差を求める5つの方法
Pythonで標準偏差を求める場合、5つの方法があります。
- 定義通りにsum関数やlen関数を使用して求める方法
- statistics.pstdev関数を使用して求める方法
- numpy.std関数を使用して求める方法
- scipy.stats.tstd関数を使用して求める方法
- pandas.DataFrame.std関数を使用して求める方法
それぞれ順番に説明していきます。
定義通りにsum関数やlen関数を使用して求める
分散の求め方通りにPython標準の関数のみを使って計算します。
sum関数,len関数を用いることで、平均値を求めることが出来ます。
この値を利用することで、for文内で各データと平均の差を合計したもの(=偏差平方和)を求めます。
この偏差平方和をデータの数で割ると分散を求められます。
したがって、この分散の平方根(√)を求めることで標準偏差を求めます。
import math
score = [48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51]
#scoreの平均を求める
mean_score = sum(score)/len(score)
#偏差平方和を求める
dev_score = 0
for n in score:
dev_score += (n -mean_score)**2
#分散は偏差平方和/データの数
var_score = dev_score/len(score)
#標準偏差は分散の平方根(√)を求める
std_score = math.sqrt(var_score)
print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.272149045271345 です。
len関数, sum関数の使い方については以下も参照ください!
statistics.pstdev関数を使用して求める方法
statisticsモジュールをインポートし、statistics.pstdev関数を使って求めます。
import statistics #statisticsモジュールをインポート
score = [48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51]
# 標準偏差を計算
std_score = statistics.pstdev(score)
print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.2721490452713455 です。
numpy.std関数を使用して求める方法
numpyモジュールをインポートし、numpy.std関数を使って求めます。
import numpy as np #numpyモジュールをインポート
score = [48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51]
# 標準偏差を計算
std_score = np.std(score)
print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.272149045271345 です。
scipy.stats.tstd関数を使用して求める方法
scipyモジュールをインポートし、scipy.stats.tstd関数を使って求めます。
from scipy import stats
score = [48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51]
# 標準偏差を計算
std_score = stats.tstd(score, ddof=0)
print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.272149045271345 です。
pandas.DataFrame.std関数を使用して求める
pandasモジュールをインポートし、pandasのデータ形式DataFrameのstd関数を使って求めます。
import pandas as pd #pandasモジュールをインポート
#Datafreme型のデータを準備
score = pd.DataFrame([48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51])
#pandas.DataFrame.var関数を用いる。
#score[n]で標準偏差を求めたい列を指定。
std_score = score[0].std(ddof=0)
#md[0]を指定することで標準偏差のみ取得、指定しない場合はDataFreme型で返される
print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.272149045271345 です。
できましたよ!
標準偏差を求めるだけでもこんなにたくさんあるんですね。
たくさんの方法があるから目的に合わせて使い分けられるのが良いですね!
最後のpandas.DataFrame.std()はたくさんのデータを分析したいときに行や列単位で標準偏差を求められるから便利です!
まとめ
標準偏差を求める方法も用いるモジュールによって様々です。
自身が分析したいデータに合わせて使い分けることができれば、様々な状況で標準偏差を求めることができるようになると思います。
また最後に紹介したpandas.DataFrame.std()を用いた方法は表形式のファイルやデータベースから引き出したデータに対して用いる際にはよく使いますので、実行イメージを覚えておいていただけたらと思います。
一通り実行してみて、「標準偏差のことがよくわからないな」と感じた方は以下の記事も参考になると思います!
このサイトの記事一覧へは以下へアクセス!
コメント