CodeGym /Javaコース /Python SELF JA /データ分布を可視化するためのヒストグラムの作成

データ分布を可視化するためのヒストグラムの作成

Python SELF JA
レベル 41 , レッスン 3
使用可能

1. ヒストグラム作成の基本

ビュッフェテーブルを見て、どのおつまみが多いか考えたことがあれば、すでに少しはデータ分布について理解してるね。プログラミングでは、データの中で一見見えにくいパターンを見つけるためにヒストグラムを使うんだ。ヒストグラムは、特定のカテゴリや数値範囲にデータがどのように分布しているかを視覚的に分析するのに役立つよ。では、始めよう!

ヒストグラムとは?

ヒストグラムは、データの分布を特定の間隔や「ビン」(「バケット」や「バスケット」とも呼ばれることがある)に基づいて視覚化するためのグラフだよ。たとえば、学生がテストである特定の点数を取得した回数を知りたい場合、ヒストグラムが最適な方法になるね。

ヒストグラムの主なパラメータ

ヒストグラムはビン(カラム)で構成されていて、それぞれのビンは対応する間隔に落ちる値の数を表すんだ。主なパラメータは以下の通り:

  • ビン (bins): データ範囲を分割する間隔の数。
  • 色と枠線 (coloredgecolor): カラムの見た目を定義する。
  • 範囲 (range): 表示する最小値と最大値を設定する。
  • 密度 (density): Trueに設定すると、ヒストグラムが正規化され、カラム全体の面積が1になる。

hist()関数を使ったヒストグラムの作成

Matplotlibライブラリには、ヒストグラム作成を簡単にする便利な関数hist()があるよ。簡単な例を見てみよう:

Python

import matplotlib.pyplot as plt
import numpy as np

# データセットを作成する
data = np.random.normal(0, 1, 1000)

# ヒストグラムを作成する
plt.hist(data, bins=30, alpha=0.7, color='blue')
plt.title('データ分布のヒストグラム')
plt.xlabel('値')
plt.ylabel('頻度')
plt.show()

ここでは、np.random.normal()関数を使ってデータセットを生成している。この関数は正規分布を作成するんだ。データを30個のビンに分けて、alphaパラメータで透明度を設定してるよ。視覚化が改善されるね。

2. ビンの設定とグラフの外観

ビンの数とサイズの設定

ビンの数とサイズは、ヒストグラムの解釈に大きな影響を与えるよ。ビンが大きすぎると重要な詳細が隠れる可能性があるし、反対に小さすぎるとヒストグラムがぐちゃぐちゃで理解しづらくなることもあるんだ。

実践例:

Python

# ビンの数とサイズの変更
plt.hist(data, bins=10, color='green', edgecolor='black')
plt.title('10ビンのヒストグラム')
plt.xlabel('値')
plt.ylabel('頻度')
plt.show()

plt.hist(data, bins=50, color='red', edgecolor='black')
plt.title('50ビンのヒストグラム')
plt.xlabel('値')
plt.ylabel('頻度')
plt.show()

10個のビンと50個のビンを使った場合のヒストグラムの見た目の違いを見てみて!一目瞭然だよね。ここでは、サイズが重要だって分かるね!

ヒストグラムのパラメータ変更の実践例

ヒストグラムはビンの数だけじゃなく、色、透明度、さらにカラムスタイルも変更できるんだ。他の例を見てみよう:

Python

# 他の設定パラメータ
plt.hist(data, bins=30, density=True, color='purple', edgecolor='white', linestyle='dashed')
plt.title('スタイルを変更した密度ヒストグラム')
plt.xlabel('値')
plt.ylabel('密度')
plt.grid(True)
plt.show()

この例ではdensity=Trueを追加して、ヒストグラムを正規化した。これにより、グラフの下の面積が1になり、確率分布の密度を分析するときに役立つね。

3. ヒストグラムの利用例

ヒストグラムは、金融データの分析から物理実験まで、さまざまな分野で活用されているよ。本物のデータセットを使ってヒストグラムを活用する方法を見てみよう。

実際のデータセットでのヒストグラム作成

例えば、1年間の日平均気温を示すデータセットがあるとするね。そして、その気温が特定の範囲にどのくらい分布しているのかを分析したいんだ。

Python

# 気温のデータセット (例のために簡略化)
temperatures = [15, 16, 15, 14, 19, 22, 24, 25, 17, 18, 15, 16, 23, 24, 21, 19, 18, 20, 22, 25, 26, 27]

# ヒストグラムを作成する
plt.hist(temperatures, bins=5, color='navy', edgecolor='black')
plt.title('気温のヒストグラム')
plt.xlabel('気温 (°C)')
plt.ylabel('頻度')
plt.show()

この例では、5個のビンを使って値がどのように分布しているかを調べている。ヒストグラムは、ほとんどの気温が15〜20°Cの範囲にあることを示しているね。

1つのヒストグラムで分布を比較する

複数のデータセットの分布を1つのヒストグラムで比較する必要がある場合もあるね。Matplotlibでは、alpha (透明度)を使って複数のヒストグラムを重ねることができるよ。

例3: 分布の比較

Python

import matplotlib.pyplot as plt

# データを生成する
data1 = [5, 10, 10, 15, 15, 20, 25, 30, 30, 35, 40]
data2 = [5, 7, 9, 10, 11, 13, 15, 17, 19, 20, 25]

# 重ねたヒストグラムを作成する
plt.hist(data1, bins=5, color="blue", alpha=0.5, label="データセット 1")
plt.hist(data2, bins=5, color="green", alpha=0.5, label="データセット 2")
plt.xlabel("値")
plt.ylabel("頻度")
plt.title("2つの分布の比較")
plt.legend()
plt.show()

この例では、それぞれのヒストグラムにalpha=0.5というパラメータを使って、カラムを半透明にしているんだ。これで、分布間の重なりを視覚的に比較できるようになるね。

ヒストグラム作成の便利なコツ

  • 最適なビンの選択: データ量や特性に応じてビンの数を調整する。少なすぎたり多すぎたりすると分布が歪むことがあるよ。
  • 分布の比較: 複数のヒストグラムを重ねるときは、alpha (透明度)を使おう。
  • グリッドを追加: グリッドがあるとデータをよりよく解釈できるよ。plt.grid(True)を使って追加しよう。
  • densityパラメータ: density=Trueを使うと、確率密度としてデータを表示できるんだ。特に分布を比較するときに便利だよ。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION