非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】乱数で正規分布データを生成してヒストグラムを描画してみた

   

Pythonでデータの分布を視覚化する際、ヒストグラムは非常に便利です。今回は、NumPyを使って正規分布に基づいたデータを生成し、それをMatplotlibでヒストグラムとして描画する方法を解説します。さらに横方向のヒストグラム例や、ヒストグラムから度数データを取得する方法もご紹介します。

ランダムデータの生成とヒストグラム描画

import numpy as np
import matplotlib.pyplot as plt

# 平均100、標準偏差20の正規分布に基づくランダムデータを生成
# ave: 平均値, stdev: 標準偏差, サンプル数は1000
ave = 100
stdev = 20
x = np.random.normal(ave, stdev, 1000)

# ヒストグラムを描画
# bins=50 は棒の数を50に指定
fig, ax = plt.subplots()  # 図と軸を生成
ax.hist(x, bins=50, edgecolor='black')  # ヒストグラムをプロットし、棒に黒い輪郭線を追加

# ヒストグラムを表示
plt.show()
 

棒グラフにラインを入れる

ヒストグラムの棒に黒いラインを追加するには、ax.histedgecolor=’black’を指定すれば実現できます。以下のようにコードを修正してください。

ax.hist(x, bins=50, edgecolor='black')
 

横方向のヒストグラム

縦方向だけでなく、横方向のヒストグラムを描くこともできます。以下のコードのように修正してください。

ax.hist(x, bins=25, orientation='horizontal')
 

ヒストグラムから度数データを取得する方法

ヒストグラムの度数データは次のコードで取得可能です。

n, bins, patches = ax.hist(x, bins=50)

# 各ビンごとの範囲とデータ数を表示
for i, num in enumerate(n):
  print('{:.2f} - {:.2f} {}'.format(bins[i], bins[i + 1], num))

# 出力例(間を省略)
# 49.21 - 51.41 1.0
# 51.41 - 53.60 2.0
# 53.60 - 55.80 5.0
# ...
# 152.35 - 154.54 1.0
# 154.54 - 156.74 1.0
# 156.74 - 158.93 1.0
 

 

スポンサーリンク

 - Python