Kódím.cz
2

Načtení dat

Pojďme načíst data do pandas a podívat se na ně

Odkud data bereme

Data se nejčastěji nachází v databázích nebo v souborech. V rámci tohoto kurzu budeme pracovat se soubory, proto si o nich řekneme něco víc. Budeme se zabývat textovými daty, protože ty jsou pro zpracování nejjednodušší.

V rámci kurzu budeme používat data o potravinách, která zveřejňuje americké ministerstvo zemědělství.

Zápisy textových dat

Podívejme se nyní na základní formáty, jak zapisovat data. Pro nás nejznámější formou je tabulka. Níže máme tabulku s příkladem několika potravin, které jsou v datové sadě k dispozici.

fdc_id data_type description food_category_id publication_date
2644829 sub_sample_food lentils, dry 16.0 2023-10-19
2347263 sub_sample_food heavy cream 1.0 2022-10-28
2261954 sub_sample_food Flour, potato 11.0 2022-04-28
321470 sub_sample_food Salt, Iodized 2.0 2019-04-01
322951 sub_sample_food Hot dogs beef 7.0 2019-04-01

Význam sloupců je následující:

  • fdc_id: Jedinečný identifikační kód potraviny.
  • data_type: Typ dat, který popisuje kategorii potraviny.
  • description: Popis potraviny. Obsahuje název potraviny a může zahrnovat další specifické informace, jako je forma potraviny (např. sušené, vařené atd.).
  • food_category_id: Identifikační číslo kategorie potravin, které pomáhá klasifikovat potravinu do určité skupiny nebo typu.
  • publication_date: Datum publikace nebo záznamu dat. Udává, kdy byly informace o potravině zaznamenány nebo aktualizovány.

S tabulkami pracujeme v software Microsoft Excel (soubory mají příponu .xlsx), případně v alternativách jako Google Spreadsheet, Libre Office Calc atd. Python umí pracovat přímo se soubory XLSX, slouží k tomu modul openpyxl (můžete ho stáhnout zde), případně s nimi lze pracovat i v pandas. Práce s nimi je ale poměrně komplexní, proto budeme používat soubory CSV.

CSV

Soubor CSV obsahuje data v textové podobě ve struktuře podobné tabulce. Jednotlivé buňky jsou odděleny středníky nebo čárkami. V rámci České republiky se častěji setkáváme se středníkem, protože čárky používáme pro zápis desetinných míst. Celosvětově je oblíbenější spíše čárka.

fdc_id,data_type,description,food_category_id,publication_date
2644829,sub_sample_food,"lentils, dry",16.0,2023-10-19
2347263,sub_sample_food,heavy cream,1.0,2022-10-28
2261954,sub_sample_food,"Flour, potato",11.0,2022-04-28
321470,sub_sample_food,"Salt, Iodized",2.0,2019-04-01
322951,sub_sample_food,Hot dogs beef,7.0,2019-04-01

JSON

Formát JSON ti bude povědomý, pokud už jsi v Pythonu pracoval(a) se slovníky (dict). Na první pohled vypadají téměř stejně. Python ti navíc jednoduše umožní data ve formátu JSON převést na slovníky a seznamy. K tomu slouží modul příhodně pojmenovaný json. S tímto formátem si ale hravě poradí i pandas.

[
    {
        "fdc_id": 2644829,
        "data_type": "sub_sample_food",
        "description": "lentils, dry",
        "food_category_id": 16.0,
        "publication_date": "2023-10-19"
    },
    {
        "fdc_id": 2347263,
        "data_type": "sub_sample_food",
        "description": "heavy cream",
        "food_category_id": 1.0,
        "publication_date": "2022-10-28"
    },
    {
        "fdc_id": 2261954,
        "data_type": "sub_sample_food",
        "description": "Flour, potato",
        "food_category_id": 11.0,
        "publication_date": "2022-04-28"
    },
    {
        "fdc_id": 321470,
        "data_type": "sub_sample_food",
        "description": "Salt, Iodized",
        "food_category_id": 2.0,
        "publication_date": "2019-04-01"
    },
    {
        "fdc_id": 322951,
        "data_type": "sub_sample_food",
        "description": "Hot dogs beef",
        "food_category_id": 7.0,
        "publication_date": "2019-04-01"
    }
]

XML

Dalším používaným formátem je XML. XML je velmi podobné HTML, tedy jazyku, kterým určujeme obsah webové stránky.

<?xml version='1.0' encoding='utf-8'?>
<data>
  <row fdc_id="2644829" data_type="sub_sample_food" food_category_id="16.0"
    publication_date="2023-10-19">
    <description>lentils, dry</description>
  </row>
  <row fdc_id="2347263" data_type="sub_sample_food" food_category_id="1.0"
    publication_date="2022-10-28">
    <description>heavy cream</description>
  </row>
  <row fdc_id="2261954" data_type="sub_sample_food" food_category_id="11.0"
    publication_date="2022-04-28">
    <description>Flour, potato</description>
  </row>
  <row fdc_id="321470" data_type="sub_sample_food" food_category_id="2.0"
    publication_date="2019-04-01">
    <description>Salt, Iodized</description>
  </row>
  <row fdc_id="322951" data_type="sub_sample_food" food_category_id="7.0"
    publication_date="2019-04-01">
    <description>Hot dogs beef</description>
  </row>
</data>

XML (a HTML) je založeno na párových značkách (tag). V naší ukázce máme například párovou značku data, v níž leží veškerá data. Dále máme značku row, která symbolizuje řádek tabulky. Každá dvojice se skládá ze zahajovací a ukončovací značky. Ukončovací značku poznáme podle symbolu lomítka (/).

Každá značka může mít atributy (attribute), v našem případě máme atributy fdc_id, data_type, food_category_id a publication_date. Vždy píšeme název atributu, symbol = a hodnotu atributu v uvozovkách.

Tag může mít i hodnotu, kterou píšeme mezi zahajovací a ukončovací značku.

Protože data zapisujeme jako hodnoty a atributy, můžeme jednu tabulku zapsat více způsoby.

U obou formátů musíme dodržovat základní pravidla, jinak bude soubor pro počítač nečitelný.

YAML

Nejnovějším z formátů je YAML (YAML Ain't Markup Language), který vznikl v roce 2011. Byl vyvinut s ohledem pro snadnou čtenost člověkem.

- fdc_id: 2644829
  data_type: sub_sample_food
  description: "lentils, dry"
  food_category_id: 16.0
  publication_date: 2023-10-19
- fdc_id: 2347263
  data_type: sub_sample_food
  description: heavy cream
  food_category_id: 1.0
  publication_date: 2022-10-28
- fdc_id: 2261954
  data_type: sub_sample_food
  description: "Flour, potato"
  food_category_id: 11.0
  publication_date: 2022-04-28
- fdc_id: 321470
  data_type: sub_sample_food
  description: "Salt, Iodized"
  food_category_id: 2.0
  publication_date: 2019-04-01
- fdc_id: 322951
  data_type: sub_sample_food
  description: Hot dogs beef
  food_category_id: 7.0
  publication_date: 2019-04-01

Používá se především pro zapisování konfigurace programů.