2. diel - Pandas - Tvorba vlastného datasetu
V predchádzajúcej lekcii, Pandas - Predstavenie knižnice, sme sa dozvedeli, ako nainštalovať knižnicu Pandas a na čo ju môžeme využiť.
V tomto tutoriále knižnice Pandas v Pythone sa zameriame
na to, ako vytvoriť vlastný dataset. Najprv si vysvetlíme
funkciu DataFrame()
a potom si ju vyskúšame na reálnych
príkladoch.
Tvorba datasetu v Pandas
Začnime tým, že si náš otvorený projekt v Jupyter Notebooku pomenujeme.
Klikneme na názov. Otvorí sa nám okno, kde si svoj projekt pomenujeme
napríklad First_dataset.ipynb
. Projekt sa nám automaticky ukladá
do zložky, z ktorej sme Jupyter Notebook spúšťali.
Pandas DataFrame()
Na prácu s datasetom využijeme funkcie DataFrame()
. Funkcia
vyzerá takto:
pandas.DataFrame(data, index, columns)
V parametri data
je sada informácií, z ktorej budeme čerpať
do nášho dataframu. Dáta môžu byť v podobe listu, slovníka a pod.
Parameter index
slúži na očíslovanie našich položiek. Môže
zostať nevyplnený a v takom prípade bude náš zoznam začínať od nuly. A
konečne parameter columns
slúži na pomenovanie stĺpcov. Opäť
platí, že pokiaľ nebude vyplnený, budú stĺpce pomenované číselne nulou
počnúc.
Začneme tým, že vytvoríme jednoduchý dataframe. Najprv vytvoríme
premennú data
, do ktorej vložíme čísla od jednotky do päťky.
Zapísaná premenná bude teda takto:
data = [1,2,3,4,5]
Teraz doplníme náš kód o vyššie spomínanú funkciu. V prvej lekcii sme importovali pandas pod skratkou pd, náš kód teda bude vyzerať takto:
import pandas as pd import matplotlib.pyplot as plt import numpy as np data = [1,2,3,4,5] df = pd.DataFrame(data) print(df)
Keď stlačením Shift + Enter spustíme kód, zobrazí sa nám tabuľka:
Táto tabuľka je však pomerne neprehľadná. Môžeme ju sprehľadniť napríklad tým, že pomenujeme stĺpce. V našom prípade teda jeden stĺpec. Rovnako ju môžeme upraviť, aby číslovanie začínalo od jednotky, nie od nuly. Kód potom bude vyzerať takto:
import pandas as pd import matplotlib.pyplot as plt import numpy as np data = [1,2,3,4,5] columns = ["Numbers"] df = pd.DataFrame(data, columns = columns) df.index += 1 print(df)
Poďme si teraz prebrať zmeny, ktoré sme v kóde urobili. Vytvorili sme
zoznam columns
, do ktorého sme vložili všetky nadpisy. Ten sme
následne vyvolali cez funkciu DataFrame()
. Ďalej sme na
predposlednom riadku upravili index
zvýšením každého čísla o
1. Rovnaký efekt by mal aj zápis df.index = df.index + 1
:
Nákupný zoznam
Už vieme vytvoriť dataframe o jednom stĺpci. Skúsime si teda vytvoriť
dataframe zložitejšie. Predveďme si to na príklade nákupného zoznamu. Pre
nákupný zoznam budeme potrebovať typ položky a množstvo. To docielime tak,
že si vytvoríme premennú, do ktorej vložíme niekoľko sérií hranatých
zátvoriek. V každej hranatej zátvorke bude typ potraviny a jej množstvo vo
formáte typ potraviny a množstvo ["Type", Amount]
. Zatiaľ čo
potravina je dátového typu string
(preto je v úvodzovkách),
množstvo je integer
(preto bez úvodzoviek). Vytvoríme teda
nákupný zoznam, ktorý bude vyzerať takto:
shopping_list = [["roll", 10], ["apple", 8], ["butter", 1], ["ham", 200], ["milk", 1], ["egg", 15] ]
Aby sme zo svojho zoznamu urobili dataframe, využijeme opäť funkciu
DataFrame()
. Naše dáta sa teraz skrývajú pod premenou
shopping_list
. Aby sme si dataframe urobili ešte prehľadnejšie,
pomenujeme stĺpce. Výsledný kód bude vyzerať takto:
shopping_list = [["roll", 10], ["apple", 8], ["butter", 1], ["ham", 200], ["milk", 1], ["egg", 15] ] df = pd.DataFrame(shopping_list, columns =['Type', 'Amount']) df.index += 1 print(df)
Keď náš kód spustíme, zobrazí sa nám prehľadná tabuľka nákupného zoznamu:
Hoci máme teraz peknú tabuľku a sami sa v nej určite vyznáme, niekto
ďalší by s nákupom mohol mať problém, pretože by nevedel, čo znamená
uvedené číslo pri každej potravine. Pridajme teda pre istotu ďalší
stĺpec, ktorý bude obsahovať informáciu, o počet čoho sa jedná. To
docielime v dvoch krokoch. Najprv do každej zátvorky pridáme informáciu,
čoho sa ono množstvo týka. Každá zátvorka teraz bude mať formát typ
potraviny, množstvo a čoho ["Type", Amount, ""]
. Ďalej musíme
pridať tretí názov stĺpca. Pokiaľ by nezodpovedal počet stĺpcov a počet
názvov stĺpcov, dostaneme chybovú hlášku. A je jedno, či ho pomenujeme
napríklad Unit
alebo ho necháme prázdny:
shopping_list = [["roll", 10, "pieces"], ["apple", 8, "pieces"], ["butter", 1, "pieces"], ["ham", 200, "grams"], ["milk", 1, "liters"], ["egg", 15, "pieces"] ] df = pd.DataFrame(shopping_list, columns =["Type", "Amount", ""]) df.index += 1 print(df)
Výsledný nákupný zoznam bude teda vyzerať takto:
Cvičebný plán
Dataframe si môžeme vytvoriť z rôznych dátových typov. Teraz si na príklade cvičebného plánu ukážeme, ako vytvoriť dataframe zo slovníka. V slovníku priraďujeme kľúču nejakú hodnotu. My použijeme ako kľúč typ cviku a ako hodnotu počet, ktorý sme vykonali za nami zvolené obdobie. Slovník s našimi záznamami z cvičenia môže vyzerať napríklad takto:
exercise = {"push-up": 20, "squat": 10, "sit-up": 10, "leg raise": 10, "running (km)": 3, "cycling (km)": 15, "swimming (m)": 300 }
Keď z neho vyrobíme dataframe rovnakým spôsobom, ako predtým zo zoznamu, bude náš kód vyzerať takto:
exercise = {"push-up": 20, "squat": 10, "sit-up": 10, "leg raise": 10, "running (km)": 3, "cycling (km)": 15, "swimming (m)": 300 } df = pd.DataFrame([exercise]) df.index += 1 print(df)
Výsledok bude vyzerať takto:
Pokiaľ existuje práve jedna hodnota ku každému kľúču, umiestnime
premennú exercise
do hranatej zátvorky, čím z nej efektívne
urobíme zoznam. Pokiaľ nás však neopadla chuť cvičiť a chceme
priraďovať viac hodnôt ku každému cviku, musíme premennú
exercise
zo zátvorky vybrať a naopak umiestniť do hranatých
zátvoriek všetky hodnoty k našim kľúčom. Povedzme, že sa nám podarilo
cvičiť už štyri týždne v kuse. Preto umiestnime do každej zátvorky
štyri hodnoty, hoci občas nulové:
exercise = {"push-up": [20, 20, 50, 10], "squat": [10, 0, 15, 0], "sit-up": [10, 20, 25, 30], "leg raise": [10, 20, 10, 0], "running (km)": [3, 5, 0, 4], "cycling (km)": [15, 10, 25, 0], "swimming (m)": [300, 0, 0, 800], } df = pd.DataFrame(exercise) df.index += 1 print(df)
Výsledný dataframe potom vyzerá takto:
A sme na konci lekcie. Naučili sme sa, že práca s funkciou Pandas
DataFrame()
nie je nijako zvlášť komplikovaná a pritom s ňou
už teraz dokážeme vytvárať prehľadné tabuľky.
V budúcej lekcii, Pandas – Základné vlastnosti DataFrames, sa dozvieme, aké sú základné vlastnosti DataFramov knižnice Pandas a ukážeme si základnú prácu so stĺpcami a riadkami.