度数分布表とヒストグラムの作り方をPythonで解説【初心者向け】

数学基礎
Sponsored Link

はじめに

データ分析で最初に重要なのは、「データがどのような状態なのか」を把握することです。
そのためによく使われるのが 度数分布表ヒストグラム です。

この記事では、Pythonを使って次のことを学びます。

  • 度数分布表を作成する方法

  • Matplotlibを用いたヒストグラムの描画方法

  • 累積度数分布を求めて可視化する方法

本記事では、Pythonを使って「度数分布表」と「ヒストグラム」を作成する方法を解説しますが、コードだけでなく統計の基礎も同時に理解しておくと、応用がぐっと楽になります。

数学に苦手意識がある人へ
独学だと「今日の記事の内容、なんとなくわかった気になって終わる…」という状態になりがちです。

そんな方に人気なのが 完全マンツーマンのオンライン数学塾「数強塾」

無料体験で自分に合うか試せます。
数強塾を試してみる👉 「数強塾」オンライン数学克服塾〈プロ講師〉

Pythonで度数分布表とヒストグラムを作成する方法

Pythonを使って度数分布表を作成するために必要なものは、データと同数分布表を書くために必要なモジュールになります。

必要なモジュールとデータセットの読み込み

まずデータですが、データは「例題で学ぶ統計入門」の救急車の出動回数を使ってみました。

基本的にデータは何でもいいので、お近くの手に入りやすいデータを使ってください。

度数分布表を書くために必要なモジュールが以下の二つになります。

  • pandas: 数表および時系列データ解析用
  • numpy: 数値計算

では早速データを読み込んでみましょう。

#
# 必要なモジュールの読込
#

import pandas as pd
import numpy as np

# データファイルの読込
ambulance_Dep = pd.read_excel("救急車出動回数.xlsx")
ambulance_Dep.head() # 先頭の5行だけ表示

次に後々便利なので、読み込んだデータの列をset_index()関数を使って、「年月日」の列をインデックスにします。

ambulance_Dep = ambulance_Dep.set_index('年月日') 
ambulance_Dep.head()

※数学の基本をしっかり固めたい人は、オンライン塾の 数強塾 もおすすめです。
数強塾をチェックする👉 「数強塾」オンライン数学克服塾〈プロ講師〉

要約統計量を取得

データの内容がどうなっているのか知りたいので、describe()関数を使って、救急車出動回数の基本統計量を見てみます。

ambulance.describe()

    • count 40: サンプルサイズ40日間
    • mean 2.05: 期間中の一日の平均出動数
    • std 1.299: 標準偏差
    • min 0: 一日の最小出動数
    • max 5: 一日の最大出動数

このようにコードで集計や可視化は簡単にできますが、背後にある「統計学の考え方」を押さえておくと、データの解釈に説得力が増します。

度数分布表の作成

スタージェスの公式から階級の数を求める

度数分布表を作る際に、一つの列にサンプルが何個入るかを決める階級の数を決める必要があります。

そんなときに便利なのが、スタージェスの公式です。

スタージェスの公式:

  • は階級の数です。
  • はサンプルサイズ(観測値の数)です。

この公式をデータに当てはめる前に、DataFrameの数値をndarrayオブジェクトに変換します。

dispatch = np.array(ambulance_Dep['出動回数'])

ここからこちらのページを参考に、度数分布表までを一気に作成します。

以下のコードを実行すると、

def frequency_distribution(data, class_width=None):
  data = np.asarray(data)
  if class_width is None:
    class_size = 1 + int(np.log2(data.size).round())
    class_width = round((data.max() - data.min())/class_size)

  bins = np.arange(0, data.max() + class_width + 1, class_width)
  hist = np.histogram(data, bins)[0]
  cumsum = hist.cumsum()

  return pd.DataFrame({'階級値': (bins[1:] + bins[:-1])/2,
  '度数': hist,
  '累積度数': cumsum,
  '相対度数':hist/cumsum[-1],
  '累積相対度数':cumsum/cumsum[-1]},
  index=pd.Index([f'{bins[i]}以上{bins[i+1]}未満' 
          for i in range(hist.size)], 
          name='階級'))

frequency_distribution(dispatch)

この度数分布表からヒストグラムを描画してみます。

必要なモジュールは描画モジュールmatplotlib です。

import matplotlib.pyplot as plt # 描画モジュールのインポート
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hist(dispatch, bins = 6, histtype = 'barstacked', ec = 'black')
plt.show()

以上度数分布表からヒストグラムの描画までをについて書いてみました。

まとめ

  • 度数分布表 はデータを区間ごとに整理して特徴をつかむ手法

  • ヒストグラム は分布を視覚化し、偏りや外れ値を直感的に理解できる

  • Python(pandas・numpy・matplotlib)を使えば、数行のコードで実装可能

🎓 学習をさらに進めたい方へ

今回は度数分布表とヒストグラムをPythonで実装しました。

データ分析を実務に活かすには、手法の背後にある統計の原理も理解しておくことが不可欠です。

数学がわかると、統計もデータ分析も一気に楽になります。
もし「もっと深く理解したい」「独学が限界」と感じたら、プロ講師がマンツーマンで教えてくれる 数強塾 が強い味方になります。

無料体験で授業の雰囲気を見れるので、まずは軽くチェックしてみてください。
数強塾をチェックする👉「数強塾」オンライン数学克服塾〈プロ講師〉

Sponsored Link

コメント

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