13. diel - Pandas - Metódy na výber, radenie a analýzu dát
V predchádzajúcom kvíze, Kvíz - Práca s reťazcami, matematickými dátami v Pandas, sme si overili nadobudnuté skúsenosti z predchádzajúcich lekcií.
V tejto lekcii knižnice Pandas v Pythone sa pozrieme na metódy na výber, radenie a analýzu dát.
Metódy na výber, radenie a analýzu dát v Pandas
Ukážeme si, ako vyberať špecifické časti datasetu, zoradiť dáta podľa rôznych kritérií a vykonávať analýzu na získanie dôležitých informácií a prehľadov. Tieto techniky nám pomôžu lepšie porozumieť dátam a pripraviť ich pre ďalšie analýzy. Poďme si však prvýkrát naimportovať dáta.
Import dát
Rovnako ako v lekcii Pandas - Kombinovanie DataFrames použijeme dataset s úbytkom zamestnancov v zdravotníckom sektore v USA. Dataset je opäť dostupný v prílohe na konci lekcie.
Dataset je vytvorený na základe reálnych dát a snaží sa predpovedať, či zamestnanec zostane vo firme, alebo odíde.
Naimportujme si teda dataset zo súboru healthcare.csv:
import pandas as pd df = pd.read_csv('healthcare.csv') df
Po vykonanom importe vidíme dáta:

Výber dát
Začneme zľahka. Najskôr si ukážeme metódy, ktorými vyberieme určitý počet riadkov z nášho datasetu. Tieto metódy následne využijeme neskôr, a to napríklad v kombinácii s radením. Využijeme tak vzor Method chaining, ktorý je v Pandas veľmi užitočný a bežne používaný.
Viac sa o vzore Method chaining dozvieme v lekcii Method chaining a method cascading.
head()
Pomocou metódy head() zobrazíme prvých n riadkov
z datasetu. V predvolenom nastavení je to päť riadkov, ale to môžeme
zmeniť. Zavolajme si head() na našom datasete:
df.head()
Výstupom je skutočne prvých päť riadkov:

tail()
Rovnako ako sme vybrali prvých n riadkov pomocou
head(), môžeme tiež vybrať posledných n riadkov
využitím metódy tail().
Nech sa neopakujeme, vyberieme si posledných sto riadkov:
df.tail(100)
Výstupom teda bude posledných sto záznamov:

V zobrazení ich samozrejme toľko neuvidíme, ale pracovať s nimi môžeme.
Radenie dát
Radenie dát je kľúčová operácia pri práci s tabuľkovými dátami. Umožňuje nám usporiadať hodnoty v datasete podľa špecifických kritérií, čo je užitočné pre prehľadnosť, analýzu trendov alebo identifikáciu extrémnych hodnôt.
V tejto časti sa zameriame na niekoľko základných metód, ktoré nám pomôžu zoradiť dáta v Pandas. Tieto metódy nám umožnia zoradiť dáta buď podľa hodnôt v stĺpcoch, podľa indexu alebo podľa iných špecifických parametrov, ako sú najnižšie alebo najvyššie hodnoty v stĺpci.
Metódy, ktoré si ukážeme, zahŕňajú:
- Radenie podľa hodnoty v stĺpci metódou
sort_values(). - Radenie podľa indexu metódou
sort_index(). - Priraďovanie poradia hodnotám v stĺpci metódou
rank().
sort_values()
Metóda sort_values() umožňuje radenie
hodnôt v konkrétnom stĺpci dataframe. Hodnoty môžeme zoradiť buď
vzostupne alebo zostupne. V predvolenom nastavení je zoradenie vzostupne.
Vzostupné zoradenie je udávané parametrom ascending a hodnotou
True.
Poďme si zoradiť záznamy podľa mesačného príjmu, znázorneného
stĺpcom MonthlyIncome. Vyberieme si iba tento stĺpec a následne
zavoláme metódu sort_values():
df[['MonthlyIncome']].sort_values(by='MonthlyIncome')
Ďalej sme v metóde sort_values() pridali parameter
by, ktorý určuje stĺpec, podľa ktorého radíme.
Z dát vidíme zoradenie mesačných platov v dolároch od najmenšieho po najväčší:

Skúsme to aj obrátene. Pridáme parameter ascending a
nastavíme jeho hodnotu na False, čím docielime zostupné
radenie:
df[['MonthlyIncome']].sort_values(by='MonthlyIncome', ascending=False)
Najvyšší plat tak teraz bude hore:

sort_index()
Metóda sort_index() slúži na radenie riadkov
podľa ich indexu. Ak máme indexy v neusporiadanom poradí,
môžeme ich zoradiť tak, aby boli usporiadané vzostupne alebo zostupne. Dáta
v našom datasete majú záznamy zoradené vzostupne, preto si ich skúsime
zoradiť zostupne.
Podobne ako to bolo pri metóde sort_values(), využijeme
parameter ascending, do ktorého vložíme hodnotu
False:
df.sort_index(ascending=False)
Výstupom bude zostupné radenie všetkých dát podľa indexu:

rank()
Metóda rank() priradí poradie hodnotám v
stĺpci podľa ich veľkosti. Najmenšia hodnota dostane
poradie 1, druhá najmenšia 2 a najväčšia potom
1676 (v našom datasete). Pri zhodných hodnotách sa poradie
určuje podľa parametra metódy.
Metóda môže prijímať v parametri method tieto hodnoty:
average– Priemerné poradie pre zhodné hodnoty.min– Najnižšie možné poradie zhodnej hodnoty.max– Najvyššie možné poradie pre zhodné hodnoty.first– Poradie sa určí podľa poradia v datasete.
Poďme si ukázať, ako rank() funguje. Najskôr si vyberieme
niekoľko záznamov pomocou metódy head() a pridáme umelo zhodnú
hodnotu, aby sme videli rozdiely v rôznych režimoch radenia:
df_rank = df[['MonthlyIncome']].head(10) df_rank.loc[0, 'MonthlyIncome'] = 3468 df_rank['MonthlyIncome'].rank(method='average')
Vo výstupe teda dostaneme:

Dostali sme desať hodnôt, kde má každá svoje poradie, ktoré je
hodnotené číslicami 1.0 až 10.0. Dve hodnoty sa
nám opakujú, a preto majú zhodné poradie 6.5. Docielili sme to
práve využitím hodnoty average v parametri
method.
Vyskúšajme si to isté aj pri použití hodnoty max. Aby toho
nebolo málo, zoraďme si poradie zostupne využitím už nami známej metódy
sort_values():
df_rank['MonthlyIncome'].rank(method='max').sort_values(ascending=False)
Vidíme, že poradie je teraz zoradené od najväčšieho po najmenšie a
opakujúce sa hodnoty majú obe poradie 7.0, pretože sme využili
hodnotu max:

Analýza dát
Analýza dát nám pomôže získať náhľad do štruktúry datasetu, identifikovať najvyššie a najnižšie hodnoty, rozloženie dát alebo odhaliť prípadné anomálie. Ukážeme si niektoré metódy, ktoré slúžia na tieto účely.
nsmallest()
Metóda nsmallest() slúži na výber n riadkov s
najnižšími hodnotami v určitom stĺpci. Môžeme ju
využiť napríklad na identifikáciu desiatich najmladších zamestnancov:
df.nsmallest(10, 'Age')
Výstupom je desať najmladších zamestnancov:

nlargest()
Poďme na to obrátene. Vyberieme si n najväčších
hodnôt. Práve na výber n najväčších hodnôt slúži
metóda nlargest(). Tentokrát pridáme niečo navyše. Okrem veku
si pridáme ešte stĺpec DistanceFromHome a získame si tak desať
najstarších zamestnancov s najväčšou vzdialenosťou od domova:
df.nlargest(10, ['Age', 'DistanceFromHome'])[['Age', 'DistanceFromHome']]
Vo výstupe vidíme:

Všimnime si, že hoci niektorí zamestnanci to majú od domova ďalej, tak
sú zobrazení nižšie, pretože sú mladší. Ako hlavný určujúci faktor je
teda stĺpec Age a až potom stĺpec
DistanceFromHome.
sample()
Ako poslednú si predstavíme metódu sample(). Využitím
sample() môžeme náhodne vybrať riadky z
datasetu. Zvoliť si môžeme počet riadkov alebo percentuálny podiel
údajov.
Vyberieme si teda pätnásť náhodných riadkov:
df.sample(15)
Vo výstupe vidíme:

Vyskúšajme si metódu znova, nech sa uistíme, že sú dáta naozaj
náhodné. Pre náhodný výber určitého percenta záznamov
využijeme parameter frac a nastavíme hodnotu. Nastavme si, že
chceme 30 % záznamov:
df.sample(frac=0.3)
Vo výstupe dostaneme niečo cez päťsto záznamov:

V nasledujúcej lekcii, Pandas - Práca s multiindexmi, sa zameriame na prácu s multiindexmi, ktoré poskytujú mocné nástroje na organizáciu a analýzu zložitejších dát.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 7x (59.22 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

