You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/sk/2-Regression/2-Data/solution/R/lesson_2-R.ipynb

685 lines
24 KiB

{
"nbformat": 4,
"nbformat_minor": 2,
"metadata": {
"colab": {
"name": "lesson_2-R.ipynb",
"provenance": [],
"collapsed_sections": [],
"toc_visible": true
},
"kernelspec": {
"name": "ir",
"display_name": "R"
},
"language_info": {
"name": "R"
},
"coopTranslator": {
"original_hash": "f3c335f9940cfd76528b3ef918b9b342",
"translation_date": "2025-09-06T13:47:59+00:00",
"source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb",
"language_code": "sk"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [
"# Vytvorenie regresného modelu: príprava a vizualizácia dát\n",
"\n",
"## **Lineárna regresia pre tekvice - Lekcia 2**\n",
"#### Úvod\n",
"\n",
"Teraz, keď máte pripravené nástroje na budovanie modelov strojového učenia pomocou Tidymodels a Tidyverse, ste pripravení začať klásť otázky o svojich dátach. Pri práci s dátami a aplikovaní riešení strojového učenia je veľmi dôležité vedieť, ako položiť správnu otázku, aby ste mohli plne využiť potenciál svojho datasetu.\n",
"\n",
"V tejto lekcii sa naučíte:\n",
"\n",
"- Ako pripraviť svoje dáta na budovanie modelov.\n",
"\n",
"- Ako používať `ggplot2` na vizualizáciu dát.\n",
"\n",
"Otázka, na ktorú potrebujete odpoveď, určí, aký typ algoritmov strojového učenia budete používať. Kvalita odpovede, ktorú dostanete, bude výrazne závisieť od povahy vašich dát.\n",
"\n",
"Pozrime sa na to prostredníctvom praktického cvičenia.\n",
"\n",
"\n",
"<p >\n",
" <img src=\"../../images/unruly_data.jpg\"\n",
" width=\"700\"/>\n",
" <figcaption>Ilustrácia od @allison_horst</figcaption>\n",
"\n",
"\n",
"<!--![Ilustrácia od \\@allison_horst](../../../../../../2-Regression/2-Data/images/unruly_data.jpg)<br>Ilustrácia od \\@allison_horst-->\n"
],
"metadata": {
"id": "Pg5aexcOPqAZ"
}
},
{
"cell_type": "markdown",
"source": [
"## 1. Importovanie údajov o tekviciach a privolanie Tidyverse\n",
"\n",
"Na spracovanie tejto lekcie budeme potrebovať nasledujúce balíky:\n",
"\n",
"- `tidyverse`: [tidyverse](https://www.tidyverse.org/) je [kolekcia balíkov pre R](https://www.tidyverse.org/packages), ktorá je navrhnutá tak, aby robila dátovú vedu rýchlejšou, jednoduchšou a zábavnejšou!\n",
"\n",
"Môžete ich nainštalovať pomocou:\n",
"\n",
"`install.packages(c(\"tidyverse\"))`\n",
"\n",
"Nasledujúci skript skontroluje, či máte nainštalované balíky potrebné na dokončenie tohto modulu, a v prípade, že niektoré chýbajú, ich pre vás nainštaluje.\n"
],
"metadata": {
"id": "dc5WhyVdXAjR"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n",
"pacman::p_load(tidyverse)"
],
"outputs": [],
"metadata": {
"id": "GqPYUZgfXOBt"
}
},
{
"cell_type": "markdown",
"source": [
"Teraz si spustime niektoré balíčky a načítajme [dáta](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) poskytnuté pre túto lekciu!\n"
],
"metadata": {
"id": "kvjDTPDSXRr2"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Load the core Tidyverse packages\n",
"library(tidyverse)\n",
"\n",
"# Import the pumpkins data\n",
"pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n",
"\n",
"\n",
"# Get a glimpse and dimensions of the data\n",
"glimpse(pumpkins)\n",
"\n",
"\n",
"# Print the first 50 rows of the data set\n",
"pumpkins %>% \n",
" slice_head(n =50)"
],
"outputs": [],
"metadata": {
"id": "VMri-t2zXqgD"
}
},
{
"cell_type": "markdown",
"source": [
"Rýchly pohľad pomocou `glimpse()` okamžite ukáže, že existujú prázdne hodnoty a mix reťazcov (`chr`) a číselných údajov (`dbl`). `Date` je typu znakový reťazec a je tu aj zvláštny stĺpec s názvom `Package`, kde sú údaje zmiešané medzi `sacks`, `bins` a inými hodnotami. Údaje sú, úprimne povedané, trochu chaotické 😤.\n",
"\n",
"V skutočnosti nie je veľmi bežné dostať dataset, ktorý je úplne pripravený na použitie na vytvorenie ML modelu hneď po rozbalení. Ale nebojte sa, v tejto lekcii sa naučíte, ako pripraviť surový dataset pomocou štandardných knižníc v R 🧑‍🔧. Taktiež sa naučíte rôzne techniky na vizualizáciu údajov. 📈📊\n",
"<br>\n",
"\n",
"> Pripomenutie: Operátor pipe (`%>%`) vykonáva operácie v logickej postupnosti tým, že posúva objekt ďalej do funkcie alebo výrazu. Môžete si operátor pipe predstaviť ako výraz „a potom“ vo vašom kóde.\n"
],
"metadata": {
"id": "REWcIv9yX29v"
}
},
{
"cell_type": "markdown",
"source": [
"## 2. Kontrola chýbajúcich údajov\n",
"\n",
"Jedným z najbežnejších problémov, s ktorými sa dátoví analytici musia vysporiadať, sú neúplné alebo chýbajúce údaje. R reprezentuje chýbajúce alebo neznáme hodnoty pomocou špeciálnej hodnoty: `NA` (Not Available).\n",
"\n",
"Ako teda zistíme, že dátový rámec obsahuje chýbajúce hodnoty?\n",
"<br>\n",
"- Jedným z priamych spôsobov je použitie základnej funkcie R `anyNA`, ktorá vracia logické objekty `TRUE` alebo `FALSE`.\n"
],
"metadata": {
"id": "Zxfb3AM5YbUe"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"pumpkins %>% \n",
" anyNA()"
],
"outputs": [],
"metadata": {
"id": "G--DQutAYltj"
}
},
{
"cell_type": "markdown",
"source": [
"Zdá sa, že niektoré údaje chýbajú! To je dobré miesto, kde začať.\n",
"\n",
"- Ďalším spôsobom by bolo použiť funkciu `is.na()`, ktorá označuje, ktoré jednotlivé prvky stĺpcov chýbajú pomocou logickej hodnoty `TRUE`.\n"
],
"metadata": {
"id": "mU-7-SB6YokF"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"pumpkins %>% \n",
" is.na() %>% \n",
" head(n = 7)"
],
"outputs": [],
"metadata": {
"id": "W-DxDOR4YxSW"
}
},
{
"cell_type": "markdown",
"source": [
"Dobre, práca je hotová, ale s takým veľkým dátovým rámcom by bolo neefektívne a prakticky nemožné kontrolovať všetky riadky a stĺpce jednotlivo😴.\n",
"\n",
"- Intuitívnejší spôsob by bol vypočítať súčet chýbajúcich hodnôt pre každý stĺpec:\n"
],
"metadata": {
"id": "xUWxipKYY0o7"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"pumpkins %>% \n",
" is.na() %>% \n",
" colSums()"
],
"outputs": [],
"metadata": {
"id": "ZRBWV6P9ZArL"
}
},
{
"cell_type": "markdown",
"source": [
"Oveľa lepšie! Chýbajú niektoré údaje, ale možno to nebude mať vplyv na danú úlohu. Uvidíme, aké ďalšie analýzy prinesú výsledky.\n",
"\n",
"> Okrem skvelých balíkov a funkcií má R veľmi dobrú dokumentáciu. Napríklad použite `help(colSums)` alebo `?colSums`, aby ste sa dozvedeli viac o funkcii.\n"
],
"metadata": {
"id": "9gv-crB6ZD1Y"
}
},
{
"cell_type": "markdown",
"source": [
"## 3. Dplyr: Gramatika manipulácie s dátami\n",
"\n",
"<p >\n",
" <img src=\"../../images/dplyr_wrangling.png\"\n",
" width=\"569\"/>\n",
" <figcaption>Ilustrácia od @allison_horst</figcaption>\n",
"\n",
"\n",
"<!--![Ilustrácia od \\@allison_horst](../../../../../../2-Regression/2-Data/images/dplyr_wrangling.png)<br/>Ilustrácia od \\@allison_horst-->\n"
],
"metadata": {
"id": "o4jLY5-VZO2C"
}
},
{
"cell_type": "markdown",
"source": [
"[`dplyr`](https://dplyr.tidyverse.org/), balík v Tidyverse, je gramatika manipulácie s dátami, ktorá poskytuje konzistentnú sadu slovies, ktoré vám pomôžu vyriešiť najbežnejšie výzvy pri manipulácii s dátami. V tejto sekcii preskúmame niektoré zo slovies dplyr!\n"
],
"metadata": {
"id": "i5o33MQBZWWw"
}
},
{
"cell_type": "markdown",
"source": [
"#### dplyr::select()\n",
"\n",
"`select()` je funkcia v balíku `dplyr`, ktorá vám pomáha vybrať stĺpce na ponechanie alebo vylúčenie.\n",
"\n",
"Aby ste uľahčili prácu s vaším dátovým rámcom, odstráňte niekoľko jeho stĺpcov pomocou `select()`, pričom ponechajte iba tie, ktoré potrebujete.\n",
"\n",
"Napríklad v tomto cvičení bude naša analýza zahŕňať stĺpce `Package`, `Low Price`, `High Price` a `Date`. Vyberme tieto stĺpce.\n"
],
"metadata": {
"id": "x3VGMAGBZiUr"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Select desired columns\n",
"pumpkins <- pumpkins %>% \n",
" select(Package, `Low Price`, `High Price`, Date)\n",
"\n",
"\n",
"# Print data set\n",
"pumpkins %>% \n",
" slice_head(n = 5)"
],
"outputs": [],
"metadata": {
"id": "F_FgxQnVZnM0"
}
},
{
"cell_type": "markdown",
"source": [
"#### dplyr::mutate()\n",
"\n",
"`mutate()` je funkcia v balíku `dplyr`, ktorá vám umožňuje vytvárať alebo upravovať stĺpce, pričom zachováva existujúce stĺpce.\n",
"\n",
"Všeobecná štruktúra funkcie mutate je:\n",
"\n",
"`data %>% mutate(new_column_name = what_it_contains)`\n",
"\n",
"Poďme si vyskúšať `mutate` na stĺpci `Date` vykonaním nasledujúcich operácií:\n",
"\n",
"1. Konvertovať dátumy (aktuálne typu character) na formát mesiaca (ide o americké dátumy, takže formát je `MM/DD/YYYY`).\n",
"\n",
"2. Extrahovať mesiac z dátumov do nového stĺpca.\n",
"\n",
"V R balík [lubridate](https://lubridate.tidyverse.org/) uľahčuje prácu s dátumovo-časovými údajmi. Takže použijeme `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` a pozrieme sa, ako dosiahnuť vyššie uvedené ciele. Stĺpec Date môžeme vynechať, pretože ho už nebudeme potrebovať v ďalších operáciách.\n"
],
"metadata": {
"id": "2KKo0Ed9Z1VB"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Load lubridate\n",
"library(lubridate)\n",
"\n",
"pumpkins <- pumpkins %>% \n",
" # Convert the Date column to a date object\n",
" mutate(Date = mdy(Date)) %>% \n",
" # Extract month from Date\n",
" mutate(Month = month(Date)) %>% \n",
" # Drop Date column\n",
" select(-Date)\n",
"\n",
"# View the first few rows\n",
"pumpkins %>% \n",
" slice_head(n = 7)"
],
"outputs": [],
"metadata": {
"id": "5joszIVSZ6xe"
}
},
{
"cell_type": "markdown",
"source": [
"Hurá! 🤩\n",
"\n",
"Ďalej vytvorme nový stĺpec `Price`, ktorý bude predstavovať priemernú cenu tekvice. Teraz vypočítajme priemer stĺpcov `Low Price` a `High Price`, aby sme naplnili nový stĺpec Price. \n",
"<br>\n"
],
"metadata": {
"id": "nIgLjNMCZ-6Y"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Create a new column Price\n",
"pumpkins <- pumpkins %>% \n",
" mutate(Price = (`Low Price` + `High Price`)/2)\n",
"\n",
"# View the first few rows of the data\n",
"pumpkins %>% \n",
" slice_head(n = 5)"
],
"outputs": [],
"metadata": {
"id": "Zo0BsqqtaJw2"
}
},
{
"cell_type": "markdown",
"source": [
"Yeees!💪\n",
"\n",
"„Ale počkaj!“, poviete si po rýchlom prehliadnutí celého dátového súboru pomocou `View(pumpkins)`, „Tu je niečo zvláštne!“🤔\n",
"\n",
"Ak sa pozriete na stĺpec `Package`, tekvice sa predávajú v rôznych konfiguráciách. Niektoré sa predávajú v mierach `1 1/9 bushel`, niektoré v mierach `1/2 bushel`, niektoré na kusy, niektoré na váhu a niektoré vo veľkých škatuliach s rôznymi šírkami.\n",
"\n",
"Poďme si to overiť:\n"
],
"metadata": {
"id": "p77WZr-9aQAR"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Verify the distinct observations in Package column\n",
"pumpkins %>% \n",
" distinct(Package)"
],
"outputs": [],
"metadata": {
"id": "XISGfh0IaUy6"
}
},
{
"cell_type": "markdown",
"source": [
"Úžasné!👏\n",
"\n",
"Zdá sa, že tekvice je veľmi ťažké vážiť konzistentne, takže ich vyfiltrujme tak, že vyberieme iba tekvice, ktoré obsahujú reťazec *bushel* v stĺpci `Package`, a uložme to do nového dátového rámca `new_pumpkins`.\n"
],
"metadata": {
"id": "7sMjiVujaZxY"
}
},
{
"cell_type": "markdown",
"source": [
"#### dplyr::filter() a stringr::str_detect()\n",
"\n",
"[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): vytvára podmnožinu údajov obsahujúcu iba **riadky**, ktoré spĺňajú vaše podmienky, v tomto prípade tekvice so slovom *bushel* v stĺpci `Package`.\n",
"\n",
"[stringr::str_detect()](https://stringr.tidyverse.org/reference/str_detect.html): zisťuje prítomnosť alebo neprítomnosť vzoru v reťazci.\n",
"\n",
"Balík [`stringr`](https://github.com/tidyverse/stringr) poskytuje jednoduché funkcie pre bežné operácie s reťazcami.\n"
],
"metadata": {
"id": "L8Qfcs92ageF"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Retain only pumpkins with \"bushel\"\n",
"new_pumpkins <- pumpkins %>% \n",
" filter(str_detect(Package, \"bushel\"))\n",
"\n",
"# Get the dimensions of the new data\n",
"dim(new_pumpkins)\n",
"\n",
"# View a few rows of the new data\n",
"new_pumpkins %>% \n",
" slice_head(n = 5)"
],
"outputs": [],
"metadata": {
"id": "hy_SGYREampd"
}
},
{
"cell_type": "markdown",
"source": [
"Môžete vidieť, že sme zúžili výber na približne 415 riadkov údajov obsahujúcich tekvice na veľké množstvo.🤩 \n",
"<br>\n"
],
"metadata": {
"id": "VrDwF031avlR"
}
},
{
"cell_type": "markdown",
"source": [
"#### dplyr::case_when()\n",
"\n",
"**Ale počkajte! Ešte je tu jedna vec, ktorú treba urobiť**\n",
"\n",
"Všimli ste si, že množstvo v bušloch sa líši v jednotlivých riadkoch? Musíte normalizovať ceny tak, aby ste zobrazili cenu za bušel, nie za 1 1/9 alebo 1/2 bušela. Je čas na trochu matematiky, aby ste to štandardizovali.\n",
"\n",
"Použijeme funkciu [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) na *mutáciu* stĺpca Price v závislosti od určitých podmienok. `case_when` umožňuje vektorovo spracovať viacero `if_else()` vyjadrení.\n"
],
"metadata": {
"id": "mLpw2jH4a0tx"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Convert the price if the Package contains fractional bushel values\n",
"new_pumpkins <- new_pumpkins %>% \n",
" mutate(Price = case_when(\n",
" str_detect(Package, \"1 1/9\") ~ Price/(1 + 1/9),\n",
" str_detect(Package, \"1/2\") ~ Price/(1/2),\n",
" TRUE ~ Price))\n",
"\n",
"# View the first few rows of the data\n",
"new_pumpkins %>% \n",
" slice_head(n = 30)"
],
"outputs": [],
"metadata": {
"id": "P68kLVQmbM6I"
}
},
{
"cell_type": "markdown",
"source": [
"Teraz môžeme analyzovať cenu za jednotku na základe ich merania v bušloch. Celá táto štúdia o bušloch tekvíc však ukazuje, aké veľmi `dôležité` je `pochopiť povahu vašich údajov`!\n",
"\n",
"> ✅ Podľa [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) hmotnosť bušľa závisí od typu produktu, pretože ide o objemové meranie. \"Bušel paradajok, napríklad, by mal vážiť 56 libier... Listy a zelené rastliny zaberajú viac miesta s menšou hmotnosťou, takže bušel špenátu váži iba 20 libier.\" Je to všetko dosť komplikované! Nezaoberajme sa konverziou bušlov na libry, namiesto toho stanovme cenu za bušel. Celá táto štúdia o bušloch tekvíc však ukazuje, aké veľmi dôležité je pochopiť povahu vašich údajov!\n",
">\n",
"> ✅ Všimli ste si, že tekvice predávané na pol bušľa sú veľmi drahé? Dokážete zistiť prečo? Tip: malé tekvice sú oveľa drahšie ako veľké, pravdepodobne preto, že ich je oveľa viac na bušel, vzhľadom na nevyužitý priestor, ktorý zaberá jedna veľká dutá tekvica na koláč.\n"
],
"metadata": {
"id": "pS2GNPagbSdb"
}
},
{
"cell_type": "markdown",
"source": [
"DÔLEŽITÉ PRAVIDLÁ: \n",
"1. NEPRIDÁVAJTE '''markdown alebo akékoľvek iné značky okolo prekladu \n",
"2. Uistite sa, že preklad neznie príliš doslovne \n",
"3. Preložte aj komentáre \n",
"4. Tento súbor je napísaný vo formáte Markdown - nezaobchádzajte s ním ako s XML alebo HTML \n",
"5. Neprekladajte: \n",
" - [!NOTE], [!WARNING], [!TIP], [!IMPORTANT], [!CAUTION] \n",
" - Názvy premenných, funkcií, tried \n",
" - Zástupné symboly ako @@INLINE_CODE_x@@ alebo @@CODE_BLOCK_x@@ \n",
" - URL alebo cesty \n",
"6. Zachovajte všetko pôvodné formátovanie Markdownu \n",
"7. Vráťte IBA preložený obsah bez akýchkoľvek dodatočných značiek alebo formátovania \n",
"\n",
"A teraz nakoniec, len pre dobrodružstvo 💁‍♀️, presuňme stĺpec Month na prvú pozíciu, teda `pred` stĺpec `Package`. \n",
"\n",
"Na zmenu pozícií stĺpcov sa používa `dplyr::relocate()`. \n"
],
"metadata": {
"id": "qql1SowfbdnP"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Create a new data frame new_pumpkins\n",
"new_pumpkins <- new_pumpkins %>% \n",
" relocate(Month, .before = Package)\n",
"\n",
"new_pumpkins %>% \n",
" slice_head(n = 7)"
],
"outputs": [],
"metadata": {
"id": "JJ1x6kw8bixF"
}
},
{
"cell_type": "markdown",
"source": [
"Skvelá práca!👌 Teraz máte čistý, uprataný dataset, na ktorom môžete postaviť svoj nový regresný model! \n",
"<br>\n"
],
"metadata": {
"id": "y8TJ0Za_bn5Y"
}
},
{
"cell_type": "markdown",
"source": [
"## 4. Vizualizácia dát s ggplot2\n",
"\n",
"<p >\n",
" <img src=\"../../images/data-visualization.png\"\n",
" width=\"600\"/>\n",
" <figcaption>Infografika od Dasani Madipalli</figcaption>\n",
"\n",
"\n",
"<!--![Infografika od Dasani Madipalli](../../../../../../2-Regression/2-Data/images/data-visualization.png){width=\"600\"}-->\n",
"\n",
"Existuje *múdre* príslovie, ktoré hovorí:\n",
"\n",
"> \"Jednoduchý graf priniesol analytikovi dát viac informácií než akékoľvek iné zariadenie.\" --- John Tukey\n",
"\n",
"Úlohou dátového vedca je ukázať kvalitu a charakter dát, s ktorými pracuje. Na tento účel často vytvára zaujímavé vizualizácie, ako sú grafy, diagramy a tabuľky, ktoré zobrazujú rôzne aspekty dát. Týmto spôsobom dokáže vizuálne ukázať vzťahy a medzery, ktoré by inak bolo ťažké odhaliť.\n",
"\n",
"Vizualizácie môžu tiež pomôcť určiť, ktorá technika strojového učenia je pre dané dáta najvhodnejšia. Napríklad bodový graf, ktorý sa zdá sledovať líniu, naznačuje, že dáta sú vhodným kandidátom na cvičenie s lineárnou regresiou.\n",
"\n",
"R ponúka niekoľko systémov na tvorbu grafov, ale [`ggplot2`](https://ggplot2.tidyverse.org/index.html) je jedným z najelegantnejších a najuniverzálnejších. `ggplot2` vám umožňuje vytvárať grafy **kombinovaním nezávislých komponentov**.\n",
"\n",
"Začnime jednoduchým bodovým grafom pre stĺpce Price a Month.\n",
"\n",
"V tomto prípade začneme s [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html), poskytneme dataset a estetické mapovanie (pomocou [`aes()`](https://ggplot2.tidyverse.org/reference/aes.html)), a potom pridáme vrstvy (ako [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html)) pre bodové grafy.\n"
],
"metadata": {
"id": "mYSH6-EtbvNa"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Set a theme for the plots\n",
"theme_set(theme_light())\n",
"\n",
"# Create a scatter plot\n",
"p <- ggplot(data = new_pumpkins, aes(x = Price, y = Month))\n",
"p + geom_point()"
],
"outputs": [],
"metadata": {
"id": "g2YjnGeOcLo4"
}
},
{
"cell_type": "markdown",
"source": [
"Je to užitočný graf 🤷? Prekvapilo vás na ňom niečo?\n",
"\n",
"Nie je obzvlášť užitočný, pretože iba zobrazuje vaše údaje ako rozptyl bodov v danom mesiaci. \n",
"<br>\n"
],
"metadata": {
"id": "Ml7SDCLQcPvE"
}
},
{
"cell_type": "markdown",
"source": [
"### **Ako to urobiť užitočným?**\n",
"\n",
"Aby grafy zobrazovali užitočné údaje, zvyčajne je potrebné údaje nejako zoskupiť. Napríklad v našom prípade by zistenie priemernej ceny tekvíc za každý mesiac poskytlo viac informácií o základných vzoroch v našich údajoch. To nás privádza k ďalšiemu preletu nad **dplyr**:\n",
"\n",
"#### `dplyr::group_by() %>% summarize()`\n",
"\n",
"Zoskupenú agregáciu v R je možné jednoducho vypočítať pomocou\n",
"\n",
"`dplyr::group_by() %>% summarize()`\n",
"\n",
"- `dplyr::group_by()` mení jednotku analýzy z celého datasetu na jednotlivé skupiny, napríklad podľa mesiacov.\n",
"\n",
"- `dplyr::summarize()` vytvára nový dátový rámec s jedným stĺpcom pre každú zoskupovaciu premennú a jedným stĺpcom pre každú štatistiku, ktorú ste špecifikovali.\n",
"\n",
"Napríklad môžeme použiť `dplyr::group_by() %>% summarize()` na zoskupenie tekvíc do skupín na základe stĺpca **Month** a potom vypočítať **priemernú cenu** za každý mesiac.\n"
],
"metadata": {
"id": "jMakvJZIcVkh"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Find the average price of pumpkins per month\r\n",
"new_pumpkins %>%\r\n",
" group_by(Month) %>% \r\n",
" summarise(mean_price = mean(Price))"
],
"outputs": [],
"metadata": {
"id": "6kVSUa2Bcilf"
}
},
{
"cell_type": "markdown",
"source": [
"Stručne!✨\n",
"\n",
"Kategorické prvky, ako sú mesiace, sú lepšie znázornené pomocou stĺpcového grafu 📊. Vrstvy zodpovedné za stĺpcové grafy sú `geom_bar()` a `geom_col()`. Viac informácií nájdete v `?geom_bar`.\n",
"\n",
"Poďme si jeden vytvoriť!\n"
],
"metadata": {
"id": "Kds48GUBcj3W"
}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"# Find the average price of pumpkins per month then plot a bar chart\r\n",
"new_pumpkins %>%\r\n",
" group_by(Month) %>% \r\n",
" summarise(mean_price = mean(Price)) %>% \r\n",
" ggplot(aes(x = Month, y = mean_price)) +\r\n",
" geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n",
" ylab(\"Pumpkin Price\")"
],
"outputs": [],
"metadata": {
"id": "VNbU1S3BcrxO"
}
},
{
"cell_type": "markdown",
"source": [
"🤩🤩 Toto je užitočnejšia vizualizácia dát! Zdá sa, že najvyššia cena za tekvice sa vyskytuje v septembri a októbri. Zodpovedá to vašim očakávaniam? Prečo áno alebo prečo nie?\n",
"\n",
"Gratulujeme k dokončeniu druhej lekcie 👏! Pripravili ste svoje dáta na vytváranie modelov a potom ste odhalili ďalšie poznatky pomocou vizualizácií!\n"
],
"metadata": {
"id": "zDm0VOzzcuzR"
}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Upozornenie**: \nTento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie odporúčame profesionálny ľudský preklad. Nezodpovedáme za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.\n"
]
}
]
}