|
|
1 month ago | |
|---|---|---|
| .. | ||
| solution | 5 months ago | |
| README.md | 1 month ago | |
| assignment.md | 1 month ago | |
| notebook.ipynb | 5 months ago | |
README.md
Proportsioonide visualiseerimine
![]() |
|---|
| Proportsioonide visualiseerimine - Sketchnote by @nitya |
Selles õppetükis kasutad loodusele keskenduvat andmestikku, et visualiseerida proportsioone, näiteks kui palju erinevaid seeneliike esineb antud andmestikus seente kohta. Uurime neid põnevaid seeni, kasutades Auduboni andmestikku, mis sisaldab üksikasju 23 liigi kohta, mis kuuluvad Agaricus ja Lepiota perekondadesse. Katsetad maitsvaid visualiseerimismeetodeid, nagu:
- Pirukadiagrammid 🥧
- Sõõrikdiagrammid 🍩
- Vahvlidiagrammid 🧇
💡 Microsoft Researchi väga huvitav projekt nimega Charticulator pakub tasuta lohistamisliidest andmete visualiseerimiseks. Ühes nende õpetuses kasutatakse samuti seda seente andmestikku! Nii saad andmeid uurida ja samal ajal raamatukogu tundma õppida: Charticulator õpetus.
Eelloengu viktoriin
Tutvu oma seentega 🍄
Seened on väga huvitavad. Impordime andmestiku, et neid uurida:
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
Tabelis kuvatakse suurepärased andmed analüüsimiseks:
| klass | kübara kuju | kübara pind | kübara värv | sinikad | lõhn | eoslehe kinnitus | eoslehe vahe | eoslehe suurus | eoslehe värv | jala kuju | jala alus | jala pind rõnga kohal | jala pind rõnga all | jala värv rõnga kohal | jala värv rõnga all | loor tüüp | loor värv | rõngaste arv | rõnga tüüp | eospulbri värv | populatsioon | elupaik |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mürgine | Kumer | Sile | Pruun | Sinikad | Terav | Vaba | Tihe | Kitsas | Must | Suurenev | Võrdne | Sile | Sile | Valge | Valge | Osaline | Valge | Üks | Rippuv | Must | Hajus | Linn |
| Söödav | Kumer | Sile | Kollane | Sinikad | Mandli | Vaba | Tihe | Lai | Must | Suurenev | Klubikujuline | Sile | Sile | Valge | Valge | Osaline | Valge | Üks | Rippuv | Pruun | Arvukas | Rohumaa |
| Söödav | Kellukakujuline | Sile | Valge | Sinikad | Aniisi | Vaba | Tihe | Lai | Pruun | Suurenev | Klubikujuline | Sile | Sile | Valge | Valge | Osaline | Valge | Üks | Rippuv | Pruun | Arvukas | Niit |
| Mürgine | Kumer | Kaaluline | Valge | Sinikad | Terav | Vaba | Tihe | Kitsas | Pruun | Suurenev | Võrdne | Sile | Sile | Valge | Valge | Osaline | Valge | Üks | Rippuv | Must | Hajus | Linn |
Kohe märkad, et kõik andmed on tekstilised. Pead need andmed teisendama, et neid diagrammis kasutada. Enamik andmeid on tegelikult esitatud objektina:
print(mushrooms.select_dtypes(["object"]).columns)
Väljund on:
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')
Teisenda need andmed ja muuda 'klass' veerg kategooriaks:
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
Kui prindid seente andmed välja, näed, et need on rühmitatud kategooriatesse vastavalt mürgiste/söödavate klassidele:
| kübara kuju | kübara pind | kübara värv | sinikad | lõhn | eoslehe kinnitus | eoslehe vahe | eoslehe suurus | eoslehe värv | jala kuju | ... | jala pind rõnga all | jala värv rõnga kohal | jala värv rõnga all | loor tüüp | loor värv | rõngaste arv | rõnga tüüp | eospulbri värv | populatsioon | elupaik | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| klass | |||||||||||||||||||||
| Söödav | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 |
| Mürgine | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 |
Kui järgida tabelis esitatud järjekorda klassi kategooria siltide loomiseks, saad koostada pirukadiagrammi:
Pirukas!
labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()
Voila, pirukadiagramm, mis näitab andmete proportsioone vastavalt nendele kahele seente klassile. On üsna oluline saada siltide järjekord õigeks, eriti siin, seega kontrolli kindlasti järjekorda, millega siltide massiiv on koostatud!
Sõõrikud!
Visuaalselt huvitavam pirukadiagramm on sõõrikdiagramm, mis on pirukadiagramm, mille keskel on auk. Vaatame meie andmeid selle meetodi abil.
Vaata erinevaid elupaiku, kus seened kasvavad:
habitat=mushrooms.groupby(['habitat']).count()
habitat
Siin rühmitad oma andmed elupaikade järgi. Neid on loetletud 7, seega kasuta neid sõõrikdiagrammi siltidena:
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()
See kood joonistab diagrammi ja keskse ringi, seejärel lisab selle keskse ringi diagrammi. Muuda keskse ringi laiust, muutes 0.40 mõneks teiseks väärtuseks.
Sõõrikdiagramme saab mitmel viisil kohandada, et muuta silte. Eriti silte saab esile tõsta loetavuse parandamiseks. Loe rohkem dokumentatsioonist.
Nüüd, kui tead, kuidas oma andmeid rühmitada ja seejärel kuvada neid piruka või sõõrikuna, saad uurida teisi diagrammitüüpe. Proovi vahvlidiagrammi, mis on lihtsalt teistsugune viis koguste uurimiseks.
Vahvlid!
'Vahvli' tüüpi diagramm on teistsugune viis koguste visualiseerimiseks 2D ruutude massiivina. Proovi visualiseerida erinevaid seente kübara värvide koguseid selles andmestikus. Selleks pead installima abiraamatukogu nimega PyWaffle ja kasutama Matplotlibi:
pip install pywaffle
Vali oma andmetest segment, mida rühmitada:
capcolor=mushrooms.groupby(['cap-color']).count()
capcolor
Loo vahvlidiagramm, luues sildid ja seejärel rühmitades oma andmed:
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"],
)
Vahvlidiagrammi abil näed selgelt seente kübara värvide proportsioone selles andmestikus. Huvitaval kombel on palju rohelise kübaraga seeni!
✅ PyWaffle toetab ikoone diagrammides, mis kasutavad kõiki ikoone, mis on saadaval Font Awesome lehel. Katseta, et luua veelgi huvitavam vahvlidiagramm, kasutades ruutude asemel ikoone.
Selles õppetükis õppisid kolme viisi proportsioonide visualiseerimiseks. Kõigepealt pead oma andmed rühmitama kategooriatesse ja seejärel otsustama, milline on parim viis andmete kuvamiseks - pirukas, sõõrik või vahvel. Kõik on maitsvad ja pakuvad kasutajale kohest ülevaadet andmestikust.
🚀 Väljakutse
Proovi neid maitsvaid diagramme uuesti luua Charticulatoris.
Järelloengu viktoriin
Ülevaade ja iseseisev õppimine
Mõnikord pole ilmne, millal kasutada piruka-, sõõriku- või vahvlidiagrammi. Siin on mõned artiklid, mida sellel teemal lugeda:
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
Tee uurimistööd, et leida rohkem teavet selle keerulise otsuse kohta.
Ülesanne
Lahtiütlus:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.



