|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago |
README.md
Визуализиране на пропорции
![]() |
---|
Визуализиране на пропорции - Скетч от @nitya |
В този урок ще използвате различен набор от данни, свързан с природата, за да визуализирате пропорции, като например колко различни видове гъби се срещат в даден набор от данни за гъби. Нека разгледаме тези очарователни гъби, използвайки набор от данни, предоставен от Audubon, който съдържа информация за 23 вида гъби с ламели от семействата Agaricus и Lepiota. Ще експериментирате с апетитни визуализации като:
- Кръгови диаграми 🥧
- Диаграми тип "поничка" 🍩
- Диаграми тип "вафла" 🧇
💡 Един много интересен проект, наречен Charticulator от Microsoft Research, предлага безплатен интерфейс за визуализация на данни чрез влачене и пускане. В един от техните уроци те също използват този набор от данни за гъби! Така можете да изследвате данните и да научите библиотеката едновременно: Charticulator tutorial.
Тест преди лекцията
Запознайте се с вашите гъби 🍄
Гъбите са много интересни. Нека импортираме набор от данни, за да ги изучим:
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
Таблица се отпечатва с чудесни данни за анализ:
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Отровна | Изпъкнала | Гладка | Кафява | Синини | Остра | Свободна | Плътна | Тясна | Черна | Разширяваща | Равна | Гладка | Гладка | Бяла | Бяла | Частична | Бяла | Една | Висяща | Черна | Разпръсната | Градска |
Ядлива | Изпъкнала | Гладка | Жълта | Синини | Бадем | Свободна | Плътна | Широка | Черна | Разширяваща | Клуб | Гладка | Гладка | Бяла | Бяла | Частична | Бяла | Една | Висяща | Кафява | Многобройна | Треви |
Ядлива | Камбанка | Гладка | Бяла | Синини | Анасон | Свободна | Плътна | Широка | Кафява | Разширяваща | Клуб | Гладка | Гладка | Бяла | Бяла | Частична | Бяла | Една | Висяща | Кафява | Многобройна | Ливади |
Отровна | Изпъкнала | Люспеста | Бяла | Синини | Остра | Свободна | Плътна | Тясна | Кафява | Разширяваща | Равна | Гладка | Гладка | Бяла | Бяла | Частична | Бяла | Една | Висяща | Черна | Разпръсната | Градска |
Веднага забелязвате, че всички данни са текстови. Ще трябва да конвертирате тези данни, за да можете да ги използвате в диаграма. Всъщност повечето данни са представени като обект:
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')
Вземете тези данни и конвертирайте колоната 'class' в категория:
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
Сега, ако отпечатате данните за гъбите, можете да видите, че те са групирани в категории според класа ядливи/отровни:
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 | |||||||||||||||||||||
Ядлива | 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 |
Ако следвате реда, представен в тази таблица, за да създадете етикетите за категорията 'class', можете да създадете кръгова диаграма:
Кръг!
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
на друга стойност.
Диаграмите тип "поничка" могат да бъдат променяни по различни начини, за да се променят етикетите. Етикетите, по-специално, могат да бъдат подчертани за по-добра четимост. Научете повече в документацията.
Сега, когато знаете как да групирате данните си и след това да ги показвате като кръг или поничка, можете да изследвате други видове диаграми. Опитайте диаграма тип "вафла", която е просто различен начин за изследване на количествата.
Вафли!
Диаграмата тип "вафла" е различен начин за визуализиране на количества като двумерна решетка от квадрати. Опитайте да визуализирате различните количества цветове на шапките на гъбите в този набор от данни. За да направите това, трябва да инсталирате помощна библиотека, наречена 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
Направете проучване, за да намерите повече информация относно това трудно решение.
Задача
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.