Lekce 2 - Pandas - Tvorba vlastního datasetu
V předchozí lekci, Pandas - Představení knihovny, jsme se dozvěděli, jak naistalovat knihovnu Pandas a k čemu ji můžeme využít.
V tomto tutoriálu knihovny Pandas v Pythonu se zaměříme
na to, jak vytvořit vlastní dataset. Nejprve si vysvětlíme
funkci DataFrame() a pak si ji vyzkoušíme na reálných
příkladech.
Tvorba datasetu v Pandas
Začněme tím, že si náš otevřený projekt v Jupyter Notebooku
pojmenujeme. Klikneme na název. Otevře se nám okno, kde si svůj projekt
pojmenujeme například Prvni_dataset.ipynb. Projekt se nám
automaticky ukládá do složky, ze které jsme Jupyter Notebook
spouštěli.
Pandas DataFrame()
Pro práci s datasetem využijeme funkce DataFrame(). Funkce
vypadá takto:
pandas.DataFrame(data, index, columns)
V parametru data je sada informací, ze které budeme čerpat do
našeho dataframu. Data mohou být v podobě listu, slovníku a podobně
Parametr index slouží k očíslování našich položek. Může
zůstat nevyplněn a v takovém případě bude náš seznam začínat od nuly.
A konečně parametr columns slouží k pojmenování sloupců.
Opět platí, že pokud nebude vyplněn, budou sloupce pojmenovány číselně
nulou počínaje.
Začneme tím, že vytvoříme jednoduchý dataframe. Nejprve vytvoříme
proměnnou data, do které vložíme čísla od jedničky do
pětky. Zapsaná proměnná bude tedy takto:
data = [1,2,3,4,5]
Nyní doplníme náš kód o výše zmíněnou funkci. V lekci Pandas
- Představení knihovny jsme importovali pandas pod zkratkou
pd, náš kód tedy bude vypadat 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)
Když stisknutím Shift + Enter spustíme kód, zobrazí se nám tabulka:

Tato tabulka je však poměrně nepřehledná. Můžeme ji zpřehlednit například tím, že pojmenujeme sloupce. V našem případě tedy jeden sloupec. Rovněž ji můžeme upravit, aby číslování začínalo od jedničky, nikoliv od nuly. Kód pak bude vypadat takto:
import pandas as pd import matplotlib.pyplot as plt import numpy as np data = [1,2,3,4,5] columns = ["Cisla"] df = pd.DataFrame(data, columns = columns) df.index += 1 print(df)
Pojďme si nyní probrat změny, které jsme v kódu udělali. Vytvořili
jsme seznam columns, do kterého jsme vložili všechny nadpisy.
Ten jsme následně vyvolali přes funkci DataFrame(). Dále jsme
na předposledním řádku upravili index zvýšením každého
čísla o 1. Stejný efekt by měl i zápis
df.index = df.index + 1:

Nákupní seznam
Už umíme vytvořit dataframe o jednom sloupci. Zkusíme si tedy vytvořit
dataframe složitější. Předveďme si to na příkladu nákupního seznamu.
Pro nákupní seznam budeme potřebovat typ položky a
množství. Toho docílíme tak, že si vytvoříme proměnnou,
do které vložíme několik sérií hranatých závorek. V každé hranaté
závorce bude typ potraviny a její množství ve formátu
["potravina", množství]. Zatímco potravina je
datového typu string (proto je v uvozovkách), množství je
integer (proto bez uvozovek). Vytvoříme tedy nákupní seznam,
který bude vypadat takto:
nakup = [["rohlik", 10], ["jablka", 8], ["maslo", 1], ["sunka", 200], ["mleko", 1], ["vejce", 15] ]
Abychom ze svého seznamu udělali dataframe, využijeme opět funkci
DataFrame(). Naše data se nyní skrývají pod proměnou
nakup. Abychom si dataframe udělali ještě přehlednější,
pojmenujeme sloupce. Výsledný kód bude vypadat takto:
nakup = [["rohlik", 10], ["jablka", 8], ["maslo", 1], ["sunka", 200], ["mléko", 1], ["vejce", 15] ] df = pd.DataFrame(nakup, columns =['Typ', 'Mnozstvi']) df.index += 1 print(df)
Když náš kód spustíme, zobrazí se nám přehledná tabulka nákupního seznamu:

Ačkoliv máme nyní pěknou tabulku a sami se v ní jistě vyznáme, někdo
další by s nákupem mohl mít problém, protože by nevěděl, co znamená
uvedené číslo u každé potraviny. Přidejme tedy pro jistotu další
sloupec, který bude obsahovat informaci, o počet čeho se jedná. Toho
docílíme ve dvou krocích. Nejprve do každé závorky přidáme informaci,
čeho se ono množství týká. Každá závorka teď bude mít formát
["potravina", množství, "čeho"]. Dále
musíme přidat třetí název sloupce. Pokud by neodpovídal počet sloupců a
počet názvů sloupců, dostaneme chybovou hlášku. A je jedno, zda jej
pojmenujeme třeba Jednotka nebo jej necháme prázdný:
nakup = [["rohlik", 10, "kusu"], ["jablka", 8, "kusu"], ["maslo", 1, "kusu"], ["sunka", 200, "gramu"], ["mleko", 1, "litru"], ["vejce", 15, "kusu"] ] df = pd.DataFrame(nakup, columns =["Typ", "Mnozstvi", ""]) df.index += 1 print(df)
Výsledný nákupní seznam bude tedy vypadat takto:

Cvičební plán
Dataframe si můžeme vytvořit z různých datových typů. Nyní si na příkladu cvičebního plánu ukážeme, jak vytvořit dataframe ze slovníku. Ve slovníku přiřazujeme klíči nějakou hodnotu. My použijeme jako klíč typ cviku a jako hodnotu počet, který jsme vykonali za námi zvolené období. Slovník s našimi záznamy ze cvičení může vypadat například takto:
cvik = {"klik": 20,
"drep": 10,
"sed-leh": 10,
"sklapovacka": 10,
"beh (km)": 3,
"jizda na kole (km)": 15,
"plavani (m)": 300
}
Když z něj vyrobíme dataframe stejným způsobem, jako dříve ze seznamu, bude náš kód vypadat takto:
cvik = {"klik": 20,
"drep": 10,
"sed-leh": 10,
"sklapovacka": 10,
"beh (km)": 3,
"jizda na kole (km)": 15,
"plavani (m)": 300
}
df = pd.DataFrame([cvik])
df.index += 1
print(df)
Výsledek bude vypadat takto:

Pokud existuje právě jedna hodnota ke každému klíči,
umístíme proměnnou cvik do hranaté závorky, čímž z ní
efektivně uděláme seznam. Pokud nás však neopadla chuť cvičit a chceme
přiřazovat více hodnot ke každému cviku, musíme
proměnnou cvik ze závorky vyjmout a naopak umístit do hranatých
závorek všechny hodnoty k našim klíčům. Řekněme, že se nám podařilo
cvičit už čtyři týdny v kuse. Proto umístíme do každé závorky čtyři
hodnoty, byť občas nulové:
cvik = {"klik": [20, 20, 50, 10],
"drep": [10, 0, 15, 0],
"sed-leh": [10, 20, 25, 30],
"sklapovacka": [10, 20, 10, 0],
"beh (km)": [3, 5, 0, 4],
"jizda na kole (km)": [15, 10, 25, 0],
"plavani (m)": [300, 0, 0, 800],
}
df = pd.DataFrame(cvik)
df.index += 1
print(df)
Výsledný dataframe pak vypadá takto:

A jsme na konci lekce. Naučili jsme se, že práce s funkcí Pandas
DataFrame() není nijak zvlášť komplikovaná a přitom s ní už
teď dokážeme vytvářet přehledné tabulky.
V příští lekci, Pandas – Základní vlastnosti DataFrames, se dozvíme, jaké jsou základní vlastnosti DataFramů knihovny Pandas a ukážeme si základní práci se sloupci a řádky.

