You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 KiB

Vizualizuojame proporcijas

 Sketchnote by (@sketchthedocs)
Proporcijų vizualizavimas - Sketchnote by @nitya

Šioje pamokoje naudosite kitą, gamta orientuotą duomenų rinkinį, kad vizualizuotumėte proporcijas, pavyzdžiui, kiek skirtingų grybų rūšių yra tam tikrame duomenų rinkinyje apie grybus. Panagrinėkime šiuos įdomius grybus naudodami duomenų rinkinį, gautą iš Audubon, kuriame pateikiama informacija apie 23 rūšis lakštelinių grybų iš Agaricus ir Lepiota šeimų. Eksperimentuosite su tokiomis „skaniomis“ vizualizacijomis kaip:

  • Pyrago diagramos 🥧
  • Spurgos diagramos 🍩
  • Vaflių diagramos 🧇

💡 Labai įdomus projektas, vadinamas Charticulator, sukurtas „Microsoft Research“, siūlo nemokamą „drag and drop“ sąsają duomenų vizualizacijoms. Viename iš jų mokymų taip pat naudojamas šis grybų duomenų rinkinys! Taigi galite tyrinėti duomenis ir tuo pačiu metu mokytis naudotis biblioteka: Charticulator tutorial.

Prieš paskaitą - testas

Susipažinkite su savo grybais 🍄

Grybai yra labai įdomūs. Importuokime duomenų rinkinį, kad juos išnagrinėtume:

import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()

Atspausdinama lentelė su puikiais duomenimis analizei:

klasė kepurėlės forma kepurėlės paviršius kepurėlės spalva mėlynės kvapas lakštelių prisitvirtinimas lakštelių tarpai lakštelių dydis lakštelių spalva kotelio forma kotelio šaknis paviršius virš žiedo paviršius po žiedu spalva virš žiedo spalva po žiedu šydo tipas šydo spalva žiedų skaičius žiedo tipas sporų spalva populiacija buveinė
Nuodingas Išgaubta Lygi Ruda Mėlynės Aštrus Laisvas Tankūs Siauri Juoda Platėjantis Lygus Lygus Lygus Balta Balta Dalinis Balta Vienas Kabantis Juoda Išsibarstę Miestas
Valgomas Išgaubta Lygi Geltona Mėlynės Migdolų Laisvas Tankūs Platus Juoda Platėjantis Klubas Lygus Lygus Balta Balta Dalinis Balta Vienas Kabantis Ruda Gausus Žolynai
Valgomas Varpelio Lygi Balta Mėlynės Anyžinis Laisvas Tankūs Platus Ruda Platėjantis Klubas Lygus Lygus Balta Balta Dalinis Balta Vienas Kabantis Ruda Gausus Pievos
Nuodingas Išgaubta Žvynuota Balta Mėlynės Aštrus Laisvas Tankūs Siauri Ruda Platėjantis Lygus Lygus Lygus Balta Balta Dalinis Balta Vienas Kabantis Juoda Išsibarstę Miestas

Iškart pastebite, kad visi duomenys yra tekstiniai. Turėsite konvertuoti šiuos duomenis, kad galėtumėte juos naudoti diagramoje. Dauguma duomenų iš tiesų pateikiami kaip objektai:

print(mushrooms.select_dtypes(["object"]).columns)

Rezultatas yra:

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')

Paimkite šiuos duomenis ir konvertuokite „klasės“ stulpelį į kategoriją:

cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass

Dabar, jei atspausdinsite grybų duomenis, pamatysite, kad jie buvo suskirstyti į kategorijas pagal nuodingų/valgomų klases:

kepurėlės forma kepurėlės paviršius kepurėlės spalva mėlynės kvapas lakštelių prisitvirtinimas lakštelių tarpai lakštelių dydis lakštelių spalva kotelio forma ... paviršius po žiedu spalva virš žiedo spalva po žiedu šydo tipas šydo spalva žiedų skaičius žiedo tipas sporų spalva populiacija buveinė
klasė
Valgomas 4208 4208 4208 4208 4208 4208 4208 4208 4208 4208 ... 4208 4208 4208 4208 4208 4208 4208 4208 4208 4208
Nuodingas 3916 3916 3916 3916 3916 3916 3916 3916 3916 3916 ... 3916 3916 3916 3916 3916 3916 3916 3916 3916 3916

Jei laikysitės šioje lentelėje pateiktos tvarkos kurdami savo klasių kategorijų etiketes, galite sukurti pyrago diagramą:

Pyragas!

labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()

Štai ir pyrago diagrama, rodanti šių duomenų proporcijas pagal šias dvi grybų klases. Labai svarbu teisingai nustatyti etikečių tvarką, ypač čia, todėl būtinai patikrinkite, ar etikečių masyvas sudarytas teisingai!

pyrago diagrama

Spurgos!

Šiek tiek vizualiai įdomesnė pyrago diagrama yra spurgos diagrama, kuri yra pyrago diagrama su skyle viduryje. Pažvelkime į mūsų duomenis naudodami šį metodą.

Pažvelkite į įvairias buveines, kuriose auga grybai:

habitat=mushrooms.groupby(['habitat']).count()
habitat

Čia grupuojate savo duomenis pagal buveinę. Yra 7 išvardytos buveinės, todėl naudokite jas kaip etiketes savo spurgos diagramai:

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()

spurgos diagrama

Šis kodas nupiešia diagramą ir centrinį apskritimą, tada prideda tą centrinį apskritimą į diagramą. Redaguokite centrinio apskritimo plotį, pakeisdami „0.40“ į kitą reikšmę.

Spurgų diagramas galima įvairiai koreguoti, kad būtų pakeistos etiketės. Ypač etiketės gali būti paryškintos, kad būtų lengviau jas skaityti. Sužinokite daugiau dokumentacijoje.

Dabar, kai žinote, kaip grupuoti savo duomenis ir juos pateikti kaip pyragą ar spurgą, galite tyrinėti kitų tipų diagramas. Pabandykite vaflių diagramą, kuri yra tiesiog kitoks būdas tyrinėti kiekius.

Vafliai!

„Vaflių“ tipo diagrama yra kitoks būdas vizualizuoti kiekius kaip 2D kvadratų masyvą. Pabandykite vizualizuoti skirtingus grybų kepurėlių spalvų kiekius šiame duomenų rinkinyje. Norėdami tai padaryti, turite įdiegti pagalbinę biblioteką, vadinamą PyWaffle, ir naudoti Matplotlib:

pip install pywaffle

Pasirinkite savo duomenų segmentą grupavimui:

capcolor=mushrooms.groupby(['cap-color']).count()
capcolor

Sukurkite vaflių diagramą, sukurdami etiketes ir tada grupuodami savo duomenis:

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"],
)

Naudodami vaflių diagramą, galite aiškiai matyti grybų kepurėlių spalvų proporcijas šiame duomenų rinkinyje. Įdomu tai, kad yra daug žalių kepurėlių grybų!

vaflių diagrama

PyWaffle palaiko piktogramas diagramose, kurios naudoja bet kokią piktogramą, esančią Font Awesome. Eksperimentuokite, kad sukurtumėte dar įdomesnę vaflių diagramą, naudodami piktogramas vietoj kvadratų.

Šioje pamokoje išmokote tris būdus vizualizuoti proporcijas. Pirmiausia turite suskirstyti savo duomenis į kategorijas, o tada nuspręsti, kuris būdas geriausiai atspindi duomenis - pyragas, spurga ar vaflis. Visi jie yra „skanūs“ ir suteikia vartotojui greitą duomenų rinkinio vaizdą.

🚀 Iššūkis

Pabandykite atkurti šias „skanias“ diagramas naudodami Charticulator.

Po paskaitos - testas

Apžvalga ir savarankiškas mokymasis

Kartais nėra akivaizdu, kada naudoti pyrago, spurgos ar vaflių diagramą. Štai keletas straipsnių šia tema:

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

https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402

Atlikite tyrimus, kad rastumėte daugiau informacijos apie šį sudėtingą pasirinkimą.

Užduotis

Pabandykite tai atlikti Excel


Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, atkreipiame dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Dėl svarbios informacijos rekomenduojama naudotis profesionalių vertėjų paslaugomis. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus aiškinimus, kylančius dėl šio vertimo naudojimo.