PythonのPandasでヒストグラムを作成する方法

ヒストグラム,イメージ

AI実装検定のご案内

PythonのPandasでヒストグラムを作成する方法について、初心者向けから実践的な応用まで体系的に解説します。

特に、データ分析や可視化の流れに沿って「どのように作れるのか」「どんなオプションがあるのか」を理解できるようにまとめます。

目次

Pandasでヒストグラムを作成する基本方法

PandasのDataFrameSeriesには、直接ヒストグラムを描画するためのplot.hist()メソッドがあります。

また、plot(kind="hist")でも同じ動作をします。

サンプルコード

import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータ
data = pd.DataFrame({
    "score": [55, 60, 65, 70, 72, 75, 78, 80, 82, 85, 88, 90, 92, 95, 100]
})

# ヒストグラムを描画
data["score"].plot.hist()
plt.show()

このコードでは、score列の値の分布を簡単に可視化できます。

ヒストグラムの重要な引数

ヒストグラムはオプションを使って見やすくカスタマイズできます。

  • bins
    区間の数(棒グラフの数)を指定。デフォルトは10data["score"].plot.hist(bins=5) # 5つの区間に分割
  • range
    区間の範囲を指定。例えば0~100に収めたいとき。 data["score"].plot.hist(bins=10, range=(0,100))
  • density
    縦軸を「度数」ではなく「確率密度」にする。 data["score"].plot.hist(density=True, bins=10)
  • alpha
    透明度を調整(0〜1)。複数ヒストグラムを重ねる時に便利。 data["score"].plot.hist(alpha=0.7)

複数列をヒストグラムで比較

DataFrame全体を対象にすると、複数列を同時にプロットできます。

df = pd.DataFrame({
    "math": [65, 70, 75, 80, 85, 90, 95],
    "english": [55, 60, 62, 68, 72, 78, 85]
})

df.plot.hist(alpha=0.5, bins=5)  # 透明度を指定して重ね描画
plt.show()

この場合、mathenglishの分布を同じ図で比較可能です。

hist()メソッドとの違い

PandasにはDataFrame.hist()というメソッドもあります。

こちらは「列ごとに自動でヒストグラムを複数描画」してくれるのが特徴です。

df.hist(bins=10, figsize=(8, 4))
plt.show()
  • 各列がサブプロットとして出力される
  • 複数列のデータをまとめて可視化するのに便利

Matplotlibとの組み合わせ

Pandasのplot.histは内部的にMatplotlibを使っているため、さらに細かいカスタマイズをしたい場合はMatplotlibを直接利用できます。

plt.hist(data["score"], bins=10, color="skyblue", edgecolor="black")
plt.title("Score Distribution")
plt.xlabel("Score")
plt.ylabel("Frequency")
plt.show()

これにより、タイトルや軸ラベルをきれいに整えられます。

応用:正規分布と比較

ヒストグラムを作ると「正規分布に近いのか?」を確認したくなることがよくあります。

確率密度(density=True)を使うと、理論分布と重ねられます。

import numpy as np

# ヒストグラム(確率密度)
data["score"].plot.hist(density=True, bins=10, alpha=0.5)

# 正規分布カーブを重ねる
mean = data["score"].mean()
std = data["score"].std()
x = np.linspace(50, 100, 100)
y = 1/(std*np.sqrt(2*np.pi)) * np.exp(- (x-mean)**2 / (2*std**2))
plt.plot(x, y, color="red")
plt.show()

これで、データの分布が正規分布にどのくらい近いか視覚的に確認できます。

まとめ

  • 基本Series.plot.hist() または DataFrame.plot.hist() で簡単に作成可能。
  • カスタマイズbins, range, density, alpha などで調整。
  • 比較:複数列を同時に描画、または DataFrame.hist() でサブプロット表示。
  • 応用:MatplotlibやNumPyを組み合わせて、正規分布との比較も可能。

以上、PythonのPandasでヒストグラムを作成する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次