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 apod. 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 první lekci 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], ["mleko", 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.