{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ee5676ab",
   "metadata": {},
   "source": [
    "### Overview of the important Python packages and modules"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91400787",
   "metadata": {},
   "source": [
    "A few important Python libraries used in the course:\n",
    "* [NumPy](https://numpy.org) -- contains multidimensional arrays (e.g. `np.array()`) and allows various computing operations with them\n",
    "* [Pandas](https://pandas.pydata.org) -- library for data manipulation and analysis\n",
    "* [SciPy](https://scipy.org) -- library for sientific computing in Python, includes `scipy.stats` module that contains multiple statistical functions including probabilistic distributions, statistical tests, etc\n",
    "* [Sklearn](https://scikit-learn.org/stable/) -- library for data analysis and Machine Learning\n",
    "* [Matplotlib](https://matplotlib.org) -- main Python visualization library\n",
    "* [os](https://docs.python.org/3/library/os.html) -- functionality for operating system interfaces (e.g., listing files in directories, creating paths, making folders, etc.)\n",
    "* [Seaborn](https://seaborn.pydata.org/index.html) -- visualization library based on matplotlib\n",
    "\n",
    "Potentially useful packages and modules:\n",
    "* [collections](https://docs.python.org/3/library/collections.html) -- useful wraper for many data types\n",
    "* [graph-tool](https://graph-tool.skewed.de), [Networkx](https://networkx.org), [igraph](https://igraph.readthedocs.io/en/0.10.2/) -- network analysis, inference and visualization\n",
    "* [plotly](https://plotly.com/python/) -- interactive plots\n",
    "* [sys](https://docs.python.org/3/library/sys.html) -- access to variables used or maintained by the interpreter\n",
    "* [tqdm](https://github.com/tqdm/tqdm) -- progress bar\n",
    "* [itertools](https://docs.python.org/3/library/itertools.html) -- fuctions for efficient looping\n",
    "* [rpy2](https://rpy2.github.io) -- allows using R functionality in Python\n",
    "* [random](https://docs.python.org/3/library/random.html) -- generation of pseudo-random numbers\n",
    "* [pytabix](https://github.com/slowkow/pytabix) -- allows efficient access to .bgzip and .tbi files\n",
    "* [Xarray](https://docs.xarray.dev/en/stable/user-guide/data-structures.html) -- efficient processing of high dimensional data as an alternative to Pandas"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "162c1936",
   "metadata": {},
   "source": [
    "The general practice is to import packages in the first cell of the notebook. If you are using Anaconda, then most of the packages should be already installed. If it not the case, you can install a package by executing `conda install numpy` in a command line or use `pip install nympy` also in the command line. Alternatively, if you are using Jupyther Notebook, you can install a package by executing `!pip install numpy`."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "441af3e5",
   "metadata": {},
   "source": [
    "It is common to use abbreviations for some packages, for example: `np` for `numpy`, `pd` for `pandas`, `sns` for `seaborn`, etc."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5fc49934",
   "metadata": {},
   "source": [
    "Always bear in mind that explicit syntax is always better than implicit! Try to not go overboard with abbreviations, since using abbreviations may reduce code readability."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5dd2eceb",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Importing all the libraries usefull for this notebook\n",
    "import os\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5fc84e8",
   "metadata": {},
   "source": [
    "### 1. On new data types (NumPy array and Pandas dataframe)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8cd68ae",
   "metadata": {},
   "source": [
    "#### 1.1. NumPy arrays"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e6f3c53",
   "metadata": {},
   "source": [
    "The main object in NumPy library is a multidimensional array (`ndarray`). Such objects are represented as matrices often containing numerical elements. Similar to lists, arrays are indexed.\n",
    " \n",
    "A few important attributes of an ndarray are: `.shape`, `.size`, `.ndim`, etc. (to read more about NumPY, check out [this](https://numpy.org/doc/stable/user/quickstart.html) link).\n",
    "\n",
    "Let's look into a few examples:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "80e63d21",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 2 3] <class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "source": [
    "# 1 dimensional array\n",
    "x_1 = np.array([1, 2, 3])\n",
    "print(x_1, type(x_1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1757b5de",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_1.shape (3,)\n",
      "x_1.size 3\n",
      "x_1.ndim 1\n"
     ]
    }
   ],
   "source": [
    "print('x_1.shape', x_1.shape)  # 3 stands for the number of elements in one and only dimension\n",
    "print('x_1.size', x_1.size)  # 3 represents the total number of elements\n",
    "print('x_1.ndim', x_1.ndim)  # 1 represents the number of dimensions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3a52824c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 2 3]\n",
      " [4 5 6]] <class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "source": [
    "# 2 dimensional array\n",
    "x_2 = np.array(\n",
    "    [[1, 2, 3],\n",
    "    [4, 5, 6]]\n",
    ")\n",
    "print(x_2, type(x_2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "db6184bd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_2.shape (2, 3)\n",
      "x_2.size 6\n",
      "x_2.ndim 2\n"
     ]
    }
   ],
   "source": [
    "print('x_2.shape', x_2.shape)  # 2 stands for the number of rows, 3 for the number of columns\n",
    "print('x_2.size', x_2.size)  # 6 represents the total number of elements\n",
    "print('x_2.ndim', x_2.ndim)  # 2 represents the number of dimensions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "da061762",
   "metadata": {},
   "source": [
    "NumPy has a lot of functionality which we will not cover in this course. However, below we provide a few examples that are representative enough:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a1e647c0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0. 0. 0. 0.]\n",
      " [0. 0. 0. 0.]\n",
      " [0. 0. 0. 0.]]\n"
     ]
    }
   ],
   "source": [
    "zero_array = np.zeros((3, 4))  # create an array of size 3x4 filled with zeros\n",
    "print(zero_array)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "56d5af66",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[  2.71828183   7.3890561   20.08553692]\n",
      " [ 54.59815003 148.4131591  403.42879349]]\n"
     ]
    }
   ],
   "source": [
    "# calculate the exponential value of each element in the array\n",
    "# with the base e (mathematical constant)\n",
    "exp_x_2 = np.exp(x_2)\n",
    "print(exp_x_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a7e59aef",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sum across rows =  [5 7 9]\n",
      "Sum across columns =  [ 6 15]\n"
     ]
    }
   ],
   "source": [
    "# calculate the sum of elements in the array across columns (axis 1)\n",
    "sum_axis_0 = np.sum(x_2, axis=0)\n",
    "print('Sum across rows = ', sum_axis_0)\n",
    "\n",
    "sum_axis_1 = np.sum(x_2, axis=1)\n",
    "print('Sum across columns = ', sum_axis_1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15b3501e",
   "metadata": {},
   "source": [
    "NumPy is useful for various linear algebra tasks, e.g., matrix multiplication, eigenvalue decomposition, etc. To know more about NumPy functionality, please see [this](https://numpy.org/doc/stable/reference/routines.linalg.html) link."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "bfdcd763",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_1 * x_1 = [1 4 9]\n",
      "x_2@x_1 =  [14 32]\n"
     ]
    }
   ],
   "source": [
    "print('x_1 * x_1 =', x_1 * x_1)  # element-wise multiplication\n",
    "print('x_2@x_1 = ', x_2@x_1)  # matrix multiplication, equivalent to .matmull()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb494bbd",
   "metadata": {},
   "source": [
    "#### 1.2. Pandas dataframes"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d827e9e1",
   "metadata": {},
   "source": [
    "Pandas dataframe is a two-dimensional cunstructor for tabular data. It stores the data, allows performing various operations with it, including cleaning the data and processing it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d2a3fb38",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   0  1  2\n",
       "0  1  2  3\n",
       "1  4  5  6"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a dataframe from np.array\n",
    "df_from_array = pd.DataFrame(x_2)\n",
    "df_from_array.head()  # visualize the first n rows (default n=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "63830fde",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>one</th>\n",
       "      <th>two</th>\n",
       "      <th>three</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   one  two  three\n",
       "0    1    2      3\n",
       "1    4    5      6"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_from_array.columns = ['one', 'two', 'three']  # set column names\n",
    "df_from_array.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "cb2bdf3b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>one</th>\n",
       "      <th>two</th>\n",
       "      <th>three</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   one  two  three\n",
       "0    1    2      3\n",
       "1    4    5      6"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a dataframe from dictionary\n",
    "df_from_array = pd.DataFrame(\n",
    "    {\n",
    "        'one': [1, 4],\n",
    "        'two': [2, 5],\n",
    "        'three': [3, 6]\n",
    "    }\n",
    ")\n",
    "df_from_array.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "8f4fc53b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>one</th>\n",
       "      <th>two</th>\n",
       "      <th>three</th>\n",
       "      <th>four</th>\n",
       "      <th>sum_one_and_three</th>\n",
       "      <th>log10_one</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>0.60206</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   one  two  three  four  sum_one_and_three  log10_one\n",
       "0    1    2      3     4                  4    0.00000\n",
       "1    4    5      6     7                 10    0.60206"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_from_array['four'] = [4, 7]  # add a new column\n",
    "\n",
    "# create a column where new value is equal to\n",
    "# the sum of the value in column one and column three:\n",
    "df_from_array['sum_one_and_three'] = df_from_array.loc[:, 'one'] + df_from_array.loc[:, 'three']\n",
    "\n",
    "# create a column where new value is log10 transformed\n",
    "df_from_array['log10_one'] = np.log10(df_from_array.loc[:, 'one'])\n",
    "\n",
    "df_from_array.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d3bf06ec",
   "metadata": {},
   "source": [
    "To know more about Pandas functionality, check out [this](https://pandas.pydata.org/docs/user_guide/index.html) link."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "242a09bd",
   "metadata": {},
   "source": [
    "### 2. Reading files"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "0a168d7b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# define the core path\n",
    "core_path = '/data/gardeux/Course_GG'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19d54275",
   "metadata": {},
   "source": [
    "#### 2.1. Optional: Reading files line by line and writing to files"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d722327f",
   "metadata": {},
   "source": [
    "You can read files in Python with the complex of `open()`, `readline()`, `close()` functions in the following way:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "48ec5be4",
   "metadata": {},
   "outputs": [],
   "source": [
    "f_in = open(\n",
    "    os.path.join(core_path, 'iris_dataset.csv'),  # path to file\n",
    "    mode='r'  # mode for opening the file (see function details for more options)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "10aaf5c2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sepal_length,sepal_width,petal_length,petal_width,variety\n",
      "\n",
      "5.1,3.5,1.4,.2,Setosa\n",
      "\n",
      "4.9,3,1.4,.2,Setosa\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(f_in.readline())  # outputs the first line of the file\n",
    "print(f_in.readline())  # outputs the second line of the file\n",
    "print(f_in.readline())  # outputs the second line of the file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "c2dae046",
   "metadata": {},
   "outputs": [],
   "source": [
    "f_in.close()  # it's necessary to close the file after you've finished processing it"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aafaddca",
   "metadata": {},
   "source": [
    "Alternatively, you can use the function `.readlines()` that would provide the list of all lines contained in the file, where each line is represented as string with `\\n` in the end."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "03044f8c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'variety']\n",
      "['5.1', '3.5', '1.4', '.2', 'Setosa']\n",
      "['4.9', '3', '1.4', '.2', 'Setosa']\n"
     ]
    }
   ],
   "source": [
    "f_in = open(\n",
    "    os.path.join(core_path, 'iris_dataset.csv'),  # path to file\n",
    "    mode='r'  # mode for opening the file (see function details for more options)\n",
    ")\n",
    "i = 0\n",
    "for line in list(f_in.readlines()):  # iterate over each line\n",
    "    # replace \\n with an empty string and\n",
    "    # split the line based on the separator\n",
    "    print(line.replace('\\n', '').split(','))\n",
    "    i += 1\n",
    "    if i == 3:  # to print only the first three lines\n",
    "        break\n",
    "f_in.close()  # close the file"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "66ae4854",
   "metadata": {},
   "source": [
    "Now, let's try writing only the data for Setosa species into the new file named `setosa_dataset_write.csv`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "6b60453e",
   "metadata": {},
   "outputs": [],
   "source": [
    "f_in = open(\n",
    "    os.path.join(core_path, 'iris_dataset.csv'),  # path to file\n",
    "    mode='r'  # mode for reading the file (see function details for more options)\n",
    ")\n",
    "f_out = open(\n",
    "    os.path.join(core_path, 'setosa_dataset_write.csv'),  # path to file\n",
    "    mode='w'  # mode for writing the file (see function details for more options)\n",
    ")\n",
    "for i, line in enumerate(list(f_in.readlines())):  # iterate over each line in the input file will all data\n",
    "    # replace \\n with an empty string and\n",
    "    # split the line based on the separator\n",
    "    values_in_line = line.replace('\\n', '').split(',')\n",
    "    if i == 0:\n",
    "        f_out.write(line)  # write the header to the output file\n",
    "    if values_in_line[-1] == 'Setosa':  # if the last element in the list is Setosa\n",
    "        f_out.write(line)  # write this line to the output file\n",
    "f_in.close()  # close the input file\n",
    "f_out.close()  # close the output file"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "50368539",
   "metadata": {},
   "source": [
    "#### 2.2. Reading and writing to files with Pandas"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b45ba01a",
   "metadata": {},
   "source": [
    "One of the most standard ways of reading tabular data is to use the `read_csv()` function from Pandas."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "fa531580",
   "metadata": {},
   "outputs": [],
   "source": [
    "# We use the pd.read_csv() function from Pandas to read files\n",
    "iris_df = pd.read_csv(\n",
    "    os.path.join(core_path, 'iris_dataset.csv'),  # specify path to file\n",
    "    sep=','  # specify separator (default is comma)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "580098ee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>variety</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal_length  sepal_width  petal_length  petal_width variety\n",
       "0           5.1          3.5           1.4          0.2  Setosa\n",
       "1           4.9          3.0           1.4          0.2  Setosa\n",
       "2           4.7          3.2           1.3          0.2  Setosa\n",
       "3           4.6          3.1           1.5          0.2  Setosa\n",
       "4           5.0          3.6           1.4          0.2  Setosa"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "499b22f6",
   "metadata": {},
   "source": [
    "Let's say we want to extract only `Setosa` species and save the respective dataframe to the new file 'setosa_dataset.csv'. This can be achieved with the `.to_csv()` function in the following way:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "8301054e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Subset only setosa species from the dataframe\n",
    "setosa_df = iris_df[iris_df['variety'] == 'Setosa']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "30ae5bfc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# We use the my_df.to_csv() function from Pandas to save dataframe to .csv\n",
    "setosa_df.to_csv(\n",
    "    os.path.join(core_path, 'setosa_dataset_pandas.csv'),  # specify path to file\n",
    "    sep=',',  # specify separator (default is comma)\n",
    "    index=False,  # indication not to write index\n",
    "    header=True  # indication to write header (column names)\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0426920",
   "metadata": {},
   "source": [
    "As you may notice, reading and writing files with Pandas is easier as compared to the `open/write/close` version described in the subsection 1.1. However, when dealing with large files or files with non dataframe-like content, the latter option might be more convenient."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fbd44a4b",
   "metadata": {},
   "source": [
    "**Side note:** *NumPy arrays, dictionaries and pickled objects can be efficiently stored with NumPy to .npy, .npz and .pickle formats with the `np.save()` function, and read afterwards with the `np.load()` function.*"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a0b65fc",
   "metadata": {},
   "source": [
    "### 3. Analyzing and visualizing the data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b4284bc",
   "metadata": {},
   "source": [
    "In this section, we will do some exploratory data analysis (aka EDA) and visualization for the iris dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "158f1ed8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>variety</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal_length  sepal_width  petal_length  petal_width variety\n",
       "0           5.1          3.5           1.4          0.2  Setosa\n",
       "1           4.9          3.0           1.4          0.2  Setosa\n",
       "2           4.7          3.2           1.3          0.2  Setosa\n",
       "3           4.6          3.1           1.5          0.2  Setosa\n",
       "4           5.0          3.6           1.4          0.2  Setosa"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d2902c9",
   "metadata": {},
   "source": [
    "First, let's start with summary statistics for features of the dataset:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "73f3d9dc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>5.843333</td>\n",
       "      <td>3.057333</td>\n",
       "      <td>3.758000</td>\n",
       "      <td>1.199333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.828066</td>\n",
       "      <td>0.435866</td>\n",
       "      <td>1.765298</td>\n",
       "      <td>0.762238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>4.300000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>5.100000</td>\n",
       "      <td>2.800000</td>\n",
       "      <td>1.600000</td>\n",
       "      <td>0.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>5.800000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>4.350000</td>\n",
       "      <td>1.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.400000</td>\n",
       "      <td>3.300000</td>\n",
       "      <td>5.100000</td>\n",
       "      <td>1.800000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>7.900000</td>\n",
       "      <td>4.400000</td>\n",
       "      <td>6.900000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       sepal_length  sepal_width  petal_length  petal_width\n",
       "count    150.000000   150.000000    150.000000   150.000000\n",
       "mean       5.843333     3.057333      3.758000     1.199333\n",
       "std        0.828066     0.435866      1.765298     0.762238\n",
       "min        4.300000     2.000000      1.000000     0.100000\n",
       "25%        5.100000     2.800000      1.600000     0.300000\n",
       "50%        5.800000     3.000000      4.350000     1.300000\n",
       "75%        6.400000     3.300000      5.100000     1.800000\n",
       "max        7.900000     4.400000      6.900000     2.500000"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_df.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06d771a6",
   "metadata": {},
   "source": [
    "**Exercise 1.** Look into the output of the `.describe()` function. What feature has the largest mean value? What about standard deviation?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "3fe14318",
   "metadata": {},
   "outputs": [],
   "source": [
    "# write your answer here"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2174089d",
   "metadata": {},
   "source": [
    "-----"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6cadc263",
   "metadata": {},
   "source": [
    "Let's check if there is any dependency between the lengths and widths of petals and sepals by using the `.scatter()` plot function from the `matplotlib` library. First, we create the figure object by definging figure (`fig`) and axes (`ax`). Axes can be either a single object, or an array of Axes objects if several subplots are created. Check out the [documentation](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html) to know more about creating figures with matplotlib."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "25b2c495",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(5, 5))  # initialize a figure\n",
    "ax.scatter(\n",
    "    iris_df['petal_length'],  # plot petal length on the x axis \n",
    "    iris_df['petal_width'],  # plot petal width on the y axis\n",
    "    color='lightgray'\n",
    ")\n",
    "ax.set_xlabel('Petal length', size=12)  # annotate x axis, specify the text size\n",
    "ax.set_ylabel('Petal width', size=12)  # annotate y axis\n",
    "plt.title('Petal length vs width', size=12)  # add a title to the plot and specify its size\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "da0eb737",
   "metadata": {},
   "source": [
    "There is a clear linear dependency bertween the two features. Let's get some numerical value for this dependency by calculating Pearson correlation with the `.pearsonr()` function from the [`scipy.stats`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html) package:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "7018cc55",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Correlation = 0.9628654314027961 with the respective pvalue = 4.6750039073275495e-86\n"
     ]
    }
   ],
   "source": [
    "correlation, corr_pvalue = scipy.stats.pearsonr(\n",
    "    iris_df['petal_length'],\n",
    "    iris_df['petal_width']\n",
    ")\n",
    "if corr_pvalue < 0.05:\n",
    "    print(\n",
    "        'Correlation =', correlation,\n",
    "        'with the respective pvalue =', corr_pvalue)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b2762f5",
   "metadata": {},
   "source": [
    "**Side note:** *do not forget to check function parameters before using it!*"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d1bef423",
   "metadata": {},
   "source": [
    "Since the number of features and samples is not huge, we can look into all possible pairwise relationships between the features in the dataset with the `.pairplot()` function from the `seaborn` library:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "01a41ea7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.PairGrid at 0x1537645ada30>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 20 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.pairplot(iris_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d81cbbc4",
   "metadata": {},
   "source": [
    "**Exercise 2.**\n",
    "1. How do you call the plots visualized on the diadonal of the output figure? What do they represent?\n",
    "2. Look into parameters of the`.pairplot()` function and find a way how to color the data based on the iris species (the last column of the `iris_df`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "bc23254f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# provide answers and the code in this cell"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9caa205b",
   "metadata": {},
   "source": [
    "-----"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1827e5eb",
   "metadata": {},
   "source": [
    "Let's look into the sepal and petal length distributions and compare them side by side. To visualize figures side by side, we will use the `plt.subplots()` function with parameters `nrows=1` and `ncols=2`, indicating the number of rows and columns for the subplot grid respectively.\n",
    "\n",
    "Be careful with the Axes! Note that since we are creating more that one plot, ax will be an array of Axes object (e.g., `ax1, ax2 = ax` in our case, or alternatively, individual axes can be extracted with indexing: `ax[0], ax[1]`, as in the example below). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "fff6ddc3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Initialize a figure with two subplots sidy by side:\n",
    "# fig, (ax1, ax2) = plt.subplots(1, 2)   # or as follows:\n",
    "fig, ax = plt.subplots(\n",
    "    1,  # number of rows with plots\n",
    "    2,  # number of columns with plots\n",
    "    figsize=(10, 5),  # full figure size, in our case each plot will occupy half of x axis\n",
    "    sharex=True,  # set x axis to be the same for two plots\n",
    "    sharey=True,  # set y axis to be the same for two plots\n",
    ")\n",
    "# in the first subplot, visualise the distribution of sepal lengths\n",
    "ax[0].hist(\n",
    "    iris_df['sepal_length'],\n",
    "    bins=20,\n",
    "    color='lightgray',\n",
    ")\n",
    "ax[0].set_xlabel('Sepal length', size=12)  # annotate x axis, specify the text size\n",
    "ax[0].set_ylabel('Frequency', size=12)  # annotate y axis, specify the text size\n",
    "ax[0].set_title('Sepal length distribution', size=12)  # add a title to the plot and specify its size\n",
    "\n",
    "# in the second subplot, visualise the distribution of petal lengths\n",
    "ax[1].hist(\n",
    "    iris_df['petal_length'],\n",
    "    bins=20,\n",
    "    color='lightblue',\n",
    ")\n",
    "ax[1].set_xlabel('Petal length', size=12)\n",
    "ax[1].set_title('Petal length distribution', size=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0acbb77e",
   "metadata": {},
   "source": [
    "**Side note:** *The list of named colors available in matplotlib can be found via [this](https://matplotlib.org/stable/gallery/color/named_colors.html) link. Custom colors can be defined in RGB, RGBA formats or with hex identifiers, see [this](https://matplotlib.org/stable/tutorials/colors/colors.html) link for more details.*"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fd7d97d",
   "metadata": {},
   "source": [
    "**Exercise 3.** let's plot the two density plots (with `.hist()` function and `density=True` parameter) in *one figure*. Complete the code in the cell below by coloring the histogram with the same colors as in the example above, set labels, add figure legend outside the axes, specify labels of x and y axes and the figure title."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "27404ae8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAATwAAAEvCAYAAADYR30zAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAQSElEQVR4nO3df6zdd13H8eeLjgkMHMZdzWw72mhZ0gBheC0oBhe2mc6RlgQwnYFAAjYmVIczahfNMmdiBhrUPxpDM6aoQBkDzdVdLUS2IMZB78b40ZZqKYPeiu4yxnAqjMLbP+7pcnZ3x/323u/tOe3n+Uhuer7f76fnvHLv7auf7/n+OKkqJKkFTxt1AEk6Uyw8Sc2w8CQ1w8KT1AwLT1IzLDxJzThvVC980UUX1YYNG0b18urBkSPzf1566WhznE2ODL5pl/pNWzX33nvv16pqYrFtIyu8DRs2MDMzM6qXVw8uv3z+z7vvHmWKs8vlg2/a3X7TVk2SLz/VNndpJTXDwpPUDAtPUjMsPEnNsPAkNcPCk9QMC09SMyw8Sc2w8CQ1w8KT1AwLT1IzRnYt7UjddOEi6x458zkknVHO8CQ1w8KT1AwLT1IzLDxJzbDwJDXDwpPUDAtPUjMsPEnNsPAkNcPCk9SMToWXZGuSI0mOJtn9FGN+McmhJAeTvK/fmJK0ckteS5tkDbAHuAqYBQ4kmaqqQ0NjNgE3AC+vqoeT/MhqBZak5eoyw9sCHK2qY1X1GLAP2L5gzC8De6rqYYCqerDfmJK0cl0Kby1wfGh5drBu2POB5yf5lyT3JNnaV0BJ6ktft4c6D9gEXA6sAz6e5IVV9Y3hQUl2AjsBLrnkkp5eWpK66TLDOwGsH1peN1g3bBaYqqrvVNWXgH9jvgCfoKr2VtVkVU1OTEwsN7MkLUuXwjsAbEqyMcn5wA5gasGYv2V+dkeSi5jfxT3WX0xJWrklC6+qTgK7gP3AYeD2qjqY5OYk2wbD9gMPJTkE3AX8ZlU9tFqhJWk5Or2HV1XTwPSCdTcOPS7g+sGXJI0lr7SQ1AwLT1IzLDxJzWjzYxrVjA2773zSugduuWYESTQOnOFJaoaFJ6kZFp6kZlh4kpph4UlqhoUnqRkWnqRmWHiSmmHhSWqGhSepGRaepGZYeJKaYeFJaoaFJ6kZFp6kZng/PGmFvOfe2cMZnqRmWHiSmmHhSWqGhSepGRaepGZYeJKaYeFJaoaFJ6kZFp6kZlh4kpph4UlqhoUnqRmdCi/J1iRHkhxNsnuR7W9KMpfk/sHXW/qPKkkrs+TdUpKsAfYAVwGzwIEkU1V1aMHQD1TVrlXIKEm96DLD2wIcrapjVfUYsA/YvrqxJKl/XQpvLXB8aHl2sG6h1yT5bJI7kqzvJZ0k9aivgxZ/B2yoqhcBHwXes9igJDuTzCSZmZub6+mlJambLoV3Ahiesa0brHtcVT1UVd8eLN4K/ORiT1RVe6tqsqomJyYmlpNXkpatS+EdADYl2ZjkfGAHMDU8IMnFQ4vbgMP9RZSkfix5lLaqTibZBewH1gC3VdXBJDcDM1U1Bfxakm3ASeDrwJtWMbMkLUunD/GpqmlgesG6G4ce3wDc0G80SeqXV1pIaoaFJ6kZfi6tdJbw829XzhmepGZYeJKaYeFJaoaFJ6kZFp6kZlh4kpph4UlqhoUnqRkWnqRmWHiSmmHhSWqGhSepGRaepGZYeJKaYeFJaoaFJ6kZFp6kZlh4kpph4UlqhoUnqRkWnqRmWHiSmmHhSWqGhSepGRaepGZYeJKaYeFJaoaFJ6kZFp6kZnQqvCRbkxxJcjTJ7u8z7jVJKslkfxElqR/nLTUgyRpgD3AVMAscSDJVVYcWjHsOcB3wydUIKvXmpgsXWffImc+hM67LDG8LcLSqjlXVY8A+YPsi434feDvwrR7zSVJvuhTeWuD40PLsYN3jkrwEWF9Vd36/J0qyM8lMkpm5ubnTDitJK7HigxZJnga8E/iNpcZW1d6qmqyqyYmJiZW+tCSdli6FdwJYP7S8brDulOcALwDuTvIA8DJgygMXksZNl8I7AGxKsjHJ+cAOYOrUxqp6pKouqqoNVbUBuAfYVlUzq5JYkpZpycKrqpPALmA/cBi4vaoOJrk5ybbVDihJfVnytBSAqpoGphesu/Epxl6+8liS1D+vtJDUDAtPUjMsPEnNsPAkNcPCk9QMC09SMyw8Sc2w8CQ1w8KT1AwLT1IzLDxJzbDwJDXDwpPUDAtPUjMsPEnNsPAkNcPCk9QMC09SMyw8Sc2w8CQ1w8KT1AwLT1IzLDxJzbDwJDXDwpPUDAtPUjMsPEnNsPAkNcPCk9QMC09SMyw8Sc04r8ugJFuBPwXWALdW1S0Ltv8K8Fbgu8CjwM6qOtRzVunJbrpwkXWPnPkcOissOcNLsgbYA1wNbAauTbJ5wbD3VdULq+rFwDuAd/YdVJJWqssu7RbgaFUdq6rHgH3A9uEBVfXNocULgOovoiT1o8su7Vrg+NDyLPDShYOSvBW4HjgfeGUv6SSpR70dtKiqPVX148BvA7+72JgkO5PMJJmZm5vr66UlqZMuhXcCWD+0vG6w7qnsA1692Iaq2ltVk1U1OTEx0TmkJPWhS+EdADYl2ZjkfGAHMDU8IMmmocVrgH/vL6Ik9WPJ9/Cq6mSSXcB+5k9Lua2qDia5GZipqilgV5Irge8ADwNvXM3QkrQcnc7Dq6ppYHrBuhuHHl/Xcy7p7LbY+YEAXAbAht13PmnLA7dcs4qBBF5pIakhFp6kZlh4kpph4UlqhoUnqRkWnqRmWHiSmmHhSWqGhSepGRaepGZYeJKaYeFJaoaFJ6kZFp6kZlh4kprR6X54ks5O3nfviZzhSWqGhSepGRaepGZYeJKaYeFJaoaFJ6kZFp6kZngenlbHYp/LetMjZz6HNMQZnqRmWHiSmmHhSWqGhSepGRaepGZYeJKaYeFJasbZfx6e53upR4vdPw7avofcuaTTDC/J1iRHkhxNsnuR7dcnOZTks0n+Kcnz+o8qSSuzZOElWQPsAa4GNgPXJtm8YNingcmqehFwB/COvoNK0kp1meFtAY5W1bGqegzYB2wfHlBVd1XV/w4W7wHW9RtTklauS+GtBY4PLc8O1j2VNwP/sJJQkrQaej1okeT1wCTwc0+xfSewE+CSSy7p86UlaUldZngngPVDy+sG654gyZXA7wDbqurbiz1RVe2tqsmqmpyYmFhOXklati4zvAPApiQbmS+6HcAvDQ9IchnwLmBrVT3Ye0q1wVOMtMqWnOFV1UlgF7AfOAzcXlUHk9ycZNtg2B8CzwY+mOT+JFOrlliSlqnTe3hVNQ1ML1h349DjK3vOJUm989IySc2w8CQ1w8KT1AwLT1IzLDxJzTj7bw8lqVeL3SLrXLk9ljM8Sc2w8CQ1w8KT1AwLT1IzLDxJzbDwJDXDwpPUDAtPUjMsPEnNsPAkNcPCk9QMC09SMyw8Sc2w8CQ1w8KT1Azvh6ezxqL3aXvGCIKsFj+Xd9U5w5PUDAtPUjMsPEnNsPAkNcPCk9QMC09SMyw8Sc3wPLyuPEeqbf78ezWqz751hiepGZ0KL8nWJEeSHE2ye5Htr0hyX5KTSV7bf0xJWrklCy/JGmAPcDWwGbg2yeYFw74CvAl4X98BJakvXd7D2wIcrapjAEn2AduBQ6cGVNUDg23fW4WMktSLLru0a4HjQ8uzg3WSdFY5owctkuxMMpNkZm5u7ky+tCR1KrwTwPqh5XWDdaetqvZW1WRVTU5MTCznKSRp2boU3gFgU5KNSc4HdgBTqxtLkvq3ZOFV1UlgF7AfOAzcXlUHk9ycZBtAkp9KMgu8DnhXkoOrGVqSlqPTlRZVNQ1ML1h349DjA8zv6krS2PJKC0nNsPAkNcPCk9QMC09SM7w9lLpZ7PZILP/2SOf8Ry5qLDnDk9QMC09SMyw8Sc2w8CQ1w8KT1AwLT1IzLDxJzfA8PKk1DX/kpDM8Sc2w8CQ1w8KT1AwLT1IzLDxJzbDwJDXDwpPUDM/Da1HD52Gdc8bgZ7novQ1vueaMZujKGZ6kZlh4kpph4UlqhoUnqRkWnqRmWHiSmmHhSWqG5+Gd7cbgPCw14Bz5PXOGJ6kZFp6kZlh4kprRqfCSbE1yJMnRJLsX2f4DST4w2P7JJBt6TypJK7Rk4SVZA+wBrgY2A9cm2bxg2JuBh6vqJ4A/Bt7ed1BJWqkuM7wtwNGqOlZVjwH7gO0LxmwH3jN4fAdwRZL0F1OSVq5L4a0Fjg8tzw7WLTqmqk4CjwA/3EdASepLqur7D0heC2ytqrcMlt8AvLSqdg2N+fxgzOxg+YuDMV9b8Fw7gZ2DxUuBIx1zXgR8bclRZ9445jJTN2bq5mzM9LyqmlhsQ5cTj08A64eW1w3WLTZmNsl5wIXAQwufqKr2Ans7vOYTJJmpqsnT/XurbRxzmakbM3VzrmXqskt7ANiUZGOS84EdwNSCMVPAGwePXwt8rJaaOkrSGbbkDK+qTibZBewH1gC3VdXBJDcDM1U1Bbwb+KskR4GvM1+KkjRWOl1LW1XTwPSCdTcOPf4W8Lp+oz3Bae8GnyHjmMtM3Zipm3Mq05IHLSTpXOGlZZKaMdaFl+S2JA8OTnsZC0nWJ7kryaEkB5NcNwaZnpHkU0k+M8j0e6POdEqSNUk+neTvR53llCQPJPlckvuTzIw6D0CS5ya5I8kXkhxO8tMjznPp4Ptz6uubSd42ykyDXL8++B3/fJL3J3nGaf39cd6lTfIK4FHgL6vqBaPOA5DkYuDiqrovyXOAe4FXV9WhEWYKcEFVPZrk6cAngOuq6p5RZTolyfXAJPCDVfWqUeeB+cIDJheeJzpKSd4D/HNV3To4G+JZVfWNEccCHr+89ATz59Z+eYQ51jL/u725qv4vye3AdFX9RdfnGOsZXlV9nPmjvmOjqr5aVfcNHv83cJgnX3lypjNVVT06WHz64Gvk/5MlWQdcA9w66izjLMmFwCuYP9uBqnpsXMpu4Argi6MsuyHnAc8cnO/7LOA/Tucvj3XhjbvBXWEuAz454iindh3vBx4EPlpVI88E/AnwW8D3RpxjoQI+kuTewdU/o7YRmAP+fLD7f2uSC0YdasgO4P2jDlFVJ4A/Ar4CfBV4pKo+cjrPYeEtU5JnAx8C3lZV3xx1nqr6blW9mPkrYbYkGelbAEleBTxYVfeOMsdT+NmqegnzdwB66+Ctk1E6D3gJ8GdVdRnwP8CTbsM2CoPd623AB8cgyw8xf6OSjcCPARckef3pPIeFtwyD98k+BLy3qj486jzDBrtCdwFbRxzl5cC2wftl+4BXJvnr0UaaN5gpUFUPAn/D/B2BRmkWmB2ald/BfAGOg6uB+6rqv0YdBLgS+FJVzVXVd4APAz9zOk9g4Z2mwQGCdwOHq+qdo84DkGQiyXMHj58JXAV8YZSZquqGqlpXVRuY3yX6WFWd1v/GqyHJBYODTQx2G38eGOlZAFX1n8DxJJcOVl0BjOwg2ALXMga7swNfAV6W5FmDf4dXMP8eemdjXXhJ3g/8K3Bpktkkbx51JuZnLm9gfsZy6pD9L4w408XAXUk+y/y1zx+tqrE5DWTM/CjwiSSfAT4F3FlV/zjiTAC/Crx38DN8MfAHo43z+H8IVzE/kxq5wQz4DuA+4HPM99dpXXUx1qelSFKfxnqGJ0l9svAkNcPCk9QMC09SMyw8Sc2w8CQ1w8KT1AwLT1Iz/h/uEjK4yGJc6QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n",
    "ax.hist(\n",
    "    [iris_df['sepal_length'], iris_df['petal_length']],  # two datasets in one list\n",
    "    bins=20,\n",
    "    density=True,  # plot density value instead of frequencies\n",
    "    # specify colors for the respective datasets\n",
    "    # set dataset labels\n",
    ")\n",
    "\n",
    "# Indicate with vertical lines mean Sepal and Petal lengths respectively:\n",
    "ax.axvline(\n",
    "    np.mean(iris_df['sepal_length']),  # calculate the mean with NumPy\n",
    "    color='black',\n",
    "    label='Mean sepal length'\n",
    ")\n",
    "ax.axvline(\n",
    "    np.mean(iris_df['petal_length']),  # calculate the mean with NumPy\n",
    "    color='blue',\n",
    "    label='Mean petal length'\n",
    ")\n",
    "# add x label\n",
    "# add y label\n",
    "# add title\n",
    "# add legend\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4bd2a36c",
   "metadata": {},
   "source": [
    "-----"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba4b7e48",
   "metadata": {},
   "source": [
    "**Exercise 4.** We have already tried calculating correlation and the reapective p-value with the `scipy.stats` package. Now we want to know whether there is a statistically significant difference in means of sepal lengths for Setosa and Virginica species. To do that, we will use the [t-test](https://www.scribbr.com/statistics/t-test/) for independent samples, which is already implemented in the `scipy.stats` package. Find the respective function, use it on the sepal lengths for Setosa and Virginica species, print the value of the respective statistics and p-value. What is your conclusion?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "4abc9faa",
   "metadata": {},
   "outputs": [],
   "source": [
    "# provide the code in this cell"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1787fd33",
   "metadata": {},
   "source": [
    "-----"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9bee082",
   "metadata": {},
   "source": [
    "Finally, we will see how to group data with Pandas `.groupby()` function. To learn more about its functionality, see [this](https://realpython.com/pandas-groupby/) link.\n",
    "\n",
    "\n",
    "For example, imagine we want to know the average values for all features per iris species. To do that, we will provide the column name for aggregation by specifying it as the first argument of the `.groupby()` function. This will yield the `pandas.core.groupby.generic.DataFrameGroupBy` object containing iris variety and the respecive dataframe. Later, we can use the `.mean()` function to aggregate across all samples for each feature and output the result into one dataframe:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "f22afb1e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>variety</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Setosa</th>\n",
       "      <td>5.006</td>\n",
       "      <td>3.428</td>\n",
       "      <td>1.462</td>\n",
       "      <td>0.246</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Versicolor</th>\n",
       "      <td>5.936</td>\n",
       "      <td>2.770</td>\n",
       "      <td>4.260</td>\n",
       "      <td>1.326</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Virginica</th>\n",
       "      <td>6.588</td>\n",
       "      <td>2.974</td>\n",
       "      <td>5.552</td>\n",
       "      <td>2.026</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            sepal_length  sepal_width  petal_length  petal_width\n",
       "variety                                                         \n",
       "Setosa             5.006        3.428         1.462        0.246\n",
       "Versicolor         5.936        2.770         4.260        1.326\n",
       "Virginica          6.588        2.974         5.552        2.026"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_df.groupby('variety').mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a22ec4a",
   "metadata": {},
   "source": [
    "To have a better understanding of the `.groupby()` function content, let's iterate over it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "c86a8b5d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------------------\n",
      "Iris variety is Setosa\n",
      "   sepal_length  sepal_width  petal_length  petal_width variety\n",
      "0           5.1          3.5           1.4          0.2  Setosa\n",
      "1           4.9          3.0           1.4          0.2  Setosa\n",
      "2           4.7          3.2           1.3          0.2  Setosa\n",
      "3           4.6          3.1           1.5          0.2  Setosa\n",
      "4           5.0          3.6           1.4          0.2  Setosa\n",
      "--------------------\n",
      "Iris variety is Versicolor\n",
      "    sepal_length  sepal_width  petal_length  petal_width     variety\n",
      "50           7.0          3.2           4.7          1.4  Versicolor\n",
      "51           6.4          3.2           4.5          1.5  Versicolor\n",
      "52           6.9          3.1           4.9          1.5  Versicolor\n",
      "53           5.5          2.3           4.0          1.3  Versicolor\n",
      "54           6.5          2.8           4.6          1.5  Versicolor\n",
      "--------------------\n",
      "Iris variety is Virginica\n",
      "     sepal_length  sepal_width  petal_length  petal_width    variety\n",
      "100           6.3          3.3           6.0          2.5  Virginica\n",
      "101           5.8          2.7           5.1          1.9  Virginica\n",
      "102           7.1          3.0           5.9          2.1  Virginica\n",
      "103           6.3          2.9           5.6          1.8  Virginica\n",
      "104           6.5          3.0           5.8          2.2  Virginica\n"
     ]
    }
   ],
   "source": [
    "for iris_variety, variety_df in iris_df.groupby('variety'):\n",
    "    print('-' * 20)\n",
    "    print('Iris variety is', iris_variety)\n",
    "    print(variety_df.head())\n",
    "    # You can process the subsetted data in any way you want\n",
    "    # in this loop"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c085bbcd",
   "metadata": {},
   "source": [
    "Now you are ready for the genetics and genomics exercises!"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python-3.9.5",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
