|
|
1 year ago | |
|---|---|---|
| .. | ||
| solution | 1 year ago | |
| README.md | 1 year ago | |
| assignment.md | 1 year ago | |
| notebook.ipynb | 1 year ago | |
README.md
Визуализација пропорција
![]() |
|---|
| Визуализација пропорција - Скетч од @nitya |
У овом лекцији, користићете другачији сет података фокусиран на природу како бисте визуализовали пропорције, као што је број различитих врста гљива у датом сету података о печуркама. Истражимо ове фасцинантне гљиве користећи сет података из Audubon-а који садржи детаље о 23 врсте гљива са ламелама из породица Agaricus и Lepiota. Експериментисаћете са укусним визуализацијама као што су:
- Пита графикони 🥧
- Донат графикони 🍩
- Вафл графикони 🧇
💡 Веома занимљив пројекат под називом Charticulator од Microsoft Research-а нуди бесплатан интерфејс за визуализацију података методом "превуци и пусти". У једном од њихових туторијала такође користе овај сет података о печуркама! Тако можете истражити податке и истовремено научити библиотеку: Charticulator туторијал.
Квиз након предавања
Упознајте своје печурке 🍄
Печурке су веома занимљиве. Увезимо сет података да их проучимо:
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
Табела се штампа са одличним подацима за анализу:
| класа | облик капе | површина капе | боја капе | модрице | мирис | причвршћивање ламела | размак ламела | величина ламела | боја ламела | облик стабљике | корен стабљике | површина стабљике изнад прстена | површина стабљике испод прстена | боја стабљике изнад прстена | боја стабљике испод прстена | тип велума | боја велума | број прстена | тип прстена | боја спора | популација | станиште |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Отровна | Конвексна | Глатка | Браон | Модрице | Оштра | Слободно | Близу | Уска | Црна | Широка | Једнака | Глатка | Глатка | Бела | Бела | Делимична | Бела | Један | Висећи | Црна | Расута | Урбана |
| Јестива | Конвексна | Глатка | Жута | Модрице | Бадем | Слободно | Близу | Широка | Црна | Широка | Клупа | Глатка | Глатка | Бела | Бела | Делимична | Бела | Један | Висећи | Браон | Бројна | Трава |
| Јестива | Звонаста | Глатка | Бела | Модрице | Анис | Слободно | Близу | Широка | Браон | Широка | Клупа | Глатка | Глатка | Бела | Бела | Делимична | Бела | Један | Висећи | Браон | Бројна | Ливаде |
| Отровна | Конвексна | Љускава | Бела | Модрице | Оштра | Слободно | Близу | Уска | Браон | Широка | Једнака | Глатка | Глатка | Бела | Бела | Делимична | Бела | Један | Висећи | Црна | Расута | Урбана |
Одмах примећујете да су сви подаци текстуални. Мораћете да конвертујете ове податке како бисте их могли користити у графикону. Већина података је, у ствари, представљена као објекат:
print(mushrooms.select_dtypes(["object"]).columns)
Излаз је:
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')
Узмите ове податке и конвертујте колону 'класа' у категорију:
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
Сада, ако одштампате податке о печуркама, можете видети да су груписани у категорије према класи отровна/јестива:
| облик капе | површина капе | боја капе | модрице | мирис | причвршћивање ламела | размак ламела | величина ламела | боја ламела | облик стабљике | ... | површина стабљике испод прстена | боја стабљике изнад прстена | боја стабљике испод прстена | тип велума | боја велума | број прстена | тип прстена | боја спора | популација | станиште | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| класа | |||||||||||||||||||||
| Јестива | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 |
| Отровна | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 |
Ако следите редослед представљен у овој табели за креирање етикета категорија класе, можете направити пита графикон:
Пита!
labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()
Ето га, пита графикон који приказује пропорције ових података према овим двема класама печурака. Веома је важно добити редослед етикета исправно, посебно овде, па обавезно проверите редослед којим је направљен низ етикета!
Донати!
Мало визуелно занимљивији пита графикон је донат графикон, који је пита графикон са рупом у средини. Погледајмо наше податке користећи овај метод.
Погледајте различита станишта где расту печурке:
habitat=mushrooms.groupby(['habitat']).count()
habitat
Овде групишете своје податке према станишту. Наведено је 7 станишта, па их користите као етикете за ваш донат графикон:
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()
Овај код црта графикон и централни круг, а затим додаје тај централни круг у графикон. Уредите ширину централног круга променом 0.40 на другу вредност.
Донат графикони могу се прилагодити на неколико начина како би се промениле етикете. Етикете посебно могу бити истакнуте ради боље читљивости. Сазнајте више у документацији.
Сада када знате како да групишете своје податке и затим их прикажете као пита или донат, можете истражити друге типове графикона. Пробајте вафл графикон, који је само другачији начин истраживања количине.
Вафли!
'Вафл' тип графикона је другачији начин визуализације количина као 2Д низ квадрата. Пробајте да визуализујете различите количине боја капа печурака у овом сету података. Да бисте то урадили, потребно је да инсталирате помоћну библиотеку под називом PyWaffle и користите Matplotlib:
pip install pywaffle
Изаберите сегмент ваших података за груписање:
capcolor=mushrooms.groupby(['cap-color']).count()
capcolor
Направите вафл графикон креирањем етикета и затим груписањем ваших података:
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"],
)
Користећи вафл графикон, можете јасно видети пропорције боја капа у овом сету података о печуркама. Занимљиво је да има много печурака са зеленим капама!
✅ Pywaffle подржава иконе унутар графикона које користе било коју икону доступну у Font Awesome. Урадите неке експерименте да направите још занимљивији вафл графикон користећи иконе уместо квадрата.
У овом лекцији, научили сте три начина за визуализацију пропорција. Прво, потребно је да групишете своје податке у категорије, а затим да одлучите који је најбољи начин за приказивање података - пита, донат или вафл. Сви су укусни и пружају кориснику тренутни снимак сета података.
🚀 Изазов
Пробајте да поново направите ове укусне графиконе у Charticulator.
Квиз након предавања
Преглед и самостално учење
Понекад није очигледно када користити пита, донат или вафл графикон. Ево неких чланака за читање на ову тему:
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
Истражите више информација о овој лепљивој одлуци.
Задатак
Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.



