19 KiB
Візуалізація кількостей
![]() |
---|
Візуалізація кількостей - Скетчноут від @nitya |
У цьому уроці ви дослідите, як використовувати одну з багатьох доступних бібліотек Python, щоб навчитися створювати цікаві візуалізації, пов'язані з концепцією кількості. Використовуючи очищений набір даних про птахів Міннесоти, ви можете дізнатися багато цікавих фактів про місцеву дику природу.
Тест перед лекцією
Спостереження за розмахом крил за допомогою Matplotlib
Чудовою бібліотекою для створення як простих, так і складних графіків та діаграм різних типів є Matplotlib. Загалом, процес побудови графіків за допомогою цих бібліотек включає визначення частин вашого датафрейму, які ви хочете використати, виконання необхідних трансформацій даних, призначення значень для осей x та y, вибір типу графіка, а потім його відображення. Matplotlib пропонує великий вибір візуалізацій, але для цього уроку ми зосередимося на тих, які найбільше підходять для візуалізації кількості: лінійні графіки, точкові діаграми та стовпчикові діаграми.
✅ Використовуйте найкращий тип графіка, який відповідає структурі ваших даних та історії, яку ви хочете розповісти.
- Для аналізу тенденцій з часом: лінійний графік
- Для порівняння значень: стовпчиковий, колонковий, кругова діаграма, точкова діаграма
- Для показу, як частини співвідносяться з цілим: кругова діаграма
- Для показу розподілу даних: точкова діаграма, стовпчиковий графік
- Для показу тенденцій: лінійний, колонковий графік
- Для показу взаємозв'язків між значеннями: лінійний графік, точкова діаграма, бульбашковий графік
Якщо у вас є набір даних і потрібно дізнатися, скільки певного елемента включено, одним із перших завдань буде перевірка його значень.
✅ Існують дуже хороші "шпаргалки" для Matplotlib тут.
Створення лінійного графіка для значень розмаху крил птахів
Відкрийте файл notebook.ipynb
у кореневій папці цього уроку та додайте комірку.
Примітка: дані зберігаються в корені цього репозиторію в папці
/data
.
import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
Ці дані є сумішшю тексту та чисел:
Назва | Наукова назва | Категорія | Ряд | Родина | Рід | Статус збереження | Мін. довжина | Макс. довжина | Мін. маса тіла | Макс. маса тіла | Мін. розмах крил | Макс. розмах крил | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Чорно-білий свистячий качур | Dendrocygna autumnalis | Качки/Гуси/Водоплавні | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
1 | Рудий свистячий качур | Dendrocygna bicolor | Качки/Гуси/Водоплавні | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
2 | Біла гуска | Anser caerulescens | Качки/Гуси/Водоплавні | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
3 | Гуска Росса | Anser rossii | Качки/Гуси/Водоплавні | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
4 | Велика білолоба гуска | Anser albifrons | Качки/Гуси/Водоплавні | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Давайте почнемо з побудови графіка деяких числових даних за допомогою базового лінійного графіка. Припустимо, ви хочете побачити максимальний розмах крил цих цікавих птахів.
wingspan = birds['MaxWingspan']
wingspan.plot()
Що ви помітили одразу? Здається, є принаймні один аномальний показник — це досить великий розмах крил! Розмах крил у 2300 сантиметрів дорівнює 23 метрам — чи є в Міннесоті птеродактилі? Давайте дослідимо.
Хоча ви могли б швидко відсортувати дані в Excel, щоб знайти ці аномалії, які, ймовірно, є помилками, продовжуйте процес візуалізації, працюючи безпосередньо з графіком.
Додайте мітки до осі x, щоб показати, про яких птахів йдеться:
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.xticks(rotation=45)
x = birds['Name']
y = birds['MaxWingspan']
plt.plot(x, y)
plt.show()
Навіть із поворотом міток на 45 градусів їх занадто багато, щоб прочитати. Спробуймо іншу стратегію: позначити лише аномалії та встановити мітки всередині графіка. Ви можете використати точкову діаграму, щоб створити більше місця для міток:
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
plt.plot(x, y, 'bo')
if birds['MaxWingspan'][i] > 500:
plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
plt.show()
Що тут відбувається? Ви використали tick_params
, щоб приховати нижні мітки, а потім створили цикл по набору даних про птахів. Побудувавши графік із маленькими круглими синіми точками за допомогою bo
, ви перевірили, чи є у птаха максимальний розмах крил понад 500, і якщо так, то відобразили його назву поруч із точкою. Ви трохи змістили мітки по осі y (y * (1 - 0.05)
) і використали назву птаха як мітку.
Що ви виявили?
Фільтрування даних
І Білоголовий орлан, і Луговий сокіл, хоча, ймовірно, дуже великі птахи, здається, мають помилкові дані, з додатковим 0
у їхньому максимальному розмаху крил. Малоймовірно, що ви зустрінете Білоголового орлана з розмахом крил у 25 метрів, але якщо так, будь ласка, повідомте нам! Давайте створимо новий датафрейм без цих двох аномалій:
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
plt.plot(x, y, 'bo')
plt.show()
Фільтруючи аномалії, ваші дані тепер більш узгоджені та зрозумілі.
Тепер, коли ми маємо очищений набір даних, принаймні щодо розмаху крил, давайте дізнаємося більше про цих птахів.
Хоча лінійні та точкові графіки можуть показувати інформацію про значення даних та їх розподіл, ми хочемо подумати про значення, притаманні цьому набору даних. Ви могли б створити візуалізації, щоб відповісти на такі питання про кількість:
Скільки категорій птахів існує і яка їх кількість?
Скільки птахів є вимерлими, зникаючими, рідкісними чи поширеними?
Скільки є різних родів і рядів у термінології Ліннея?
Дослідження стовпчикових діаграм
Стовпчикові діаграми практичні, коли потрібно показати групування даних. Давайте дослідимо категорії птахів, які є в цьому наборі даних, щоб побачити, яка з них є найпоширенішою за кількістю.
У файлі notebook створіть базову стовпчикову діаграму.
✅ Зверніть увагу, що ви можете або відфільтрувати двох аномальних птахів, яких ми визначили в попередньому розділі, виправити помилку в їхньому розмаху крил, або залишити їх для цих вправ, які не залежать від значень розмаху крил.
Якщо ви хочете створити стовпчикову діаграму, ви можете вибрати дані, на яких хочете зосередитися. Стовпчикові діаграми можна створювати з необроблених даних:
birds.plot(x='Category',
kind='bar',
stacked=True,
title='Birds of Minnesota')
Однак ця стовпчикова діаграма є нечіткою через надмірну кількість негрупованих даних. Вам потрібно вибрати лише ті дані, які ви хочете відобразити, тому давайте подивимося на довжину птахів залежно від їхньої категорії.
Відфільтруйте ваші дані, щоб включити лише категорію птахів.
✅ Зверніть увагу, що ви використовуєте Pandas для управління даними, а потім дозволяєте Matplotlib створювати графік.
Оскільки є багато категорій, ви можете відобразити цей графік вертикально та налаштувати його висоту, щоб врахувати всі дані:
category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()
Ця стовпчикова діаграма показує гарний огляд кількості птахів у кожній категорії. Одним поглядом ви бачите, що найбільша кількість птахів у цьому регіоні належить до категорії Качки/Гуси/Водоплавні. Міннесота — це "країна 10,000 озер", тому це не дивно!
✅ Спробуйте інші підрахунки на цьому наборі даних. Чи щось вас здивувало?
Порівняння даних
Ви можете спробувати різні порівняння згрупованих даних, створюючи нові осі. Спробуйте порівняння MaxLength птаха залежно від його категорії:
maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()
Тут нічого дивного: колібрі мають найменший MaxLength у порівнянні з пеліканами чи гусьми. Добре, коли дані мають логічний сенс!
Ви можете створювати більш цікаві візуалізації стовпчикових діаграм, накладаючи дані. Давайте накладемо Мінімальну та Максимальну довжину на певну категорію птахів:
minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']
plt.barh(category, maxLength)
plt.barh(category, minLength)
plt.show()
На цьому графіку ви можете побачити діапазон для кожної категорії птахів щодо Мінімальної та Максимальної довжини. Можна впевнено сказати, що, враховуючи ці дані, чим більший птах, тим більший його діапазон довжини. Захопливо!
🚀 Виклик
Цей набір даних про птахів пропонує багатство інформації про різні типи птахів у певній екосистемі. Пошукайте в інтернеті, чи можете ви знайти інші набори даних, орієнтовані на птахів. Практикуйте створення графіків і діаграм навколо цих птахів, щоб дізнатися факти, про які ви не здогадувалися.
Тест після лекції
Огляд і самостійне навчання
Цей перший урок дав вам інформацію про те, як використовувати Matplotlib для візуалізації кількостей. Проведіть дослідження інших способів роботи з наборами даних для візуалізації. Plotly — це бібліотека, яку ми не будемо розглядати в цих уроках, тому ознайомтеся з тим, що вона може запропонувати.
Завдання
Відмова від відповідальності:
Цей документ був перекладений за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.