Pythonで統計分析!平均・中央値・標準偏差の求め方を初心者向けに完全解説
生徒
「最近よく耳にする『データサイエンス』や『統計分析』に興味があるのですが、パソコン初心者でもPythonを使えば計算ができるようになりますか?」
先生
「もちろんです。Python(パイソン)は数あるプログラミング言語の中でも、データの計算が得意で、初心者にも読みやすい書き方が特徴です。数学が苦手な人でも、専用の道具を使えば一瞬で答えが出せますよ。」
生徒
「平均だけじゃなくて、標準偏差とか難しい言葉も出てきて不安です。具体的にどうやって計算するのか、基礎から教えてほしいです!」
先生
「では、データの全体像を把握するために欠かせない『平均』『中央値』『標準偏差』の3つを中心に、具体的なコードの書き方を一緒に見ていきましょう!」
1. Pythonを使った統計分析とは?
統計分析(とうけいぶんせき)と聞くと、複雑な数式を思い浮かべて身構えてしまうかもしれません。しかし、現代のデータ分析において、人間が手計算で何時間もかける必要はありません。Python(パイソン)というプログラミング言語を使えば、数千、数万という膨大なデータの中から、一瞬で特徴を導き出すことができます。
Pythonがなぜデータ分析に選ばれているのか。その最大の理由は、「ライブラリ」と呼ばれる便利な拡張セットが充実しているからです。ライブラリとは、特定の目的(今回は計算)のために作られた「道具箱」のようなものです。この道具箱の中には、平均値を出す魔法の杖や、グラフを作る魔法の筆が入っています。
この記事では、データ分析の第一歩として、データの中心地やバラつきを調べるための基本的な手法をマスターしていきます。プログラミング未経験の方でも、まずは「Pythonを使えばこんなに簡単に計算ができるんだ!」と実感してもらうことが大切です。
2. データ分析の必須アイテム「NumPy」と「Pandas」
本格的にPythonで計算を始める前に、絶対に知っておくべき2つのライブラリをご紹介します。
- NumPy(ナムパイ): 数値計算を高速に行うためのライブラリです。行列計算など、数学的な処理が得意です。
- Pandas(パンダス): 表形式のデータ(Excelのようなデータ)を扱うためのライブラリです。データの読み込みや加工に最適です。
今回は、この中から最も基本的で扱いやすいライブラリを使い、リスト形式(数値の並び)のデータを分析していきます。Pythonでは、まずこれらを「インポート(呼び出し)」することから作業が始まります。
3. 基本中の基本!「平均値(Mean)」を求める方法
平均値(へいきんち)とは、すべてのデータの合計をデータの個数で割った値のことです。学校のテストの点数などで最もなじみがある指標ですね。Pythonでは、自分で足し算や割り算を書かなくても、専用の関数を使うだけで求めることができます。
例えば、あるクラスの5人のテスト結果が「70, 80, 60, 90, 75」だったとしましょう。これらをPythonの「リスト」という機能を使って変数に入れ、計算してみます。
import statistics
# テストの点数リスト
scores = [70, 80, 60, 90, 75]
# statisticsライブラリを使って平均を計算
mean_value = statistics.mean(scores)
print("テストの平均点は:", mean_value)
実行結果は以下のようになります。
テストの平均点は: 75
このように、statistics.mean()という命令を使うだけで、一瞬で平均が求められました。
4. 極端な値に強い!「中央値(Median)」の重要性
次に紹介するのは中央値(ちゅうおうち)です。これは、データを小さい順に並べたときに、ちょうど真ん中にくる値のことです。
「平均があれば十分じゃないの?」と思うかもしれませんが、実は平均値には「極端な値に引っ張られやすい」という弱点があります。例えば、年収の調査で1人だけ「100億円」稼いでいる人が混ざると、他の全員が300万円でも、平均年収は跳ね上がってしまいます。これでは、一般的な人の感覚とはかけ離れた数字になってしまいますよね。
そんな時、データを順番に並べて真ん中の値を採用する中央値を使えば、より実態に近い数値を把握できるのです。
import statistics
# 極端な値が含まれるデータ(1人だけ1000が入っている)
data = [10, 12, 15, 13, 1000]
# 平均値と中央値を比較してみよう
mean_val = statistics.mean(data)
median_val = statistics.median(data)
print("平均値:", mean_val)
print("中央値:", median_val)
実行結果は以下の通りです。
平均値: 210.0
中央値: 13
平均値は1000に影響されて「210」になっていますが、中央値は「13」となり、大半のデータの傾向をうまく表せていることが分かります。
5. データのバラつきを知る「標準偏差(Standard Deviation)」
データ分析で最も重要な概念の一つが標準偏差(ひょうじゅんへんさ)です。これは簡単に言うと、「データが平均値からどのくらいバラついているか」を表す指標です。
例えば、「全員が70点」のクラスと、「0点と100点が半分ずつ」のクラスがあったとします。どちらも平均点は50点(または70点付近)になりますが、クラスの状態は全く違いますよね。
- 標準偏差が小さい: データが平均の周りにギュッと集まっている。
- 標準偏差が大きい: データがバラバラで、差が激しい。
Pythonで標準偏差を求めるには、同じくライブラリの関数を使用します。
import statistics
# クラスAとクラスBの点数比較
class_a = [65, 70, 75, 68, 72] # みんな平均に近い
class_b = [10, 50, 90, 20, 100] # 点数がバラバラ
# 標準偏差(stdev)を計算
stdev_a = statistics.stdev(class_a)
stdev_b = statistics.stdev(class_b)
print("クラスAのバラつき:", stdev_a)
print("クラスBのバラつき:", stdev_b)
実行結果を見てみましょう。
クラスAのバラつき: 3.847076812334269
クラスBのバラつき: 40.37325847637375
クラスBの方が圧倒的に数値が大きいですね。これにより、数字だけで「クラスBは個人差が非常に激しい」という背景が読み取れるようになります。
6. 便利な「NumPy」を使った一括計算テクニック
これまでは標準ライブラリを使用してきましたが、実際のプロの現場ではNumPy(ナムパイ)というライブラリがよく使われます。NumPyを使うと、より大量のデータを高速に、そして短いコードで処理できるようになります。
まず、ライブラリを「np」という短い名前で使えるように設定するのが一般的です。これを「エイリアス(別名)」と呼びます。パソコンを触ったことがない方でも、この書き方は決まり文句として覚えておくと便利ですよ。
import numpy as np
# サンプルデータを作成
prices = [1200, 1500, 1100, 1800, 1300, 2000]
# NumPyの関数で一気に計算
avg_p = np.mean(prices) # 平均
med_p = np.median(prices) # 中央値
std_p = np.std(prices) # 標準偏差
print(f"平均価格: {avg_p}円")
print(f"中央値: {med_p}円")
print(f"標準偏差: {std_p:.2f}")
実行結果は以下のようになります。
平均価格: 1483.3333333333333円
中央値: 1400.0円
標準偏差: 318.42
ここで使った:.2fという書き方は、小数点以下が長くなりすぎないように「2桁まで表示してね」という指定です。見やすいレポートを作るためのちょっとしたコツです。
7. データの「最大値・最小値」と「範囲」も知っておこう
平均や標準偏差だけでなく、データの全体像を掴むには最大値(一番大きな値)と最小値(一番小さな値)も重要です。この2つの差を「範囲(レンジ)」と呼び、データの広がりを確認する材料になります。
例えば、あるお店の1週間の来客数を分析してみましょう。最大と最小を知ることで、一番忙しい日と暇な日の差が分かります。
visitors = [45, 60, 38, 92, 120, 85, 77]
# 最大値
max_v = max(visitors)
# 最小値
min_v = min(visitors)
print(f"今週の最大来客数: {max_v}人")
print(f"今週の最小来客数: {min_v}人")
print(f"その差(レンジ): {max_v - min_v}人")
このように、Pythonには最初から備わっている機能(組み込み関数)も多く、これらを組み合わせるだけで立派な統計レポートが作成可能です。
8. なぜPythonで統計を学ぶと将来役立つのか
今の世の中は、あらゆる場所でデータが活用されています。スマートフォンの利用履歴、コンビニの売上、スポーツ選手の成績管理など、すべてが数字として蓄積されています。
これらの数字をただ眺めているだけでは、何も見えてきません。しかし、今回学んだ平均、中央値、標準偏差といった武器をPythonで操れるようになれば、「次に売れる商品は何か」「どの工程に無駄があるのか」という予測ができるようになります。
プログラミングと聞くと「アプリを作るもの」というイメージが強いかもしれませんが、実は「意思決定を助けるための強力な計算機」としての側面が非常に大きいです。事務職、営業職、あるいは学生の方であっても、Pythonでデータを扱えるスキルは、あなたの価値を大きく高めてくれるでしょう。
まずは、手近な数字(お小遣い帳の記録や、体重の変化など)をPythonに入れて、今回のコードを試してみてください。エラーが出ても大丈夫です。それを解決していく過程こそが、上達への近道です。