1. Основы построения гистограмм
Если вы когда-либо смотрели на фуршетный стол и пытались решить, какой вид закусок преобладает, вы уже немного понимаете про распределение данных. В программировании мы используем гистограммы, чтобы выявить закономерности в данных, которые на первый взгляд могут быть неочевидны. Гистограммы помогают визуально проанализировать, как распределяются данные по определённым категориям или числовым диапазонам. Давайте начнём!
Что такое гистограмма?
Гистограмма — это тип графика, который помогает визуализировать распределение данных по определённым интервалам или "бинам" (иногда называемым "корзинами" или "ведрами"). Например, если мы хотим узнать, сколько раз учащиеся набрали определённое количество баллов на тесте, гистограмма будет лучшим способом это показать.
Основные параметры гистограммы
Гистограмма строится из столбцов (бинов), где каждый столбец показывает, сколько значений попадает в соответствующий интервал. Основные параметры гистограммы:
- Бины (
bins): количество интервалов, на которые разбивается диапазон данных. - Цвет и обводка (
colorиedgecolor): определяют внешний вид столбцов. - Диапазон (
range): задаёт минимальное и максимальное значения для отображения. - Плотность (
density): если установлено вTrue, гистограмма будет нормализована, чтобы общая площадь столбцов равнялась единице.
Использование функции hist() для построения гистограмм
В библиотеке Matplotlib есть замечательная функция hist(), которая упрощает создание гистограмм. Давайте посмотрим на простой пример:
import matplotlib.pyplot as plt
import numpy as np
# Создаем набор данных
data = np.random.normal(0, 1, 1000)
# Создаем гистограмму
plt.hist(data, bins=30, alpha=0.7, color='blue')
plt.title('Гистограмма распределения данных')
plt.xlabel('Значения')
plt.ylabel('Частота')
plt.show()
Здесь мы генерируем набор данных, используя функцию np.random.normal(), которая создает нормальное распределение. Мы разбиваем данные на 30 бинов и задаем прозрачность столбцов с помощью параметра alpha для лучшей визуализации.
2. Настройка бинов и вид графика
Определение количества и размера бинов
Количество и размер бинов могут существенно влиять на интерпретацию гистограммы. Бины слишком большого размера могут скрывать важные детали, в то время как слишком мелкие бины могут сделать гистограмму беспорядочной и трудной для понимания.
Практический пример:
# Изменение количества и размера бинов
plt.hist(data, bins=10, color='green', edgecolor='black')
plt.title('Гистограмма с 10 бинами')
plt.xlabel('Значения')
plt.ylabel('Частота')
plt.show()
plt.hist(data, bins=50, color='red', edgecolor='black')
plt.title('Гистограмма с 50 бинами')
plt.xlabel('Значения')
plt.ylabel('Частота')
plt.show()
Посмотрите, как изменяется вид гистограммы при использовании 10 и 50 бинов. Видите отличие? Это как раз тот случай, когда размер имеет значение!
Практические примеры изменения параметров гистограммы
Гистограммы могут быть настроены не только по количеству бинов, но и по цвету, прозрачности и даже по стилю столбцов. Вот ещё несколько примеров:
# Другие параметры настройки
plt.hist(data, bins=30, density=True, color='purple', edgecolor='white', linestyle='dashed')
plt.title('Плотностная гистограмма с измененным стилем')
plt.xlabel('Значения')
plt.ylabel('Плотность')
plt.grid(True)
plt.show()
В этом примере мы добавили параметр density=True, который нормализует гистограмму, так что площадь под графиком равна 1. Это может быть полезно, когда вы хотите анализировать плотность вероятности распределения.
3. Примеры использования гистограмм
Гистограммы находят свое применение в самых разных сферах — от анализа финансовых данных до экспериментов в физике. Посмотрим, как использовать гистограмму на реальном наборе данных.
Построение гистограммы на реальном наборе данных
Представьте себе, что у нас есть набор данных, представляющий среднюю дневную температуру за год. Мы хотим проанализировать, как часто температура находится в определенном диапазоне.
# Набор температурных данных (упрощенный для примера)
temperatures = [15, 16, 15, 14, 19, 22, 24, 25, 17, 18, 15, 16, 23, 24, 21, 19, 18, 20, 22, 25, 26, 27]
# Построение гистограммы
plt.hist(temperatures, bins=5, color='navy', edgecolor='black')
plt.title('Гистограмма температур')
plt.xlabel('Температура (°C)')
plt.ylabel('Частота')
plt.show()
В этом примере мы использовали 5 бинов, чтобы выяснить, как распределяются значения. Гистограмма показывает, что большинство температур находятся в диапазоне от 15 до 20°C.
Сравнение распределений на одной гистограмме
Иногда нужно сравнить распределение нескольких наборов данных на одной гистограмме. В Matplotlib можно наложить несколько гистограмм с помощью параметра alpha (прозрачность).
Пример 3: Сравнение распределений
import matplotlib.pyplot as plt
# Генерация данных
data1 = [5, 10, 10, 15, 15, 20, 25, 30, 30, 35, 40]
data2 = [5, 7, 9, 10, 11, 13, 15, 17, 19, 20, 25]
# Построение наложенных гистограмм
plt.hist(data1, bins=5, color="blue", alpha=0.5, label="Набор 1")
plt.hist(data2, bins=5, color="green", alpha=0.5, label="Набор 2")
plt.xlabel("Значение")
plt.ylabel("Частота")
plt.title("Сравнение двух распределений")
plt.legend()
plt.show()
В этом примере мы используем параметр alpha=0.5 для каждой гистограммы, что делает столбцы полупрозрачными и позволяет визуально сравнить пересечения между распределениями.
Полезные советы для работы с гистограммами
- Оптимальный выбор числа бинов: Подбирайте количество бинов исходя из объёма и характера данных. Слишком малое или слишком большое количество бинов может искажать распределение.
- Сравнение распределений: Используйте прозрачность (
alpha) для наложения нескольких гистограмм и сравнения распределений. - Добавление сетки: Сетка помогает лучше интерпретировать данные. Её можно добавить с помощью функции
plt.grid(True). - Параметр
density: Используйтеdensity=Trueдля отображения данных в виде плотности вероятности, что особенно полезно при сравнении распределений.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ