12 KiB
Arányok vizualizálása
![]() |
---|
Arányok vizualizálása - Sketchnote by @nitya |
Ebben a leckében egy természetközpontú adatállományt fogsz használni, hogy vizualizáld az arányokat, például azt, hogy hány különböző gombafaj található egy adott adatállományban a gombákról. Fedezzük fel ezeket a lenyűgöző gombákat egy Audubon által összeállított adatállomány segítségével, amely 23 lemezes gombafaj részleteit tartalmazza az Agaricus és Lepiota családokból. Kísérletezz ínycsiklandó vizualizációkkal, mint például:
- Torta diagramok 🥧
- Fánk diagramok 🍩
- Waffle diagramok 🧇
💡 A Microsoft Research által létrehozott Charticulator nevű projekt egy ingyenes drag and drop felületet kínál az adatvizualizációkhoz. Az egyik oktatóanyagukban szintén ezt a gomba adatállományt használják! Így egyszerre fedezheted fel az adatokat és tanulhatod meg a könyvtár használatát: Charticulator oktatóanyag.
Előadás előtti kvíz
Ismerd meg a gombáidat 🍄
A gombák nagyon érdekesek. Importáljunk egy adatállományt, hogy tanulmányozhassuk őket:
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
Egy táblázat jelenik meg, amely remek adatokat tartalmaz elemzéshez:
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Mérgező | Domború | Sima | Barna | Zúzódik | Szúrós | Szabad | Szoros | Keskeny | Fekete | Táguló | Egyenlő | Sima | Sima | Fehér | Fehér | Részleges | Fehér | Egy | Függő | Fekete | Szórványos | Városi |
Ehető | Domború | Sima | Sárga | Zúzódik | Mandula | Szabad | Szoros | Széles | Fekete | Táguló | Klub | Sima | Sima | Fehér | Fehér | Részleges | Fehér | Egy | Függő | Barna | Számos | Füves |
Ehető | Harang | Sima | Fehér | Zúzódik | Ánizs | Szabad | Szoros | Széles | Barna | Táguló | Klub | Sima | Sima | Fehér | Fehér | Részleges | Fehér | Egy | Függő | Barna | Számos | Mezők |
Mérgező | Domború | Pikkelyes | Fehér | Zúzódik | Szúrós | Szabad | Szoros | Keskeny | Barna | Táguló | Egyenlő | Sima | Sima | Fehér | Fehér | Részleges | Fehér | Egy | Függő | Fekete | Szórványos | Városi |
Rögtön észreveheted, hogy az összes adat szöveges. Az adatokat át kell alakítanod, hogy diagramon használhatóak legyenek. Valójában az adatok többsége objektumként van ábrázolva:
print(mushrooms.select_dtypes(["object"]).columns)
Az eredmény:
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')
Konvertáld az 'osztály' oszlopot kategóriává:
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
Most, ha kinyomtatod a gomba adatokat, láthatod, hogy azokat kategóriákba csoportosították a mérgező/ehető osztály szerint:
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 | |||||||||||||||||||||
Ehető | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 |
Mérgező | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 |
Ha követed a táblázatban bemutatott sorrendet az osztály kategória címkék létrehozásához, készíthetsz egy torta diagramot:
Torta!
labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()
Voilá, egy torta diagram, amely megmutatja az adatok arányait a gombák két osztálya szerint. Nagyon fontos, hogy a címkék sorrendje helyes legyen, különösen itt, ezért ellenőrizd a címke tömb létrehozásának sorrendjét!
Fánkok!
Egy vizuálisan érdekesebb torta diagram a fánk diagram, amely egy lyukkal rendelkező torta diagram. Nézzük meg az adatainkat ezzel a módszerrel.
Nézd meg a különböző élőhelyeket, ahol a gombák nőnek:
habitat=mushrooms.groupby(['habitat']).count()
habitat
Itt az adatokat élőhely szerint csoportosítod. Hét élőhely van felsorolva, így ezeket használd címkékként a fánk diagramhoz:
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()
Ez a kód egy diagramot és egy középső kört rajzol, majd hozzáadja azt a diagramhoz. A középső kör szélességét a 0.40
érték megváltoztatásával módosíthatod.
A fánk diagramok többféleképpen is testreszabhatók, például a címkék olvashatóságának javítása érdekében. További információt a dokumentációban találsz.
Most, hogy tudod, hogyan csoportosítsd az adatokat, és hogyan jelenítsd meg őket torta vagy fánk formájában, felfedezhetsz más típusú diagramokat is. Próbálj ki egy waffle diagramot, amely egy másik módja a mennyiségek vizualizálásának.
Waffle!
A 'waffle' típusú diagram egy másik módja a mennyiségek vizualizálásának egy 2D négyzetes tömb formájában. Próbáld meg vizualizálni a gombák kalapszíneinek különböző mennyiségeit ebben az adatállományban. Ehhez telepítened kell egy segédkönyvtárat, a PyWaffle nevűt, és használnod kell a Matplotlib-et:
pip install pywaffle
Válassz ki egy adat szegmenst csoportosításhoz:
capcolor=mushrooms.groupby(['cap-color']).count()
capcolor
Hozz létre egy waffle diagramot címkék létrehozásával, majd csoportosítsd az adatokat:
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"],
)
A waffle diagram segítségével egyértelműen láthatod a gombák kalapszíneinek arányait ebben az adatállományban. Érdekes módon sok zöld kalapú gomba van!
✅ A PyWaffle támogatja az ikonokat a diagramokon belül, amelyek bármelyik Font Awesome ikon használatát lehetővé teszik. Kísérletezz, hogy még érdekesebb waffle diagramot készíts ikonok helyett négyzetekkel.
Ebben a leckében három módot tanultál meg az arányok vizualizálására. Először csoportosítanod kell az adatokat kategóriákba, majd eldönteni, hogy melyik a legjobb módja az adatok megjelenítésének - torta, fánk vagy waffle. Mindegyik ínycsiklandó, és azonnali pillanatképet nyújt az adatállományról.
🚀 Kihívás
Próbáld meg újra elkészíteni ezeket az ínycsiklandó diagramokat a Charticulator segítségével.
Előadás utáni kvíz
Áttekintés és önálló tanulás
Néha nem egyértelmű, hogy mikor használjunk torta, fánk vagy waffle diagramot. Íme néhány cikk, amit elolvashatsz a témában:
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
Végezz kutatást, hogy további információkat találj erről a nehéz döntésről.
Feladat
Felelősség kizárása:
Ez a dokumentum az AI fordítási szolgáltatás, a Co-op Translator segítségével került lefordításra. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.