|
2 weeks ago | |
---|---|---|
.. | ||
solution | 3 weeks ago | |
README.md | 2 weeks ago | |
assignment.md | 4 weeks ago | |
notebook.ipynb | 3 weeks ago |
README.md
Vizualizace poměrů
![]() |
---|
Vizualizace poměrů - Sketchnote od @nitya |
V této lekci použijete dataset zaměřený na přírodu k vizualizaci poměrů, například kolik různých druhů hub se nachází v daném datasetu o houbách. Pojďme prozkoumat tyto fascinující houby pomocí datasetu od Audubon, který obsahuje podrobnosti o 23 druzích lupenatých hub z rodů Agaricus a Lepiota. Budete experimentovat s chutnými vizualizacemi, jako jsou:
- Koláčové grafy 🥧
- Donutové grafy 🍩
- Waflové grafy 🧇
💡 Velmi zajímavý projekt od Microsoft Research nazvaný Charticulator nabízí bezplatné rozhraní pro vizualizaci dat pomocí drag and drop. V jednom z jejich tutoriálů také používají tento dataset o houbách! Můžete tedy prozkoumat data a zároveň se naučit používat tuto knihovnu: Charticulator tutorial.
Kvíz před lekcí
Poznejte své houby 🍄
Houby jsou velmi zajímavé. Importujme dataset, abychom je mohli studovat:
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
Tabulka se vytiskne s některými skvělými daty pro analýzu:
class | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | stalk-root | stalk-surface-above-ring | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Jedovaté | Konvexní | Hladký | Hnědý | Modřiny | Štiplavý | Volný | Těsný | Úzký | Černý | Rozšiřující | Rovný | Hladký | Hladký | Bílý | Bílý | Částečný | Bílý | Jeden | Visící | Černý | Rozptýlený | Městský |
Jedlé | Konvexní | Hladký | Žlutý | Modřiny | Mandlový | Volný | Těsný | Široký | Černý | Rozšiřující | Klubový | Hladký | Hladký | Bílý | Bílý | Částečný | Bílý | Jeden | Visící | Hnědý | Početný | Trávy |
Jedlé | Zvoncový | Hladký | Bílý | Modřiny | Anýzový | Volný | Těsný | Široký | Hnědý | Rozšiřující | Klubový | Hladký | Hladký | Bílý | Bílý | Částečný | Bílý | Jeden | Visící | Hnědý | Početný | Louky |
Jedovaté | Konvexní | Šupinatý | Bílý | Modřiny | Štiplavý | Volný | Těsný | Úzký | Hnědý | Rozšiřující | Rovný | Hladký | Hladký | Bílý | Bílý | Částečný | Bílý | Jeden | Visící | Černý | Rozptýlený | Městský |
Hned si všimnete, že všechna data jsou textová. Budete je muset převést, abyste je mohli použít v grafu. Většina dat je ve skutečnosti reprezentována jako objekt:
print(mushrooms.select_dtypes(["object"]).columns)
Výstup je:
Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor',
'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color',
'stalk-shape', 'stalk-root', 'stalk-surface-above-ring',
'stalk-surface-below-ring', 'stalk-color-above-ring',
'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number',
'ring-type', 'spore-print-color', 'population', 'habitat'],
dtype='object')
Převeďte tato data a sloupec 'class' na kategorii:
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
Nyní, pokud vytisknete data o houbách, uvidíte, že byla rozdělena do kategorií podle jedovaté/jedlé třídy:
cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | ... | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
class | |||||||||||||||||||||
Jedlé | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 |
Jedovaté | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 |
Pokud budete postupovat podle pořadí uvedeného v této tabulce při vytváření štítků kategorií třídy, můžete vytvořit koláčový graf:
Koláč!
labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()
Voila, koláčový graf zobrazující poměry těchto dat podle těchto dvou tříd hub. Je velmi důležité získat pořadí štítků správně, zejména zde, takže si ověřte pořadí, ve kterém je pole štítků vytvořeno!
Donuty!
Poněkud vizuálně zajímavější koláčový graf je donutový graf, což je koláčový graf s dírou uprostřed. Podívejme se na naše data pomocí této metody.
Podívejte se na různá stanoviště, kde houby rostou:
habitat=mushrooms.groupby(['habitat']).count()
habitat
Zde seskupujete svá data podle stanoviště. Je jich uvedeno 7, takže je použijte jako štítky pro svůj donutový graf:
labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood']
plt.pie(habitat['class'], labels=labels,
autopct='%1.1f%%', pctdistance=0.85)
center_circle = plt.Circle((0, 0), 0.40, fc='white')
fig = plt.gcf()
fig.gca().add_artist(center_circle)
plt.title('Mushroom Habitats')
plt.show()
Tento kód vykreslí graf a středový kruh, poté přidá tento středový kruh do grafu. Upravte šířku středového kruhu změnou hodnoty 0.40
na jinou.
Donutové grafy lze upravit několika způsoby, aby se změnily štítky. Štítky lze zejména zvýraznit pro lepší čitelnost. Více se dozvíte v dokumentaci.
Nyní, když víte, jak seskupit svá data a poté je zobrazit jako koláč nebo donut, můžete prozkoumat jiné typy grafů. Vyzkoušejte waflový graf, což je jen jiný způsob zkoumání množství.
Wafle!
Graf typu 'waffle' je jiný způsob vizualizace množství jako 2D pole čtverců. Zkuste vizualizovat různé množství barev klobouků hub v tomto datasetu. K tomu potřebujete nainstalovat pomocnou knihovnu nazvanou PyWaffle a použít Matplotlib:
pip install pywaffle
Vyberte segment svých dat pro seskupení:
capcolor=mushrooms.groupby(['cap-color']).count()
capcolor
Vytvořte waflový graf vytvořením štítků a poté seskupením svých dat:
import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'],
'amount': capcolor['class']
}
df = pd.DataFrame(data)
fig = plt.figure(
FigureClass = Waffle,
rows = 100,
values = df.amount,
labels = list(df.color),
figsize = (30,30),
colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"],
)
Pomocí waflového grafu můžete jasně vidět poměry barev klobouků v tomto datasetu hub. Zajímavé je, že existuje mnoho hub se zelenými klobouky!
✅ Pywaffle podporuje ikony v grafech, které používají jakoukoli ikonu dostupnou v Font Awesome. Udělejte několik experimentů a vytvořte ještě zajímavější waflový graf pomocí ikon místo čtverců.
V této lekci jste se naučili tři způsoby vizualizace poměrů. Nejprve musíte seskupit svá data do kategorií a poté rozhodnout, který způsob zobrazení dat je nejlepší - koláč, donut nebo wafle. Všechny jsou chutné a uživatele potěší okamžitým přehledem datasetu.
🚀 Výzva
Zkuste znovu vytvořit tyto chutné grafy v Charticulator.
Kvíz po lekci
Přehled & Samostudium
Někdy není zřejmé, kdy použít koláčový, donutový nebo waflový graf. Zde je několik článků, které si můžete přečíst na toto téma:
https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart
https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce
https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm
Proveďte výzkum a najděte více informací o tomto nelehkém rozhodnutí.
Úkol
Prohlášení:
Tento dokument byl přeložen pomocí služby AI pro překlady Co-op Translator. Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatizované 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 se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vzniklé v důsledku použití tohoto překladu.