Matplotlib ヒストグラム
pyplot の hist() メソッドを使用してヒストグラムを描画できます。
hist() メソッドは、Matplotlib ライブラリの pyplot サブライブラリにある、ヒストグラムを描画するための関数です。
hist() メソッドは、データの分布を可視化するために使用できます。たとえば、データの中心傾向、歪度、外れ値などを確認できます。
hist() メソッドの構文は次のとおりです:
matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)
パラメータの説明:
x:ヒストグラムを描画するデータを指定します。1次元配列またはリストを指定できます。bins:省略可能なパラメータで、ヒストグラムのビン数を指定します。デフォルトは10です。range:省略可能なパラメータで、ヒストグラムの値の範囲を指定します。タプルまたはリストで指定できます。デフォルトはNoneで、データの最小値と最大値が使用されます。density:省略可能なパラメータで、ヒストグラムを正規化するかどうかを指定します。デフォルトはFalseで、ヒストグラムの高さは各ビン内のサンプル数であり、頻度や確率密度ではありません。weights:省略可能なパラメータで、各データポイントの重みを指定します。デフォルトはNoneです。cumulative:省略可能なパラメータで、累積分布図を描画するかどうかを指定します。デフォルトはFalseです。bottom:省略可能なパラメータで、ヒストグラムの開始高さを指定します。デフォルトはNoneです。histtype:省略可能なパラメータで、ヒストグラムのタイプを指定します。'bar'、'barstacked'、'step'、'stepfilled' などがあります。デフォルトは 'bar' です。align:省略可能なパラメータで、ヒストグラムのビンの整列方法を指定します。'left'、'mid'、'right' を指定できます。デフォルトは 'mid' です。orientation:省略可能なパラメータで、ヒストグラムの方向を指定します。'vertical'、'horizontal' を指定できます。デフォルトは 'vertical' です。rwidth:省略可能なパラメータで、各ビンの幅を指定します。デフォルトはNoneです。log:省略可能なパラメータで、y軸に対数スケールを使用するかどうかを指定します。デフォルトはFalseです。color:省略可能なパラメータで、ヒストグラムの色を指定します。label:省略可能なパラメータで、ヒストグラムのラベルを指定します。stacked:省略可能なパラメータで、異なるヒストグラムを積み重ねるかどうかを指定します。デフォルトはFalseです。**kwargs:省略可能なパラメータで、その他の描画パラメータを指定します。
次の例では、簡単に hist() を使用してヒストグラムを作成します:
例
import numpy as np
# ランダムデータを生成
data = np.random.randn(1000)
# ヒストグラムを描画
plt.hist(data, bins=30, color='skyblue', alpha=0.8)
# グラフの属性を設定
plt.title('サンプル hist() Test')
plt.xlabel('Value')
plt.ylabel('Frequency')
# グラフを表示
plt.show()
表示結果は次のとおりです:

次の例では、hist() 関数を使用して複数のデータグループのヒストグラムを描画し、比較する方法を示します:
例
import numpy as np
# 3つのランダムデータを生成
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 1000)
data3 = np.random.normal(-2, 1, 1000)
# ヒストグラムを描画
plt.hist(data1, bins=30, alpha=0.5, label='Data 1')
plt.hist(data2, bins=30, alpha=0.5, label='Data 2')
plt.hist(data3, bins=30, alpha=0.5, label='Data 3')
# グラフの属性を設定
plt.title('サンプル hist() TEST')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()
# グラフを表示
plt.show()
上記の例では、3つの異なるランダムデータを生成し、hist() 関数を使用してそれらのヒストグラムを描画しました。異なる平均と標準偏差を設定することで、異なる分布特性を持つランダムデータを生成できます。
bins パラメータを 30 に設定しました。これは、データ範囲を 30 個の等幅の区間に分割し、各区間内のデータの頻度を集計することを意味します。
alpha パラメータを 0.5 に設定しました。これは、各ヒストグラムの色の透明度が 50% であることを意味します。label パラメータを使用して各ヒストグラムのラベルを設定し、凡例に表示できるようにしました。
次に、legend() 関数を使用して凡例を表示します。最後に、title()、xlabel()、ylabel() 関数を使用して、グラフのタイトルと軸ラベルを設定しました。
表示結果は次のとおりです:

上の図から、これら3つのデータグループの分布状況をはっきりと確認できます。data1 と data2 の分布は正規分布に近く、data3 の分布は歪んでいます。
このようにヒストグラムを比較する方法は、異なるデータグループの分布を分析・比較するのに役立ちます。
Pandas との連携
次の例では、Pandas と組み合わせてヒストグラムを描画します:
例
import pandas as pd
import matplotlib.pyplot as plt
# NumPy を使用して乱数を生成
random_data = np.random.normal(170, 10, 250)
# データを Pandas DataFrame に変換
dataframe = pd.DataFrame(random_data)
# Pandas の hist() メソッドを使用してヒストグラムを描画
dataframe.hist()
# グラフの属性を設定
plt.title('サンプル hist() Test')
plt.xlabel('X-Value')
plt.ylabel('Y-Value')
# グラフを表示
plt.show()
表示結果は次のとおりです:

データフレーム以外にも、Pandas の Series オブジェクトを使用してヒストグラムを描画できます。データフレームの列を Series オブジェクトに置き換えるだけでよいです。
例
import pandas as pd
import matplotlib.pyplot as plt
# ランダムデータを生成
data = pd.Series(np.random.normal(size=100))
# ヒストグラムを描画
# bins パラメータはヒストグラムのビンの数を指定します
plt.hist(data, bins=10)
# グラフのタイトルと軸ラベルを設定
plt.title('サンプル hist() Tes')
plt.xlabel('X-Values')
plt.ylabel('Y-Values')
# グラフを表示
plt.show()
