{ "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-08-29T19:07:35+00:00", "source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb", "language_code": "pa" } }, "cells": [ { "cell_type": "markdown", "source": [ "# ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ: ਡਾਟਾ ਤਿਆਰ ਕਰੋ ਅਤੇ ਵਿਜੁਅਲਾਈਜ਼ ਕਰੋ\n", "\n", "## **ਪੰਪਕਿਨ ਲਈ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ - ਪਾਠ 2**\n", "#### ਪਰਚੇ\n", "\n", "ਹੁਣ ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ Tidymodels ਅਤੇ Tidyverse ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਦੀ ਸ਼ੁਰੂਆਤ ਕਰਨ ਲਈ ਸਾਰੇ ਸੰਦ ਮੌਜੂਦ ਹਨ, ਤੁਸੀਂ ਆਪਣੇ ਡਾਟਾ ਨਾਲ ਸਵਾਲ ਪੁੱਛਣ ਲਈ ਤਿਆਰ ਹੋ। ਜਦੋਂ ਤੁਸੀਂ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹੋ ਅਤੇ ML ਹੱਲ ਲਾਗੂ ਕਰਦੇ ਹੋ, ਇਹ ਸਮਝਣਾ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਸਹੀ ਸਵਾਲ ਕਿਵੇਂ ਪੁੱਛਣਾ ਹੈ ਤਾਂ ਜੋ ਆਪਣੇ ਡਾਟਾਸੈੱਟ ਦੀ ਸੰਭਾਵਨਾ ਨੂੰ ਠੀਕ ਢੰਗ ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕੇ।\n", "\n", "ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ:\n", "\n", "- ਮਾਡਲ-ਬਿਲਡਿੰਗ ਲਈ ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਕਿਵੇਂ ਤਿਆਰ ਕਰਨਾ ਹੈ।\n", "\n", "- ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਲਈ `ggplot2` ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ।\n", "\n", "ਤੁਹਾਨੂੰ ਜਿਸ ਸਵਾਲ ਦਾ ਜਵਾਬ ਚਾਹੀਦਾ ਹੈ, ਉਹ ਇਹ ਨਿਰਧਾਰਤ ਕਰੇਗਾ ਕਿ ਤੁਸੀਂ ਕਿਹੜੇ ਕਿਸਮ ਦੇ ML ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ। ਅਤੇ ਤੁਹਾਨੂੰ ਵਾਪਸ ਮਿਲਣ ਵਾਲੇ ਜਵਾਬ ਦੀ ਗੁਣਵੱਤਾ ਬਹੁਤ ਹੱਦ ਤੱਕ ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਕੁਦਰਤ 'ਤੇ ਨਿਰਭਰ ਕਰੇਗੀ।\n", "\n", "ਆਓ ਇਸ ਨੂੰ ਇੱਕ ਪ੍ਰੈਕਟਿਕਲ ਅਭਿਆਸ ਦੁਆਰਾ ਸਮਝੀਏ।\n", "\n", "\n", "

\n", " \n", "

@allison_horst ਦੁਆਰਾ ਕਲਾ ਕਿਰਤੀ
\n", "\n", "\n", "\n" ], "metadata": { "id": "Pg5aexcOPqAZ" } }, { "cell_type": "markdown", "source": [ "## 1. ਕਦੂਆਂ ਦੇ ਡਾਟਾ ਨੂੰ ਇਮਪੋਰਟ ਕਰਨਾ ਅਤੇ Tidyverse ਨੂੰ ਸੱਦਣਾ\n", "\n", "ਅਸੀਂ ਇਸ ਪਾਠ ਨੂੰ ਵੱਖ-ਵੱਖ ਕਰਨ ਲਈ ਹੇਠਾਂ ਦਿੱਤੇ ਪੈਕੇਜਾਂ ਦੀ ਲੋੜ ਹੋਵੇਗੀ:\n", "\n", "- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ਇੱਕ [R ਪੈਕੇਜਾਂ ਦਾ ਸੰਗ੍ਰਹਿ](https://www.tidyverse.org/packages) ਹੈ ਜੋ ਡਾਟਾ ਸਾਇੰਸ ਨੂੰ ਤੇਜ਼, ਆਸਾਨ ਅਤੇ ਮਜ਼ੇਦਾਰ ਬਣਾਉਣ ਲਈ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ!\n", "\n", "ਤੁਸੀਂ ਇਹਨਾਂ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕੇ ਨਾਲ ਇੰਸਟਾਲ ਕਰ ਸਕਦੇ ਹੋ:\n", "\n", "`install.packages(c(\"tidyverse\"))`\n", "\n", "ਹੇਠਾਂ ਦਿੱਤਾ ਸਕ੍ਰਿਪਟ ਜਾਂਚਦਾ ਹੈ ਕਿ ਕੀ ਤੁਹਾਡੇ ਕੋਲ ਇਸ ਮੋਡਿਊਲ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਲੋੜੀਂਦੇ ਪੈਕੇਜ ਮੌਜੂਦ ਹਨ ਅਤੇ ਜੇ ਕੁਝ ਗੁੰਮ ਹਨ ਤਾਂ ਇਹਨਾਂ ਨੂੰ ਤੁਹਾਡੇ ਲਈ ਇੰਸਟਾਲ ਕਰਦਾ ਹੈ।\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": [ "ਹੁਣ, ਆਓ ਕੁਝ ਪੈਕੇਜ ਚਾਲੂ ਕਰੀਏ ਅਤੇ ਇਸ ਪਾਠ ਲਈ ਦਿੱਤੇ ਗਏ [ਡਾਟਾ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ਨੂੰ ਲੋਡ ਕਰੀਏ!\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": [ "ਇੱਕ ਤੇਜ਼ `glimpse()` ਤੁਰੰਤ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਡਾਟਾ ਵਿੱਚ ਖਾਲੀ ਜਗ੍ਹਾਵਾਂ ਹਨ ਅਤੇ ਸਤਰਾਂ (`chr`) ਅਤੇ ਗਿਣਤੀ ਡਾਟਾ (`dbl`) ਦਾ ਮਿਸ਼ਰਣ ਹੈ। `Date` ਕਿਰਦਾਰ ਦੀ ਕਿਸਮ ਦਾ ਹੈ ਅਤੇ ਇੱਕ ਅਜੀਬ ਕਾਲਮ `Package` ਵੀ ਹੈ ਜਿੱਥੇ ਡਾਟਾ `sacks`, `bins` ਅਤੇ ਹੋਰ ਮੁੱਲਾਂ ਦੇ ਮਿਸ਼ਰਣ ਵਜੋਂ ਹੈ। ਅਸਲ ਵਿੱਚ, ਡਾਟਾ ਕੁਝ ਗੜਬੜ ਹੈ 😤।\n", "\n", "ਅਸਲ ਵਿੱਚ, ਇਹ ਬਹੁਤ ਆਮ ਨਹੀਂ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਇੱਕ ਡਾਟਾਸੈੱਟ ਮਿਲੇ ਜੋ ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ ਹੋਵੇ ਤਾਂ ਜੋ ਇਸ ਤੋਂ ML ਮਾਡਲ ਤਿਆਰ ਕੀਤਾ ਜਾ ਸਕੇ। ਪਰ ਚਿੰਤਾ ਨਾ ਕਰੋ, ਇਸ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਕਿਵੇਂ ਇੱਕ ਕੱਚੇ ਡਾਟਾਸੈੱਟ ਨੂੰ ਮਿਆਰੀ R ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤਿਆਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ 🧑‍🔧। ਤੁਸੀਂ ਡਾਟੇ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਵੱਖ-ਵੱਖ ਤਕਨੀਕਾਂ ਵੀ ਸਿੱਖੋਗੇ।📈📊\n", "
\n", "\n", "> ਇੱਕ ਯਾਦ ਦਹਾਨੀ: ਪਾਈਪ ਓਪਰੇਟਰ (`%>%`) ਲਾਜ਼ਮੀ ਕ੍ਰਮ ਵਿੱਚ ਕਾਰਵਾਈਆਂ ਕਰਦਾ ਹੈ, ਇੱਕ ਵਸਤੂ ਨੂੰ ਅੱਗੇ ਫੰਕਸ਼ਨ ਜਾਂ ਕਾਲ ਐਕਸਪ੍ਰੈਸ਼ਨ ਵਿੱਚ ਭੇਜਦਾ ਹੈ। ਤੁਸੀਂ ਪਾਈਪ ਓਪਰੇਟਰ ਨੂੰ ਆਪਣੇ ਕੋਡ ਵਿੱਚ \"ਅਤੇ ਫਿਰ\" ਕਹਿਣ ਵਜੋਂ ਸੋਚ ਸਕਦੇ ਹੋ।\n" ], "metadata": { "id": "REWcIv9yX29v" } }, { "cell_type": "markdown", "source": [ "## 2. ਡਾਟਾ ਦੀ ਘਾਟ ਜਾਂ ਪੂਰੀ ਨਾ ਹੋਣ ਦੀ ਜਾਂਚ ਕਰੋ\n", "\n", "ਇਹ ਸਭ ਤੋਂ ਆਮ ਸਮੱਸਿਆਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਜਿਸ ਨਾਲ ਡਾਟਾ ਸਾਇੰਟਿਸਟਸ ਨੂੰ ਨਿਪਟਣਾ ਪੈਂਦਾ ਹੈ, ਜਦੋਂ ਡਾਟਾ ਅਧੂਰਾ ਜਾਂ ਗੁੰਮ ਹੁੰਦਾ ਹੈ। R ਵਿੱਚ ਗੁੰਮ ਜਾਂ ਅਣਜਾਣ ਮੁੱਲਾਂ ਨੂੰ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਸੰਕੇਤਕ ਮੁੱਲ `NA` (Not Available) ਨਾਲ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ।\n", "\n", "ਤਾਂ ਅਸੀਂ ਕਿਵੇਂ ਜਾਣ ਸਕਦੇ ਹਾਂ ਕਿ ਡਾਟਾ ਫਰੇਮ ਵਿੱਚ ਗੁੰਮ ਮੁੱਲ ਹਨ?\n", "
\n", "- ਇੱਕ ਸਿੱਧਾ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਬੇਸ R ਫੰਕਸ਼ਨ `anyNA` ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਵੇ, ਜੋ ਤਰਕਸੰਗਤ ਵਸਤੂਆਂ `TRUE` ਜਾਂ `FALSE` ਵਾਪਸ ਕਰਦਾ ਹੈ।\n" ], "metadata": { "id": "Zxfb3AM5YbUe" } }, { "cell_type": "code", "execution_count": null, "source": [ "pumpkins %>% \n", " anyNA()" ], "outputs": [], "metadata": { "id": "G--DQutAYltj" } }, { "cell_type": "markdown", "source": [ "ਵਧੀਆ, ਲੱਗਦਾ ਹੈ ਕਿ ਕੁਝ ਡਾਟਾ ਗੁੰਮ ਹੈ! ਇਹ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਇੱਕ ਵਧੀਆ ਜਗ੍ਹਾ ਹੈ।\n", "\n", "- ਇੱਕ ਹੋਰ ਤਰੀਕਾ `is.na()` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਹੋਵੇਗਾ ਜੋ ਦੱਸਦਾ ਹੈ ਕਿ ਕਿਹੜੇ ਵਿਅਕਤੀਗਤ ਕਾਲਮ ਤੱਤ ਗੁੰਮ ਹਨ, ਇੱਕ ਤਰਕਸੰਗਤ `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": [ "ਠੀਕ ਹੈ, ਕੰਮ ਹੋ ਗਿਆ ਪਰ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਵੱਡੇ ਡਾਟਾ ਫਰੇਮ ਨਾਲ, ਹਰ ਪੰਗਤੀ ਅਤੇ ਕਾਲਮ ਨੂੰ ਵਿਅਕਤੀਗਤ ਤੌਰ 'ਤੇ ਸਮੀਖਿਆ ਕਰਨਾ ਅਸਰਦਾਰ ਅਤੇ ਵਾਸਤਵ ਵਿੱਚ ਅਸੰਭਵ ਹੋਵੇਗਾ😴।\n", "\n", "- ਇੱਕ ਹੋਰ ਬੇਹਤਰ ਤਰੀਕਾ ਇਹ ਹੋਵੇਗਾ ਕਿ ਹਰ ਕਾਲਮ ਲਈ ਗੁੰਮ ਹੋਈਆਂ ਵੈਲਿਊਜ਼ ਦਾ ਜੋੜ ਕੱਢਿਆ ਜਾਵੇ:\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": [ "ਰ:\n", "\n", "> ਸ਼ਾਨਦਾਰ ਪੈਕੇਜਾਂ ਅਤੇ ਫੰਕਸ਼ਨਾਂ ਦੇ ਨਾਲ, R ਵਿੱਚ ਬਹੁਤ ਵਧੀਆ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਹੈ। ਉਦਾਹਰਣ ਵਜੋਂ, `help(colSums)` ਜਾਂ `?colSums` ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਫੰਕਸ਼ਨ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰੋ।\n" ], "metadata": { "id": "9gv-crB6ZD1Y" } }, { "cell_type": "markdown", "source": [ "## 3. Dplyr: ਡਾਟਾ ਮੈਨਿਪੂਲੇਸ਼ਨ ਦੀ ਇੱਕ ਗ੍ਰੈਮਰ\n", "\n", "

\n", " \n", "

ਕਲਾ ਰਚਨਾ @allison_horst ਦੁਆਰਾ
\n", "\n", "\n", "\n" ], "metadata": { "id": "o4jLY5-VZO2C" } }, { "cell_type": "markdown", "source": [ "[`dplyr`](https://dplyr.tidyverse.org/), ਜੋ Tidyverse ਵਿੱਚ ਇੱਕ ਪੈਕੇਜ ਹੈ, ਡਾਟਾ ਮੈਨਿਪੂਲੇਸ਼ਨ ਦੀ ਇੱਕ ਵਿਧੀ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਸਭ ਤੋਂ ਆਮ ਡਾਟਾ ਮੈਨਿਪੂਲੇਸ਼ਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨ ਵਾਲੇ ਇੱਕ ਸਥਿਰ ਸੈੱਟ ਦੇ ਕਿਰਿਆਵਾਂ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। ਇਸ ਭਾਗ ਵਿੱਚ, ਅਸੀਂ dplyr ਦੀਆਂ ਕੁਝ ਕਿਰਿਆਵਾਂ ਦੀ ਜਾਂਚ ਕਰਾਂਗੇ!\n" ], "metadata": { "id": "i5o33MQBZWWw" } }, { "cell_type": "markdown", "source": [ "#### dplyr::select()\n", "\n", "`select()` ਫੰਕਸ਼ਨ `dplyr` ਪੈਕੇਜ ਵਿੱਚ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਕਾਲਮ ਚੁਣਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਜੋ ਰੱਖਣੇ ਜਾਂ ਹਟਾਉਣੇ ਹਨ।\n", "\n", "ਆਪਣੇ ਡਾਟਾ ਫਰੇਮ ਨੂੰ ਆਸਾਨ ਬਣਾਉਣ ਲਈ, ਇਸਦੇ ਕਈ ਕਾਲਮ ਹਟਾਓ ਅਤੇ `select()` ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਿਰਫ਼ ਉਹ ਕਾਲਮ ਰੱਖੋ ਜੋ ਤੁਹਾਨੂੰ ਚਾਹੀਦੇ ਹਨ।\n", "\n", "ਉਦਾਹਰਨ ਵਜੋਂ, ਇਸ ਅਭਿਆਸ ਵਿੱਚ, ਸਾਡਾ ਵਿਸ਼ਲੇਸ਼ਣ `Package`, `Low Price`, `High Price` ਅਤੇ `Date` ਕਾਲਮਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰੇਗਾ। ਆਓ ਇਹ ਕਾਲਮ ਚੁਣੀਏ।\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()` ਇੱਕ ਫੰਕਸ਼ਨ ਹੈ ਜੋ ਪੈਕੇਜ `dplyr` ਵਿੱਚ ਹੈ, ਜੋ ਤੁਹਾਨੂੰ ਕਾਲਮ ਬਣਾਉਣ ਜਾਂ ਸੋਧਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਮੌਜੂਦਾ ਕਾਲਮ ਜਿਵੇਂ ਦੇ ਤਿਵੇਂ ਰਹਿੰਦੇ ਹਨ।\n", "\n", "`mutate` ਦੀ ਆਮ ਬਣਾਵਟ ਇਹ ਹੈ:\n", "\n", "`data %>% mutate(new_column_name = what_it_contains)`\n", "\n", "ਆਓ, `mutate` ਨੂੰ ਵਰਤ ਕੇ `Date` ਕਾਲਮ 'ਤੇ ਕੁਝ ਕਾਰਵਾਈਆਂ ਕਰਦੇ ਹਾਂ:\n", "\n", "1. ਮਿਤੀਆਂ (ਜੋ ਇਸ ਸਮੇਂ ਕਿਰਦਾਰ ਦੀ ਕਿਸਮ ਦੀਆਂ ਹਨ) ਨੂੰ ਮਹੀਨੇ ਦੇ ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲੋ (ਇਹ ਅਮਰੀਕੀ ਮਿਤੀਆਂ ਹਨ, ਇਸ ਲਈ ਫਾਰਮੈਟ `MM/DD/YYYY` ਹੈ)।\n", "\n", "2. ਮਿਤੀਆਂ ਵਿੱਚੋਂ ਮਹੀਨਾ ਨਿਕਾਲ ਕੇ ਇੱਕ ਨਵੇਂ ਕਾਲਮ ਵਿੱਚ ਸਟੋਰ ਕਰੋ।\n", "\n", "R ਵਿੱਚ, ਪੈਕੇਜ [lubridate](https://lubridate.tidyverse.org/) ਮਿਤੀ-ਸਮਾਂ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ। ਇਸ ਲਈ, ਆਓ `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` ਵਰਤ ਕੇ ਉਪਰੋਕਤ ਲਕਸ਼ਾਂ ਨੂੰ ਹਾਸਲ ਕਰੀਏ। ਅਸੀਂ Date ਕਾਲਮ ਨੂੰ ਹਟਾ ਸਕਦੇ ਹਾਂ ਕਿਉਂਕਿ ਅੱਗੇ ਦੀਆਂ ਕਾਰਵਾਈਆਂ ਵਿੱਚ ਸਾਨੂੰ ਇਸ ਦੀ ਲੋੜ ਨਹੀਂ ਹੋਵੇਗੀ।\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": [ "ਵਾਹ! 🤩\n", "\n", "ਅਗਲੇ ਕਦਮ ਵਿੱਚ, ਆਓ ਇੱਕ ਨਵਾਂ ਕਾਲਮ `Price` ਬਣਾਈਏ, ਜੋ ਕਿ ਕਦੂ ਦੀ ਔਸਤ ਕੀਮਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਹੁਣ, `Low Price` ਅਤੇ `High Price` ਕਾਲਮਾਂ ਦੀ ਔਸਤ ਲੈ ਕੇ ਨਵੇਂ Price ਕਾਲਮ ਨੂੰ ਭਰੋ। \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": [ "ਹਾਂ!💪\n", "\n", "\"ਪਰ ਰੁਕੋ!\", ਤੁਸੀਂ `View(pumpkins)` ਨਾਲ ਸਾਰੇ ਡਾਟਾ ਸੈਟ ਨੂੰ ਦੇਖਣ ਤੋਂ ਬਾਅਦ ਕਹੋਗੇ, \"ਇੱਥੇ ਕੁਝ ਅਜੀਬ ਹੈ!\"🤔\n", "\n", "ਜੇ ਤੁਸੀਂ `Package` ਕਾਲਮ ਨੂੰ ਦੇਖੋ, ਤਾਂ ਕਦੂ ਕਈ ਵੱਖ-ਵੱਖ ਸੰਰਚਨਾਵਾਂ ਵਿੱਚ ਵੇਚੇ ਜਾਂਦੇ ਹਨ। ਕੁਝ `1 1/9 bushel` ਮਾਪਾਂ ਵਿੱਚ ਵੇਚੇ ਜਾਂਦੇ ਹਨ, ਕੁਝ `1/2 bushel` ਮਾਪਾਂ ਵਿੱਚ, ਕੁਝ ਪ੍ਰਤੀ ਕਦੂ, ਕੁਝ ਪ੍ਰਤੀ ਪੌਂਡ, ਅਤੇ ਕੁਝ ਵੱਖ-ਵੱਖ ਚੌੜਾਈ ਵਾਲੇ ਵੱਡੇ ਬਕਸਿਆਂ ਵਿੱਚ।\n", "\n", "ਆਓ ਇਸ ਦੀ ਪੁਸ਼ਟੀ ਕਰੀਏ:\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": [ "ਅਦਭੁਤ!👏\n", "\n", "ਕਦੂਆਂ ਨੂੰ ਲਗਾਤਾਰ ਤੌਰ 'ਤੇ ਤੋਲਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਲੱਗਦਾ ਹੈ, ਇਸ ਲਈ ਆਓ ਉਨ੍ਹਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰੀਏ ਜੋ ਸਿਰਫ `Package` ਕਾਲਮ ਵਿੱਚ *bushel* ਸਟ੍ਰਿੰਗ ਵਾਲੇ ਕਦੂ ਹਨ ਅਤੇ ਇਸ ਨੂੰ ਇੱਕ ਨਵੀਂ ਡਾਟਾ ਫਰੇਮ `new_pumpkins` ਵਿੱਚ ਰੱਖੀਏ।\n" ], "metadata": { "id": "7sMjiVujaZxY" } }, { "cell_type": "markdown", "source": [ "#### dplyr::filter() ਅਤੇ stringr::str_detect()\n", "\n", "[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): ਡਾਟਾ ਦਾ ਇੱਕ ਹਿੱਸਾ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਸਿਰਫ ਉਹਨਾਂ **ਕਤਾਰਾਂ** ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ ਜੋ ਤੁਹਾਡੇ ਸ਼ਰਤਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦੀਆਂ ਹਨ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਉਹ pumpkins ਜਿਨ੍ਹਾਂ ਦੇ `Package` ਕਾਲਮ ਵਿੱਚ *bushel* ਸ਼ਬਦ ਹੈ।\n", "\n", "[stringr::str_detect()](https://stringr.tidyverse.org/reference/str_detect.html): ਇੱਕ ਸਤਰ ਵਿੱਚ ਕਿਸੇ ਪੈਟਰਨ ਦੀ ਮੌਜੂਦਗੀ ਜਾਂ ਗੈਰ-ਮੌਜੂਦਗੀ ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ।\n", "\n", "[`stringr`](https://github.com/tidyverse/stringr) ਪੈਕੇਜ ਆਮ ਸਤਰ ਸੰਬੰਧੀ ਕਾਰਵਾਈਆਂ ਲਈ ਸਧਾਰਨ ਫੰਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।\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": [ "ਤੁਹਾਨੂੰ ਦਿਖਾਈ ਦੇ ਰਿਹਾ ਹੈ ਕਿ ਅਸੀਂ 415 ਜਾਂ ਇਸ ਤੋਂ ਵੱਧ ਕਤਾਰਾਂ ਦੇ ਡਾਟਾ ਤੱਕ ਪਹੁੰਚ ਗਏ ਹਾਂ, ਜਿਸ ਵਿੱਚ ਬਸੇਲ ਦੇ ਹਿਸਾਬ ਨਾਲ ਕੱਦੂ ਹਨ।🤩\n", "
\n" ], "metadata": { "id": "VrDwF031avlR" } }, { "cell_type": "markdown", "source": [ "#### dplyr::case_when()\n", "\n", "**ਪਰ ਰੁਕੋ! ਇੱਕ ਹੋਰ ਕੰਮ ਕਰਨਾ ਬਾਕੀ ਹੈ**\n", "\n", "ਕੀ ਤੁਸੀਂ ਧਿਆਨ ਦਿੱਤਾ ਕਿ ਬੁਸ਼ਲ ਦੀ ਮਾਤਰਾ ਹਰ ਪੰਨੇ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਹੈ? ਤੁਹਾਨੂੰ ਕੀਮਤ ਨੂੰ ਸਧਾਰਨ ਕਰਨਾ ਪਵੇਗਾ ਤਾਂ ਜੋ ਤੁਸੀਂ ਕੀਮਤ ਪ੍ਰਤੀ ਬੁਸ਼ਲ ਦਿਖਾ ਸਕੋ, ਨਾ ਕਿ 1 1/9 ਜਾਂ 1/2 ਬੁਸ਼ਲ ਪ੍ਰਤੀ। ਕੀਮਤ ਨੂੰ ਸਧਾਰਨ ਕਰਨ ਲਈ ਕੁਝ ਗਣਿਤ ਕਰਨ ਦਾ ਸਮਾਂ ਹੈ।\n", "\n", "ਅਸੀਂ ਫੰਕਸ਼ਨ [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ *ਮਿਊਟੇਟ* ਕਰਨ ਲਈ Price ਕਾਲਮ ਨੂੰ ਕੁਝ ਸ਼ਰਤਾਂ ਦੇ ਅਧਾਰ 'ਤੇ। `case_when` ਤੁਹਾਨੂੰ ਕਈ `if_else()` ਬਿਆਨਾਂ ਨੂੰ ਵੇਕਟਰਾਈਜ਼ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।\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": [ "ਹੁਣ, ਅਸੀਂ ਉਨ੍ਹਾਂ ਦੇ ਬੁਸ਼ਲ ਮਾਪ ਦੇ ਅਧਾਰ 'ਤੇ ਪ੍ਰਤੀ ਇਕਾਈ ਕੀਮਤ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹਾਂ। ਹਾਲਾਂਕਿ, ਕਦੂਆਂ ਦੇ ਬੁਸ਼ਲਾਂ ਦਾ ਇਹ ਸਾਰਾ ਅਧਿਐਨ ਇਹ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ `ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ ਨੂੰ ਸਮਝਣਾ` ਕਿੰਨਾ `ਮਹੱਤਵਪੂਰਨ` ਹੈ!\n", "\n", "> ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ਦੇ ਅਨੁਸਾਰ, ਬੁਸ਼ਲ ਦਾ ਵਜ਼ਨ ਫਲ ਅਤੇ ਸਬਜ਼ੀਆਂ ਦੀ ਕਿਸਮ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਮਾਤਰਾ ਮਾਪ ਹੈ। \"ਉਦਾਹਰਣ ਲਈ, ਟਮਾਟਰਾਂ ਦਾ ਇੱਕ ਬੁਸ਼ਲ 56 ਪੌਂਡ ਵਜ਼ਨ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ... ਪੱਤੇ ਅਤੇ ਹਰੇ ਪੱਤੇ ਘੱਟ ਵਜ਼ਨ ਨਾਲ ਜ਼ਿਆਦਾ ਜਗ੍ਹਾ ਲੈਂਦੇ ਹਨ, ਇਸ ਲਈ ਸਪਿਨੇਚ ਦਾ ਇੱਕ ਬੁਸ਼ਲ ਸਿਰਫ 20 ਪੌਂਡ ਹੈ।\" ਇਹ ਸਾਰਾ ਕਾਫ਼ੀ ਜਟਿਲ ਹੈ! ਆਓ ਬੁਸ਼ਲ-ਤੋਂ-ਪੌਂਡ ਤਬਦੀਲੀ ਕਰਨ ਦੀ ਝੰਝਟ ਨਾ ਕਰੀਏ ਅਤੇ ਬੁਸ਼ਲ ਦੇ ਅਧਾਰ 'ਤੇ ਕੀਮਤ ਲਗਾਈਏ। ਕਦੂਆਂ ਦੇ ਬੁਸ਼ਲਾਂ ਦਾ ਇਹ ਸਾਰਾ ਅਧਿਐਨ, ਹਾਲਾਂਕਿ, ਇਹ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ ਨੂੰ ਸਮਝਣਾ ਕਿੰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ!\n", ">\n", "> ✅ ਕੀ ਤੁਸੀਂ ਧਿਆਨ ਦਿੱਤਾ ਕਿ ਅੱਧੇ-ਬੁਸ਼ਲ ਦੇ ਅਧਾਰ 'ਤੇ ਵੇਚੇ ਜਾਣ ਵਾਲੇ ਕਦੂ ਬਹੁਤ ਮਹਿੰਗੇ ਹਨ? ਕੀ ਤੁਸੀਂ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ ਕਿ ਕਿਉਂ? ਸੰਕੇਤ: ਛੋਟੇ ਕਦੂ ਵੱਡੇ ਕਦੂਆਂ ਨਾਲੋਂ ਕਾਫ਼ੀ ਮਹਿੰਗੇ ਹੁੰਦੇ ਹਨ, ਸ਼ਾਇਦ ਇਸ ਲਈ ਕਿ ਇੱਕ ਬੁਸ਼ਲ ਵਿੱਚ ਛੋਟੇ ਕਦੂਆਂ ਦੀ ਗਿਣਤੀ ਕਾਫ਼ੀ ਜ਼ਿਆਦਾ ਹੁੰਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਇੱਕ ਵੱਡੇ ਖਾਲੀ ਪਾਈ ਕਦੂ ਦੁਆਰਾ ਲਿਆ ਗਿਆ ਅਣਵਰਤ ਸਥਾਨ ਬਹੁਤ ਘੱਟ ਹੁੰਦਾ ਹੈ।\n" ], "metadata": { "id": "pS2GNPagbSdb" } }, { "cell_type": "markdown", "source": [ "ਹੁਣ ਆਖਰੀ ਵਾਰ, ਸਿਰਫ਼ ਰੋਮਾਂਚ ਲਈ 💁‍♀️, ਆਓ ਮਹੀਨੇ ਵਾਲੇ ਕਾਲਮ ਨੂੰ ਪਹਿਲੇ ਸਥਾਨ 'ਤੇ ਲਿਆਈਏ, ਯਾਨੀ `ਪੈਕੇਜ` ਕਾਲਮ ਤੋਂ ਪਹਿਲਾਂ।\n", "\n", "`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": [ "ਤੁਹਾਡਾ ਕੰਮ ਸ਼ਾਨਦਾਰ ਹੈ!👌 ਹੁਣ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਸਾਫ਼ ਅਤੇ ਸੁਧਰੇ ਹੋਏ ਡੇਟਾਸੈਟ ਹੈ ਜਿਸ 'ਤੇ ਤੁਸੀਂ ਆਪਣਾ ਨਵਾਂ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਕੰਮ ਕਰ ਸਕਦੇ ਹੋ!\n" ], "metadata": { "id": "y8TJ0Za_bn5Y" } }, { "cell_type": "markdown", "source": [ "## 4. ggplot2 ਨਾਲ ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ\n", "\n", "

\n", " \n", "

ਦਸਾਨੀ ਮਦੀਪੱਲੀ ਦੁਆਰਾ ਇਨਫੋਗ੍ਰਾਫਿਕ
\n", "\n", "\n", "\n", "\n", "ਇੱਕ *ਸਿਆਣੀ* ਕਹਾਵਤ ਹੈ ਜੋ ਇਸ ਤਰ੍ਹਾਂ ਜਾਂਦੀ ਹੈ:\n", "\n", "> \"ਸਧਾਰਨ ਗ੍ਰਾਫ ਨੇ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਕ ਦੇ ਮਨ ਵਿੱਚ ਹੋਰ ਕਿਸੇ ਵੀ ਸਾਧਨ ਨਾਲੋਂ ਵੱਧ ਜਾਣਕਾਰੀ ਪਹੁੰਚਾਈ ਹੈ।\" --- ਜੌਨ ਟੂਕੀ\n", "\n", "ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਦਾ ਇੱਕ ਹਿੱਸਾ ਇਹ ਦਿਖਾਉਣਾ ਹੈ ਕਿ ਉਹ ਜਿਸ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰ ਰਹੇ ਹਨ, ਉਸ ਦੀ ਗੁਣਵੱਤਾ ਅਤੇ ਪ੍ਰਕਿਰਤੀ ਕੀ ਹੈ। ਇਹ ਕਰਨ ਲਈ, ਉਹ ਅਕਸਰ ਰੁਚਿਕਰ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ, ਜਾਂ ਪਲਾਟ, ਗ੍ਰਾਫ ਅਤੇ ਚਾਰਟ ਬਣਾਉਂਦੇ ਹਨ, ਜੋ ਡਾਟਾ ਦੇ ਵੱਖ-ਵੱਖ ਪੱਖਾਂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। ਇਸ ਤਰੀਕੇ ਨਾਲ, ਉਹ ਦ੍ਰਿਸ਼ਟੀਗੋਚਰ ਤੌਰ 'ਤੇ ਉਹ ਸੰਬੰਧ ਅਤੇ ਖਾਮੀਆਂ ਦਿਖਾ ਸਕਦੇ ਹਨ ਜੋ ਹੋਰਥਾਂ ਖੋਜਣਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ।\n", "\n", "ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਇਹ ਵੀ ਸਹਾਇਕ ਹੁੰਦੀ ਹੈ ਕਿ ਕਿਹੜੀ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਤਕਨੀਕ ਡਾਟਾ ਲਈ ਸਭ ਤੋਂ ਉਚਿਤ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜੇਕਰ ਇੱਕ ਸਕੈਟਰਪਲਾਟ ਇੱਕ ਲਾਈਨ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੋਵੇ, ਤਾਂ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਡਾਟਾ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਭਿਆਸ ਲਈ ਇੱਕ ਵਧੀਆ ਉਮੀਦਵਾਰ ਹੈ।\n", "\n", "R ਵਿੱਚ ਗ੍ਰਾਫ ਬਣਾਉਣ ਲਈ ਕਈ ਸਿਸਟਮ ਹਨ, ਪਰ [`ggplot2`](https://ggplot2.tidyverse.org/index.html) ਸਭ ਤੋਂ ਸੁੰਦਰ ਅਤੇ ਬਹੁਪੱਖੀ ਹੈ। `ggplot2` ਤੁਹਾਨੂੰ **ਸਵਤੰਤਰਕ ਘਟਕਾਂ ਨੂੰ ਜੋੜ ਕੇ** ਗ੍ਰਾਫ ਬਣਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।\n", "\n", "ਆਓ, ਪਹਿਲਾਂ ਪ੍ਰਾਈਸ ਅਤੇ ਮੰਥ ਕਾਲਮਾਂ ਲਈ ਇੱਕ ਸਧਾਰਨ ਸਕੈਟਰ ਪਲਾਟ ਨਾਲ ਸ਼ੁਰੂ ਕਰੀਏ।\n", "\n", "ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਅਸੀਂ [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html) ਨਾਲ ਸ਼ੁਰੂ ਕਰਾਂਗੇ, ਇੱਕ ਡਾਟਾਸੈਟ ਅਤੇ ਐਸਥੇਟਿਕ ਮੈਪਿੰਗ (ਸਾਥੇ [`aes()`](https://ggplot2.tidyverse.org/reference/aes.html)) ਪ੍ਰਦਾਨ ਕਰਾਂਗੇ, ਅਤੇ ਫਿਰ ਸਕੈਟਰ ਪਲਾਟ ਲਈ ਲੇਅਰਜ਼ (ਜਿਵੇਂ ਕਿ [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html)) ਸ਼ਾਮਲ ਕਰਾਂਗੇ।\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": [ "ਕੀ ਇਹ ਇੱਕ ਲਾਭਦਾਇਕ ਪਲਾਟ ਹੈ 🤷? ਕੀ ਇਸ ਵਿੱਚ ਕੁਝ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਹੈਰਾਨ ਕਰਦਾ ਹੈ?\n", "\n", "ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਿਰਫ ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਇੱਕ ਦਿੱਤੇ ਮਹੀਨੇ ਵਿੱਚ ਬਿੰਦੂਆਂ ਦੇ ਫੈਲਾਅ ਵਜੋਂ ਦਰਸਾਉਂਦਾ ਹੈ।\n" ], "metadata": { "id": "Ml7SDCLQcPvE" } }, { "cell_type": "markdown", "source": [ "### **ਅਸੀਂ ਇਸਨੂੰ ਕਿਵੇਂ ਲਾਭਦਾਇਕ ਬਣਾਈਏ?**\n", "\n", "ਚਾਰਟਾਂ ਵਿੱਚ ਲਾਭਦਾਇਕ ਡਾਟਾ ਵੇਖਾਉਣ ਲਈ, ਆਮ ਤੌਰ 'ਤੇ ਤੁਹਾਨੂੰ ਕਿਸੇ ਤਰੀਕੇ ਨਾਲ ਡਾਟਾ ਨੂੰ ਗਰੁੱਪ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। ਉਦਾਹਰਣ ਵਜੋਂ, ਸਾਡੇ ਕੇਸ ਵਿੱਚ, ਹਰ ਮਹੀਨੇ ਲਈ ਕਦੂਆਂ ਦੀ ਔਸਤ ਕੀਮਤ ਲੱਭਣ ਨਾਲ ਸਾਡੇ ਡਾਟਾ ਵਿੱਚ ਛੁਪੇ ਹੋਏ ਪੈਟਰਨਜ਼ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਮਿਲੇਗੀ। ਇਹ ਸਾਨੂੰ ਇੱਕ ਹੋਰ **dplyr** ਫਲਾਈਬਾਈ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ:\n", "\n", "#### `dplyr::group_by() %>% summarize()`\n", "\n", "R ਵਿੱਚ ਗਰੁੱਪਡ ਐਗਰੀਗੇਸ਼ਨ ਆਸਾਨੀ ਨਾਲ ਹਿਸਾਬ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ\n", "\n", "`dplyr::group_by() %>% summarize()`\n", "\n", "- `dplyr::group_by()` ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਇਕਾਈ ਨੂੰ ਪੂਰੇ ਡਾਟਾਸੈੱਟ ਤੋਂ ਵੱਖ-ਵੱਖ ਗਰੁੱਪਾਂ (ਜਿਵੇਂ ਕਿ ਪ੍ਰਤੀ ਮਹੀਨਾ) ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ।\n", "\n", "- `dplyr::summarize()` ਇੱਕ ਨਵਾਂ ਡਾਟਾ ਫਰੇਮ ਬਣਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਹਰ ਗਰੁੱਪਿੰਗ ਵੈਰੀਏਬਲ ਲਈ ਇੱਕ ਕਾਲਮ ਅਤੇ ਤੁਹਾਡੇ ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਕੀਤੇ ਗਏ ਹਰ ਸੰਖੇਪਕ ਅੰਕੜੇ ਲਈ ਇੱਕ ਕਾਲਮ ਹੁੰਦਾ ਹੈ।\n", "\n", "ਉਦਾਹਰਣ ਵਜੋਂ, ਅਸੀਂ `dplyr::group_by() %>% summarize()` ਦੀ ਵਰਤੋਂ ਕਰਕੇ **ਮਹੀਨੇ** ਵਾਲੇ ਕਾਲਮ ਦੇ ਆਧਾਰ 'ਤੇ ਕਦੂਆਂ ਨੂੰ ਗਰੁੱਪ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਫਿਰ ਹਰ ਮਹੀਨੇ ਲਈ **ਔਸਤ ਕੀਮਤ** ਲੱਭ ਸਕਦੇ ਹਾਂ।\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": [ "ਸੰਖੇਪ!✨\n", "\n", "ਸ਼੍ਰੇਣੀਬੱਧ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਮਹੀਨੇ, ਨੂੰ ਬਾਰ ਪਲਾਟ 📊 ਦੀ ਵਰਤੋਂ ਨਾਲ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਬਾਰ ਚਾਰਟਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਲੇਅਰ ਹਨ `geom_bar()` ਅਤੇ `geom_col()`। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ `?geom_bar` ਨੂੰ ਵੇਖੋ।\n", "\n", "ਆਓ ਇੱਕ ਬਣਾਈਏ!\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": [ "🤩🤩 ਇਹ ਇੱਕ ਹੋਰ ਉਪਯੋਗ ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਹੈ! ਇਹ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕਦੂਆਂ ਦੀ ਸਭ ਤੋਂ ਉੱਚੀ ਕੀਮਤ ਸਤੰਬਰ ਅਤੇ ਅਕਤੂਬਰ ਵਿੱਚ ਹੁੰਦੀ ਹੈ। ਕੀ ਇਹ ਤੁਹਾਡੀ ਉਮੀਦਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦਾ ਹੈ? ਕਿਉਂ ਜਾਂ ਕਿਉਂ ਨਹੀਂ?\n", "\n", "ਦੂਸਰਾ ਪਾਠ ਮੁਕੰਮਲ ਕਰਨ 'ਤੇ ਵਧਾਈਆਂ 👏! ਤੁਸੀਂ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਆਪਣੇ ਡਾਟਾ ਦੀ ਤਿਆਰੀ ਕੀਤੀ, ਫਿਰ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੋਰ ਅੰਦਰੂਨੀ ਜਾਣਕਾਰੀਆਂ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ!\n" ], "metadata": { "id": "zDm0VOzzcuzR" } }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n---\n\n**ਅਸਵੀਕਾਰਨਾ**: \nਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।\n" ] } ] }