13. diel - Pandas - Metódy na výber, radenie a analýzu dát Nové
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 tomto tutoriále knižnice Pandas v Pythone sa pozrieme na metódy pre 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
Použijeme iné dáta, než v predchádzajúcich lekciách. Naimportujeme si
dataset, ktorý simuluje úbytok zamestnancov v zdravotníckom sektore v USA.
Dataset je vytvorený na základe reálnych dát a snaží sa predpovedať, či
zamestnanec zostane vo firme, alebo odíde. Tak ako vždy je csv
súbor dostupný v prílohe na konci lekcie.
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äčšie:

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 tomu bolo pri metóde sort_values()
, využijeme
parametra 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()
nám 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.
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 každá má 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 poznáme 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 dáta sú naozaj
náhodné. Pre náhodný výber uč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 pre 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é 5x (58.73 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python