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