Menu
CoddyTech

ヒストグラム

CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 27/60。

12 件のヘルプデスクへの通話時間(分)。ヒストグラムは、このような数値の分布を示します。値の範囲を同じ幅の階級に分け、それぞれに含まれる値の個数を数えます。

calls = [2, 3, 3, 4, 5, 5, 6, 6, 6, 7, 9, 14]
fig, ax = plt.subplots()
counts, edges, bars = ax.hist(calls, bins=4)
print(counts)
print(edges)
plt.show()

通話時間12件を4つの階級に分けたヒストグラム。境界は2、5、8、11、14で、各階級の通話件数は4、6、1、1

ほとんどの呼び出しは2〜8分かかります。ax.histはカウントした内容も返すので、次のように表示されます。

[4. 6. 1. 1.]
[ 2.  5.  8. 11. 14.]

4個のビンには5つのedgesが必要です。境界上にある値は右側のビンに入りますが、最大値は最後のビンにとどまります。

challenge icon

チャレンジ

中級

果樹園では120個のりんごの重さをweights(グラム単位)として測定しました。プログラムはビンの数を読み込み、最初のコードでタイトルとラベルを設定したグラフを用意して表示します。

  1. weightsのヒストグラムを指定した数のビンで描画し、ax.histが返す値を保持します。
  2. 以下のように、最も度数の多いビンの範囲を小数第1位まで丸めて、その件数とともに出力します。

別の果樹園でビンを6個にすると、プログラムは次の行を出力し、その後Coddyがグラフを説明します。

Fullest bin: 153.6 to 167.8 g, 38 apples

グラフは次のようになります。

タイトルがApple Weightsのヒストグラム。約125~210グラムの範囲に6本の棒があり、最も高い棒は154~168グラムの範囲で、りんご38個を示している

自分で試してみよう

import numpy as np
import matplotlib.pyplot as plt

bins = int(input())

# 以下の行は変更しないでください
rng = np.random.default_rng(11)
weights = rng.normal(150, 20, size=120)
fig, ax = plt.subplots()
ax.set_title("Apple Weights")
ax.set_xlabel("Weight (g)")
ax.set_ylabel("Apples")

# 以下にコードを書いてください

# 以下の行は変更しないでください
plt.show()
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

データとプロットのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ