|
2 weeks ago | |
---|---|---|
.. | ||
solution | 2 weeks ago | |
README.md | 2 weeks ago | |
assignment.md | 3 weeks ago | |
notebook.ipynb | 2 weeks ago |
README.md
Kuonyesha Uwiano
![]() |
---|
Kuonyesha Uwiano - Sketchnote na @nitya |
Katika somo hili, utatumia seti ya data inayohusiana na asili ili kuonyesha uwiano, kama vile idadi ya aina tofauti za uyoga zinazopatikana katika seti ya data kuhusu uyoga. Hebu tuchunguze uyoga huu wa kuvutia kwa kutumia seti ya data kutoka Audubon inayoorodhesha maelezo kuhusu spishi 23 za uyoga wenye magamba katika familia za Agaricus na Lepiota. Utajaribu mbinu za kuvutia za kuonyesha data kama:
- Chati za pai 🥧
- Chati za donati 🍩
- Chati za waffle 🧇
💡 Mradi wa kuvutia sana unaoitwa Charticulator na Microsoft Research unatoa kiolesura cha bure cha kuburuta na kudondosha kwa ajili ya kuonyesha data. Katika mojawapo ya mafunzo yao wanatumia seti hii ya data ya uyoga! Kwa hivyo unaweza kuchunguza data na kujifunza maktaba kwa wakati mmoja: Mafunzo ya Charticulator.
Jaribio la awali la somo
Fahamu uyoga wako 🍄
Uyoga ni wa kuvutia sana. Hebu tuingize seti ya data ili kuwasoma:
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
Jedwali linachapishwa likiwa na data nzuri kwa uchambuzi:
darasa | umbo la kofia | uso wa kofia | rangi ya kofia | majeraha | harufu | kiambatisho cha magamba | nafasi ya magamba | ukubwa wa magamba | rangi ya magamba | umbo la shina | mzizi wa shina | uso wa shina juu ya pete | uso wa shina chini ya pete | rangi ya shina juu ya pete | rangi ya shina chini ya pete | aina ya pazia | rangi ya pazia | idadi ya pete | aina ya pete | rangi ya uchapaji wa spora | idadi ya watu | makazi |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sumu | Mbonyeo | Laini | Kahawia | Majeraha | Chungu | Huru | Karibu | Nyembamba | Nyeusi | Inapanuka | Sawa | Laini | Laini | Nyeupe | Nyeupe | Sehemu | Nyeupe | Moja | Inaning'inia | Nyeusi | Imetawanyika | Mjini |
Chakula | Mbonyeo | Laini | Njano | Majeraha | Mlozi | Huru | Karibu | Pana | Nyeusi | Inapanuka | Klabu | Laini | Laini | Nyeupe | Nyeupe | Sehemu | Nyeupe | Moja | Inaning'inia | Kahawia | Wengi | Nyasi |
Chakula | Kengele | Laini | Nyeupe | Majeraha | Anise | Huru | Karibu | Pana | Kahawia | Inapanuka | Klabu | Laini | Laini | Nyeupe | Nyeupe | Sehemu | Nyeupe | Moja | Inaning'inia | Kahawia | Wengi | Malisho |
Sumu | Mbonyeo | Magamba | Nyeupe | Majeraha | Chungu | Huru | Karibu | Nyembamba | Kahawia | Inapanuka | Sawa | Laini | Laini | Nyeupe | Nyeupe | Sehemu | Nyeupe | Moja | Inaning'inia | Nyeusi | Imetawanyika | Mjini |
Mara moja, unagundua kuwa data yote ni ya maandishi. Utalazimika kubadilisha data hii ili uweze kuitumia katika chati. Kwa kweli, data nyingi inawakilishwa kama kitu:
print(mushrooms.select_dtypes(["object"]).columns)
Matokeo ni:
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')
Chukua data hii na ubadilishe safu ya 'darasa' kuwa kategoria:
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
Sasa, ukichapisha data ya uyoga, utaona kuwa imepangwa katika kategoria kulingana na darasa la sumu/chakula:
umbo la kofia | uso wa kofia | rangi ya kofia | majeraha | harufu | kiambatisho cha magamba | nafasi ya magamba | ukubwa wa magamba | rangi ya magamba | umbo la shina | ... | uso wa shina chini ya pete | rangi ya shina juu ya pete | rangi ya shina chini ya pete | aina ya pazia | rangi ya pazia | idadi ya pete | aina ya pete | rangi ya uchapaji wa spora | idadi ya watu | makazi | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
darasa | |||||||||||||||||||||
Chakula | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 |
Sumu | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 |
Ukifuata mpangilio uliowasilishwa katika jedwali hili kuunda lebo za kategoria za darasa lako, unaweza kuunda chati ya pai:
Pai!
labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()
Voila, chati ya pai inayoonyesha uwiano wa data hii kulingana na madarasa haya mawili ya uyoga. Ni muhimu sana kupata mpangilio wa lebo sahihi, hasa hapa, kwa hivyo hakikisha unathibitisha mpangilio ambao safu ya lebo imejengwa!
Donati!
Chati ya pai yenye kuvutia zaidi kwa macho ni chati ya donati, ambayo ni chati ya pai yenye shimo katikati. Hebu tuangalie data yetu kwa kutumia mbinu hii.
Angalia makazi mbalimbali ambapo uyoga hukua:
habitat=mushrooms.groupby(['habitat']).count()
habitat
Hapa, unapangilia data yako kulingana na makazi. Kuna 7 yaliyoorodheshwa, kwa hivyo tumia hayo kama lebo za chati yako ya donati:
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()
Msimbo huu unachora chati na mduara wa katikati, kisha unaongeza mduara huo wa katikati kwenye chati. Hariri upana wa mduara wa katikati kwa kubadilisha 0.40
kuwa thamani nyingine.
Chati za donati zinaweza kubadilishwa kwa njia kadhaa ili kubadilisha lebo. Lebo hasa zinaweza kuangaziwa ili kusomeka vizuri. Jifunze zaidi katika docs.
Sasa kwa kuwa unajua jinsi ya kupanga data yako na kisha kuionyesha kama pai au donati, unaweza kuchunguza aina nyingine za chati. Jaribu chati ya waffle, ambayo ni njia tofauti ya kuchunguza idadi.
Waffles!
Chati ya aina ya 'waffle' ni njia tofauti ya kuonyesha idadi kama safu ya 2D ya miraba. Jaribu kuonyesha idadi tofauti za rangi za kofia za uyoga katika seti hii ya data. Ili kufanya hivyo, unahitaji kusakinisha maktaba ya msaidizi inayoitwa PyWaffle na kutumia Matplotlib:
pip install pywaffle
Chagua sehemu ya data yako ili kuipanga:
capcolor=mushrooms.groupby(['cap-color']).count()
capcolor
Unda chati ya waffle kwa kuunda lebo na kisha kupanga data yako:
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"],
)
Kwa kutumia chati ya waffle, unaweza kuona wazi uwiano wa rangi za kofia za uyoga katika seti hii ya data. Kwa kushangaza, kuna uyoga wengi wenye kofia za kijani!
✅ Pywaffle inaunga mkono ikoni ndani ya chati zinazotumia ikoni yoyote inayopatikana katika Font Awesome. Fanya majaribio kuunda chati ya waffle ya kuvutia zaidi kwa kutumia ikoni badala ya miraba.
Katika somo hili, ulijifunza njia tatu za kuonyesha uwiano. Kwanza, unahitaji kupanga data yako katika kategoria na kisha kuamua ni njia gani bora ya kuonyesha data - pai, donati, au waffle. Zote ni tamu na zinamfurahisha mtumiaji kwa muhtasari wa haraka wa seti ya data.
🚀 Changamoto
Jaribu kuunda upya chati hizi tamu katika Charticulator.
Jaribio la baada ya somo
Mapitio & Kujisomea
Wakati mwingine si rahisi kujua ni lini utumie pai, donati, au chati ya waffle. Hapa kuna makala za kusoma kuhusu mada hii:
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
Fanya utafiti ili kupata maelezo zaidi kuhusu uamuzi huu mgumu.
Kazi
Kanusho:
Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI Co-op Translator. Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.