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для відображення даних у вигляді щільності ймовірності, що особливо корисно при порівнянні розподілів.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ