You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

19 KiB

Визуелизација количина

 Скетч од (@sketchthedocs)
Визуелизација количина - Скетч од @nitya

У овој лекцији ћете истражити како да користите једну од многих доступних Python библиотека како бисте научили да креирате занимљиве визуелизације засноване на концепту количине. Користећи очишћену базу података о птицама из Минесоте, можете научити многе занимљиве чињенице о локалној дивљини.

Квиз пре предавања

Посматрање распона крила уз Matplotlib

Одлична библиотека за креирање како једноставних тако и сложених графикона и дијаграма различитих врста је Matplotlib. Уопштено, процес креирања графикона користећи ове библиотеке укључује идентификовање делова вашег dataframe-а које желите да циљате, извршавање потребних трансформација на тим подацима, додељивање вредности x и y осе, одлучивање о врсти графикона који желите да прикажете, и затим приказивање графикона. Matplotlib нуди велики избор визуелизација, али за ову лекцију, фокусираћемо се на оне које су најприкладније за визуелизацију количине: линијски графикони, расејани графикони и стубичасти графикони.

Користите најбољи графикон који одговара структури ваших података и причи коју желите да испричате.

  • За анализу трендова током времена: линијски графикон
  • За поређење вредности: стубичасти, колумнарни, пите, расејани графикон
  • За приказ односа делова према целини: пите
  • За приказ расподеле података: расејани графикон, стубичасти графикон
  • За приказ трендова: линијски, колумнарни графикон
  • За приказ односа између вредности: линијски, расејани, балон графикон

Ако имате базу података и треба да откријете колико одређеног предмета је укључено, један од првих задатака који имате је да испитате његове вредности.

Постоје веома добри 'cheat sheets' за 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 метара, али ако се то догоди, молимо вас да нас обавестите! Хајде да креирамо нови dataframe без та два изузетка:

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 = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()

поређење података

Ништа није изненађујуће овде: колибри имају најмању МаксДужину у поређењу са пеликанима или гускама. Добро је када подаци имају логичан смисао!

Можете креирати занимљивије визуелизације стубичастих графикона суперимпонујући податке. Хајде да суперимпонујемо Минималну и Максималну дужину на одређену категорију птица:

minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']

plt.barh(category, maxLength)
plt.barh(category, minLength)

plt.show()

На овом графикону можете видети опсег по категорији птица Минималне дужине и Максималне дужине. Можете са сигурношћу рећи да, на основу ових података, што је птица већа, већи је њен опсег дужине. Фасцинантно!

суперимпоноване вредности

🚀 Изазов

Ова база података о птицама нуди богатство информација о различитим врстама птица у одређеном екосистему. Претражите интернет и видите да ли можете пронаћи друге базе података оријентисане на птице. Вежбајте креирање графикона и дијаграма о овим птицама како бисте открили чињенице које нисте знали.

Квиз после предавања

Преглед и самостално учење

Ова прва лекција вам је дала неке информације о томе како да користите Matplotlib за визуелизацију количина. Истражите друге начине рада са базама података за визуелизацију. Plotly је један који нећемо покривати у овим лекцијама, па погледајте шта он може да понуди.

Задатак

Линије, Расејани графикони и Стубичасти графикони


Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да превод буде тачан, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.