SAMSUNG 042024 Advertisement SAMSUNG 042024 Advertisement SAMSUNG 042024 Advertisement

ML v Pythone 5 – vizualizácia údajov pomocou grafov

0

predchádzajúcej časti sme ukázali ako zistíte informácie o tabuľkách v objektoch DataFrame, ako zostavíte podmienky pre výber údajov, ako utriedite údaje a začali sme tému ako údaje zobrazíte pomocou grafov. V tejto časti budeme pokračovať v téme vizualizácia údajov

Postup vytvorenia príkladov je v krátkom videu

Najskôr pripravíme údaje. V našom príklade naplníme tabuľku, čiže DataFrame údajmi o ročnej miere nezamestnanosti v rokoch 1998 - 2016. Budú to teda diskrétne, nie spojité údaje

import pandas as pd
 
data = {'rok': [1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,2016, 2017, 2018, 2019],
        'nezamestnanost': [12.6, 16.3, 18.8, 19.3, 18.6, 17.5, 18.1, 16.7, 13.3, 11, 9.6, 12.1,  14.4, 13.6, 14.4, 13.5, 12.3, 10.6, 8.8, 5.9, 5, 4.9]
       }
df = pd.DataFrame(data)
df

Oveľa názornejšie než zobrazenie údajov v tabuľke a určite aj kompaktnejšie bude zobrazenie formou grafov. Na zobrovanie grafov využívame knižnicu matplotlib. V online prostredí Google Colab túto knižnicu nemusíte inštalovať, stačí ju importovať. Pokiaľ vo funkcii plot() neurčíme typ grafu, zobrazí sa čiarový graf.

import matplotlib.pyplot as plt
df.plot(x ='rok', y='nezamestnanost')
plt.show()

Čiarový graf je vhodnejší pre spojité hodnoty. Pre diskrétne údaje, kde poznáme hodnoty na osi Y len pre konkrétne hodnoty na osi X, v tomto prípade pre roky bude lepší a názornejší stĺpcový graf

df.plot(x ='rok', y='nezamestnanost', kind='bar')
plt.show()

Vráťme sa však k základnému čiarovému grafu. Na ňom ukážeme možnosti prispôsobenia. Môžete definovať farbu grafu a tvar markerov. Tvar markerov sa pre jednoduchosť udáva pomoocu písmen. Malé O znamená krúžok, v šípku, x krížik...

df.plot(x ='rok', y='nezamestnanost', color='r', marker='v')
plt.show()

Na niektoré údaje je vhodný graf typu scatter

df.plot(x ='rok', y='nezamestnanost', kind='scatter')
plt.show()

Koláčové grafy sa hodia pre údaje, ktoré tvoria nejaký celok, pričom sa zobrazuje percentuálny podiel jednotlivých hodnôt. Napríklad môžeme takto vizuálne dokumentovať aktuálny stav projektov.

data_proj = {'stav': ['v príprave', 'rozpracované', 'ukončené','odovzdané'],
        'pocet': [13, 9, 26, 18]
       }
df_proj = pd.DataFrame(data_proj)
print(df_proj)
 
           stav  pocet
0    v príprave     13
1  rozpracované      9
2      ukončené     26
3     odovzdané     18

Nakreslíme koláčový graf, pričom požadujeme zobrazenie percentuálneho podielu na jedno desatinné miesto

df_proj.plot.pie(y='pocet', figsize=(5, 5), autopct='%1.1f%%', startangle=90)
plt.show()

V legende sú implicitne indexy. Môžeme sa o tom presvedčiť ak ako indexy použijeme stav projektov. Pre jeden z ďalších príkladov, v ktorom ukážeme vykreslenie grafov pre viaceré hodnoty sme pridali aj atribút ľudia, ktorý udáva koľko pracovníkov participuje na projektoch v jednotlivých fázach

df_proj1 = pd.DataFrame({'pocet': [3, 9, 26, 18],
                        'ludia': [2, 6, 9, 1]},
                  index=['v príprave', 'rozpracované', 'ukončené','odovzdané'])
plot = df_proj1.plot.pie(y='pocet', figsize=(5, 5), autopct='%1.1f%%', startangle=90)
plt.title("Stav projektov")
plt.show()

V nasledujúcom príklade vykreslíme dva grafy, druhý graf bude udávať koľko ľudí participuje na projektoch v danej fáze

plot = df_proj1.plot.pie(subplots=True, figsize=(12, 5))
plt.title("Stav projektov a participujúci pracovníci")
plt.show()

Aby sme mohli demonštrovať ďalšie typy grafov, vytvoríme tabuľku v ktorej budú rozpísané výdavky pre jednotlivé projekty. Nasledujúci graf vizualizuje údaje pomocou vrstvených rôznofarebných plôch

df_vydavky = pd.DataFrame({'mzdy': [32000, 14000, 7000, 8000],
                        'materiál': [14000, 4000, 6000, 11000],
                        'réžia': [2600, 1800, 9400, 4200],
                        'ostatné': [960, 1630, 2700, 900]},
                  index=['Bezpečnosť práce', 'IT bezpečnosť', 'Školenia','Racionalizácia'])
plot = df_vydavky.plot.area()
plt.title("Výdavky na projekty")
plt.show()

Ak nechceme údaje jednotlivých atribútov vrstviť, je potrebné nastaviť parameter stacked na hodnotu False

plot = df_vydavky.plot.area(stacked=False)
plt.title("Výdavky na projekty")
plt.show()

Pre tieto taktiež diskrétne hodnoty by sa lepšie hodil stĺpcový, alebo vrstvený stĺpcový graf

df_vydavky.plot.bar()
plt.show()
 
df_vydavky.plot.bar(stacked = True)
plt.show()

Vizualizácii údajov, presnejšie animácii sa budeme venovať aj v budúcom pokračovaní, v ktorom ukážeme ako vytvoriť animovaný graf a uložiť ho ako video súbor

Strojové učenie v Pythone 1 – prostredie Google Colab

Strojové učenie v Pythone 2 – knižnica Pandas na prácu s údajmi

ML v Pythone 3 – export a import údajov vo formáte CSV a Excel

Strojové učenie v Pythone 4 – práca s údajmi

Zobrazit Galériu

Luboslav Lacko

Všetky autorove články
Python strojove ucenie

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať