Menu
CoddyTech

Гистограммы

Часть раздела Данные и графики путешествия по Machine Learning на Coddy. Урок 27 из 60.

Двенадцать звонков в службу поддержки, измеренных в минутах. Гистограмма показывает, как распределяются такие числа: она делит их диапазон на равные интервалы и подсчитывает значения в каждом из них:

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

А график выглядит так:

Гистограмма с заголовком «Вес яблок»: 6 столбцов примерно от 125 до 210 граммов; самый высокий столбец соответствует 38 яблокам весом от 154 до 168 граммов

Попробуйте сами

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