NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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: Prvni_dataframe - Pandas - Vizualizace dat v Pythonu

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:

Prvni_tabulka - Pandas - Vizualizace dat v Pythonu

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:

Pandas - Vizualizace dat v Pythonu

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:

Pandas - Vizualizace dat v Pythonu

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:

Pandas - Vizualizace dat v Pythonu

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:

Pandas - Vizualizace dat v Pythonu

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.


 

Předchozí článek
Pandas - Představení knihovny
Všechny články v sekci
Pandas - Vizualizace dat v Pythonu
Přeskočit článek
(nedoporučujeme)
Pandas – Základní vlastnosti DataFrames
Článek pro vás napsal Michal Souček
Avatar
Uživatelské hodnocení:
40 hlasů
Michal
Aktivity