Python|分散・標準偏差を計算する:statistics.variance(), statistics.stdev()

1. はじめに

データ分析や統計処理において、「分散」や「標準偏差」は非常に重要な指標です。
Pythonでは、statisticsモジュールを使うことで簡単にこれらの値を計算できます。

本記事では、Pythonのstatistics.variance()statistics.stdev()関数を使って、分散と標準偏差を求める方法を初心者にもわかりやすく解説します。
実務での利用例やエラー対策も紹介するので、統計の基本をPythonでマスターしたい方はぜひ最後までご覧ください。

 

2. Pythonで分散・標準偏差を求める基本

2-1. 分散とは?標準偏差とは?

分散とは、データが平均からどれくらい散らばっているかを示す指標です。標準偏差はその分散の平方根で、単位が元のデータと同じになるため、より直感的にばらつきを把握できます。

Pythonのstatisticsモジュールを使えば、variance()で分散、stdev()で標準偏差を求めることができます。

2-2. statisticsモジュールの使い方

import statistics

data = [10, 20, 30, 40, 50]

# 分散を計算
variance = statistics.variance(data)

# 標準偏差を計算
stdev = statistics.stdev(data)

print("分散:", variance)
print("標準偏差:", stdev)

実行結果:

分散: 250
標準偏差: 15.811388300841896

上記のように、たった数行で分散と標準偏差が求められます。データ分析の前処理や統計的検定の準備に非常に役立ちます。

 

3. よくある使い方・応用例

3-1. 平均と合わせて使う

分散や標準偏差は、平均とセットで使われることが多いです。例えば、商品のレビュー点数や社員の評価スコアなどのばらつきを確認したいときに有効です。

import statistics

scores = [78, 85, 90, 92, 88, 75, 95]

average = statistics.mean(scores)
variance = statistics.variance(scores)
stdev = statistics.stdev(scores)

print(f"平均点: {average}")
print(f"分散: {variance}")
print(f"標準偏差: {stdev}")

実行結果:

平均点: 86.14
分散: 53.809999999999995
標準偏差: 7.333494026572523

3-2. 異常値(外れ値)の検出に活用

標準偏差を使えば、外れ値の検出にも活用できます。平均から標準偏差の2倍以上離れているデータを「異常値」として扱うのが一般的です。

data = [100, 102, 98, 101, 250]  # 明らかに外れた値あり

mean_val = statistics.mean(data)
stdev_val = statistics.stdev(data)

# 外れ値を検出
for val in data:
    if abs(val - mean_val) > 2 * stdev_val:
        print(f"異常値を検出: {val}")

実行結果:

異常値を検出: 250

 

4. 注意点・エラー対策

4-1. 要素数が2未満だとエラーになる

statistics.variance()statistics.stdev() は、データが2個以上ないと使えません。要素数が足りないと StatisticsError が発生します。

import statistics

try:
    print(statistics.variance([42]))  # 要素が1個
except statistics.StatisticsError as e:
    print("エラー:", e)

実行結果:

エラー: variance requires at least two data points

4-2. 分散を自分で計算したいときの式

理解を深めるために、分散を自前で計算する方法も紹介します。公式は以下の通りです。

data = [10, 20, 30, 40, 50]
mean_val = sum(data) / len(data)
variance_manual = sum((x - mean_val) ** 2 for x in data) / (len(data) - 1)

print("手動計算の分散:", variance_manual)

実行結果:

手動計算の分散: 250.0

自分で式を実装してみることで、statistics.variance()の動作原理もより深く理解できます。

 

5. まとめ

本記事では、Pythonのstatistics.variance()statistics.stdev()を使って分散と標準偏差を計算する方法について詳しく解説しました。

  • 分散はデータのばらつきを数値化する指標
  • 標準偏差は分散の平方根で、より直感的な理解に役立つ
  • 異常値の検出など、実務でも活用できる
  • データ数が2つ以上必要である点に注意

これらの統計関数は、業務でのデータ分析や機械学習の前処理に欠かせないスキルです。Python初心者の方も、この機会にしっかりと習得しておきましょう。

実務の中では、品質管理・マーケティング分析・顧客行動分析など様々なシーンで役立ちます。まずはサンプルコードを実行し、仕組みを体験してみてください。

タイトルとURLをコピーしました