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.

13 KiB

Vizualizace množství

 Sketchnote od (@sketchthedocs)
Vizualizace množství - Sketchnote od @nitya

V této lekci se naučíte používat jednu z mnoha dostupných knihoven Pythonu k vytváření zajímavých vizualizací zaměřených na koncept množství. Pomocí vyčištěného datasetu o ptácích z Minnesoty můžete objevit mnoho zajímavých faktů o místní fauně.

Kvíz před lekcí

Pozorování rozpětí křídel pomocí Matplotlib

Skvělou knihovnou pro vytváření jednoduchých i sofistikovaných grafů a diagramů různých typů je Matplotlib. Obecně proces vykreslování dat pomocí těchto knihoven zahrnuje identifikaci částí vašeho dataframe, které chcete cílit, provedení potřebných transformací na tato data, přiřazení hodnot osy x a y, rozhodnutí o typu grafu, který chcete zobrazit, a následné vykreslení grafu. Matplotlib nabízí širokou škálu vizualizací, ale v této lekci se zaměříme na ty nejvhodnější pro vizualizaci množství: čárové grafy, bodové grafy a sloupcové grafy.

Použijte nejlepší typ grafu podle struktury vašich dat a příběhu, který chcete vyprávět.

  • Pro analýzu trendů v čase: čárový graf
  • Pro porovnání hodnot: sloupcový, koláčový, bodový graf
  • Pro zobrazení, jak části tvoří celek: koláčový graf
  • Pro zobrazení distribuce dat: bodový graf, sloupcový graf
  • Pro zobrazení trendů: čárový, sloupcový graf
  • Pro zobrazení vztahů mezi hodnotami: čárový graf, bodový graf, bublinový graf

Pokud máte dataset a potřebujete zjistit, kolik určité položky je zahrnuto, jedním z prvních úkolů bude prozkoumání jeho hodnot.

Existují velmi dobré 'cheat sheets' pro Matplotlib zde.

Vytvoření čárového grafu hodnot rozpětí křídel ptáků

Otevřete soubor notebook.ipynb v kořenové složce této lekce a přidejte buňku.

Poznámka: data jsou uložena v kořenové složce tohoto repozitáře ve složce /data.

import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()

Tato data jsou směsí textu a čísel:

Název Vědecký název Kategorie Řád Čeleď Rod Stav ochrany MinDélka MaxDélka MinHmotnost MaxHmotnost MinRozpětí MaxRozpětí
0 Černobřichá pižmovka Dendrocygna autumnalis Kachny/Husy/Vodní ptáci Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Pižmovka rezavá Dendrocygna bicolor Kachny/Husy/Vodní ptáci Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Sněžná husa Anser caerulescens Kachny/Husy/Vodní ptáci Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Rossova husa Anser rossii Kachny/Husy/Vodní ptáci Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Husa běločelá Anser albifrons Kachny/Husy/Vodní ptáci Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

Začněme vykreslením některých číselných dat pomocí základního čárového grafu. Předpokládejme, že chcete zobrazit maximální rozpětí křídel těchto zajímavých ptáků.

wingspan = birds['MaxWingspan'] 
wingspan.plot()

Max Rozpětí

Co si všimnete okamžitě? Zdá se, že existuje alespoň jeden extrémní údaj - to je opravdu velké rozpětí křídel! Rozpětí křídel 2300 centimetrů odpovídá 23 metrům - potulují se v Minnesotě pterodaktylové? Pojďme to prozkoumat.

Zatímco byste mohli rychle seřadit data v Excelu a najít tyto extrémní údaje, které jsou pravděpodobně překlepy, pokračujte ve vizualizačním procesu přímo z grafu.

Přidejte popisky na osu x, aby bylo vidět, o jaké ptáky se jedná:

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()

Rozpětí s popisky

I při otočení popisků o 45 stupňů je jich příliš mnoho na čtení. Zkusme jinou strategii: označte pouze ty extrémní údaje a nastavte popisky přímo v grafu. Můžete použít bodový graf, abyste vytvořili více prostoru pro popisky:

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()

Co se zde děje? Použili jste tick_params k skrytí spodních popisků a poté vytvořili smyčku přes dataset ptáků. Vykreslením grafu s malými modrými tečkami pomocí bo jste zkontrolovali, zda má nějaký pták maximální rozpětí křídel přes 500, a pokud ano, zobrazili jeho popisek vedle tečky. Popisky jste mírně posunuli na ose y (y * (1 - 0.05)) a použili název ptáka jako popisek.

Co jste objevili?

Extrémní údaje

Filtrování dat

Jak Orel bělohlavý, tak Sokol prériový, i když pravděpodobně velmi velcí ptáci, se zdají být chybně označeni, s přidanou 0 v jejich maximálním rozpětí křídel. Je nepravděpodobné, že byste potkali Orla bělohlavého s rozpětím křídel 25 metrů, ale pokud ano, dejte nám vědět! Vytvořme nový dataframe bez těchto dvou extrémních údajů:

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()

Filtrováním extrémních údajů jsou vaše data nyní soudržnější a srozumitelnější.

Bodový graf rozpětí křídel

Nyní, když máme čistší dataset alespoň co se týče rozpětí křídel, pojďme objevit více o těchto ptácích.

Zatímco čárové a bodové grafy mohou zobrazovat informace o hodnotách dat a jejich distribuci, chceme se zaměřit na hodnoty obsažené v tomto datasetu. Mohli byste vytvořit vizualizace, které odpoví na následující otázky o množství:

Kolik kategorií ptáků existuje a jaké jsou jejich počty?
Kolik ptáků je vyhynulých, ohrožených, vzácných nebo běžných?
Kolik je různých rodů a řádů podle Linnaeusovy terminologie?

Prozkoumání sloupcových grafů

Sloupcové grafy jsou praktické, když potřebujete zobrazit seskupení dat. Pojďme prozkoumat kategorie ptáků, které existují v tomto datasetu, abychom zjistili, která je nejběžnější podle počtu.

V souboru notebook vytvořte základní sloupcový graf.

Poznámka: Můžete buď odfiltrovat dva extrémní ptáky, které jsme identifikovali v předchozí části, upravit překlep v jejich rozpětí křídel, nebo je ponechat pro tyto cvičení, která nezávisí na hodnotách rozpětí křídel.

Pokud chcete vytvořit sloupcový graf, můžete vybrat data, na která se chcete zaměřit. Sloupcové grafy lze vytvořit z neupravených dat:

birds.plot(x='Category',
        kind='bar',
        stacked=True,
        title='Birds of Minnesota')

Celá data jako sloupcový graf

Tento sloupcový graf je však nečitelný, protože je zde příliš mnoho neseskupených dat. Musíte vybrat pouze data, která chcete vykreslit, takže se podívejme na délku ptáků podle jejich kategorie.

Filtrovat data tak, aby zahrnovala pouze kategorii ptáků.

Všimněte si, že používáte Pandas k práci s daty a poté necháte Matplotlib vykreslit graf.

Protože existuje mnoho kategorií, můžete tento graf zobrazit vertikálně a upravit jeho výšku, aby zahrnoval všechna data:

category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()

Kategorie a délka

Tento sloupcový graf poskytuje dobrý přehled o počtu ptáků v každé kategorii. Na první pohled vidíte, že největší počet ptáků v této oblasti patří do kategorie Kachny/Husy/Vodní ptáci. Minnesota je 'země 10 000 jezer', takže to není překvapivé!

Vyzkoušejte další počty v tomto datasetu. Překvapí vás něco?

Porovnání dat

Můžete zkusit různé porovnání seskupených dat vytvořením nových os. Zkuste porovnání MaxDélky ptáka podle jeho kategorie:

maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()

Porovnání dat

Nic překvapivého zde: kolibříci mají nejmenší MaxDélku ve srovnání s pelikány nebo husami. Je dobré, když data dávají logický smysl!

Můžete vytvořit zajímavější vizualizace sloupcových grafů překrytím dat. Pojďme překrýt Minimální a Maximální délku na dané kategorii ptáků:

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

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

plt.show()

V tomto grafu vidíte rozsah pro každou kategorii ptáků mezi Minimální délkou a Maximální délkou. Můžete bezpečně říci, že podle těchto dat platí, že čím větší pták, tím větší rozsah jeho délky. Fascinující!

Překryté hodnoty

🚀 Výzva

Tento dataset ptáků nabízí bohatství informací o různých typech ptáků v konkrétním ekosystému. Prohledejte internet a zjistěte, zda můžete najít další dataset zaměřený na ptáky. Procvičte si vytváření grafů a diagramů kolem těchto ptáků, abyste objevili fakta, která jste si neuvědomovali.

Kvíz po lekci

Přehled & Samostudium

Tato první lekce vám poskytla informace o tom, jak používat Matplotlib k vizualizaci množství. Proveďte výzkum dalších způsobů práce s datovými sadami pro vizualizaci. Plotly je jedna z možností, kterou v těchto lekcích nebudeme pokrývat, takže se podívejte, co může nabídnout.

Úkol

Čáry, body a sloupce


Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.