Skip to content

Instantly share code, notes, and snippets.

@ceffiong
Created May 17, 2021 11:15
Show Gist options
  • Save ceffiong/7cdf4606e721fab73209cf544de35d3d to your computer and use it in GitHub Desktop.
Save ceffiong/7cdf4606e721fab73209cf544de35d3d to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center>\n",
" <img src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DA0101EN-SkillsNetwork/labs/Module%203/images/IDSNlogo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n",
"</center>\n",
"\n",
"# Data Analysis with Python\n",
"\n",
"Estimated time needed: **30** minutes\n",
"\n",
"## Objectives\n",
"\n",
"After completing this lab you will be able to:\n",
"\n",
"- Explore features or charecteristics to predict price of car\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Table of content</h2>\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"<ol>\n",
" <li><a href=\"#import_data\">Import Data from Module</a></li>\n",
" <li><a href=\"#pattern_visualization\">Analyzing Individual Feature Patterns using Visualization</a></li>\n",
" <li><a href=\"#discriptive_statistics\">Descriptive Statistical Analysis</a></li>\n",
" <li><a href=\"#basic_grouping\">Basics of Grouping</a></li>\n",
" <li><a href=\"#correlation_causation\">Correlation and Causation</a></li>\n",
" <li><a href=\"#anova\">ANOVA</a></li>\n",
"</ol>\n",
"\n",
"</div>\n",
" \n",
"<hr>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What are the main characteristics which have the most impact on the car price?</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"import_data\">1. Import Data from Module 2</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries \n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" load data and store in dataframe df:\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"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>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>hatchback</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"path='https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DA0101EN-SkillsNetwork/labs/Data%20files/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"pattern_visualization\">2. Analyzing Individual Feature Patterns using Visualization</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To install seaborn we use the pip which is the python package manager.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"! pip install seaborn"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import visualization packages \"Matplotlib\" and \"Seaborn\", don't forget about \"%matplotlib inline\" to plot in a Jupyter notebook.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How to choose the right visualization method?</h4>\n",
"<p>When visualizing individual variables, it is important to first understand what type of variable you are dealing with. This will help us find the right visualization method for that variable.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"symboling int64\n",
"normalized-losses int64\n",
"make object\n",
"aspiration object\n",
"num-of-doors object\n",
"body-style object\n",
"drive-wheels object\n",
"engine-location object\n",
"wheel-base float64\n",
"length float64\n",
"width float64\n",
"height float64\n",
"curb-weight int64\n",
"engine-type object\n",
"num-of-cylinders object\n",
"engine-size int64\n",
"fuel-system object\n",
"bore float64\n",
"stroke float64\n",
"compression-ratio float64\n",
"horsepower float64\n",
"peak-rpm float64\n",
"city-mpg int64\n",
"highway-mpg int64\n",
"price float64\n",
"city-L/100km float64\n",
"horsepower-binned object\n",
"diesel int64\n",
"gas int64\n",
"dtype: object\n"
]
}
],
"source": [
"# list the data types for each column\n",
"print(df.dtypes)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h3>Question #1:</h3>\n",
"\n",
"<b>What is the data type of the column \"peak-rpm\"? </b>\n",
"\n",
"</div>\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dtype('float64')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"# float64\n",
"df['peak-rpm'].dtypes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details><summary>Click here for the solution</summary>\n",
"\n",
"```python\n",
"float64\n",
"```\n",
"\n",
"</details>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For example, we can calculate the correlation between variables of type \"int64\" or \"float64\" using the method \"corr\":\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The diagonal elements are always one; we will study correlation more precisely Pearson correlation in-depth at the end of the notebook.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2: </h1>\n",
"\n",
"<p>Find the correlation between the following columns: bore, stroke,compression-ratio , and horsepower.</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[['bore','stroke' ,'compression-ratio','horsepower']]</p>\n",
"</div>\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"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>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" bore stroke compression-ratio horsepower\n",
"bore 1.000000 -0.055390 0.001263 0.566936\n",
"stroke -0.055390 1.000000 0.187923 0.098462\n",
"compression-ratio 0.001263 0.187923 1.000000 -0.214514\n",
"horsepower 0.566936 0.098462 -0.214514 1.000000"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[['bore','stroke' ,'compression-ratio','horsepower']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details><summary>Click here for the solution</summary>\n",
"\n",
"```python\n",
"df[['bore', 'stroke', 'compression-ratio', 'horsepower']].corr()\n",
"```\n",
"\n",
"</details>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Continuous numerical variables:</h2> \n",
"\n",
"<p>Continuous numerical variables are variables that may contain any value within some range. Continuous numerical variables can have the type \"int64\" or \"float64\". A great way to visualize these variables is by using scatterplots with fitted lines.</p>\n",
"\n",
"<p>In order to start understanding the (linear) relationship between an individual variable and the price. We can do this by using \"regplot\", which plots the scatterplot plus the fitted regression line for the data.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's see several examples of different linear relationships:\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Positive linear relationship</h4>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's find the scatterplot of \"engine-size\" and \"price\" \n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(0.0, 56822.75212113688)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Engine size as potential predictor variable of price\n",
"sns.regplot(x=\"engine-size\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>As the engine-size goes up, the price goes up: this indicates a positive direct correlation between these two variables. Engine size seems like a pretty good predictor of price since the regression line is almost a perfect diagonal line.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can examine the correlation between 'engine-size' and 'price' and see it's approximately 0.87\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"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>engine-size</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>1.000000</td>\n",
" <td>0.872335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>0.872335</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" engine-size price\n",
"engine-size 1.000000 0.872335\n",
"price 0.872335 1.000000"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[[\"engine-size\", \"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Highway mpg is a potential predictor variable of price \n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='highway-mpg', ylabel='price'>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZoAAAEGCAYAAABcolNbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABDsUlEQVR4nO3de5ycdXnw/881p53ZY3aTnSTkSEhCFlAQAhrFGElUPPzUWtTQp8rTYkFrH/CpbdW2j/Kz9am0thZqteChqFgQqS1URWsSMaIJGARE2IWEnEnYTbKbPc157uv5475nM7uZndnJ7uzMbq43r3nt7HfmnvnOneW+5nu6vqKqGGOMMZXiq3YFjDHGzG4WaIwxxlSUBRpjjDEVZYHGGGNMRVmgMcYYU1GBaleg1sybN0+XL19e7WoYY8yM8vjjjx9X1fZCj1mgGWP58uXs2rWr2tUwxpgZRUQOjPeYdZ0ZY4ypKAs0xhhjKsoCjTHGmIqyQGOMMaaiLNAYY4ypKJt1NkUe7urhju17OdQXY0lrPTeuX8GGNdFqV8sYY6rOWjRT4OGuHj754DP0DCaYEwnSM5jgkw8+w8NdPdWumjHGVJ0Fmilwx/a9BP1CfSiAiPsz6Bfu2L632lUzxpiqs0AzBQ71xYgE/aPKIkE/h/tiVaqRMcbUDgs0U2BJaz3xdHZUWTydZXFrfZVqZIwxtcMCzRS4cf0K0lkllsqg6v5MZ5Ub16+odtWMMabqLNBMgQ1ronz67RcSbQrTH08TbQrz6bdfaLPOjDEGm948ZTasiVpgMcaYAqxFY4wxpqIs0BhjjKkoCzTGGGMqygKNMcaYirJAY4wxpqIs0BhjjKkom95sAMs+bYypHGvRGMs+bYypKGvRTJGZ3CLIzz4NUB8KEEtluGP73hnzGYwxtctaNFNgprcILPu0MaaSLNBMgZm+H41lnzbGVFLVA42I+EXkCRH5nvd7m4j8WER2ez9b8577CRHZIyLPicib8sovE5GnvcduFxHxyutE5Nte+aMisrwSn2Gmtwgs+7QxppKqHmiAm4HOvN8/DmxV1VXAVu93ROQCYDNwIXA18EURyV3dvwTcAKzybld75dcDfaq6Evg8cGslPsBMbxFY9mljTCVVdTKAiCwG3gp8Bvhjr/gdwAbv/teBh4GPeeX3qmoS2Ccie4ArRGQ/0KyqO7zX/AbwTuAh75hbvNe6H/iCiIiq6lR+jhvXr+CTDz5DLJUhEvQTT2dnXIvAsk8bYyql2i2afwT+DHDyyuar6lEA72fu6rcIOJT3vMNe2SLv/tjyUceoagboB+aOrYSI3CAiu0Rk17Fjx8r+ENYiMMaY8VWtRSMibwN6VPVxEdkwkUMKlGmR8mLHjC5QvRO4E2Dt2rVn1NqxFoExxhRWza6z1wBvF5G3AGGgWUTuBrpFZKGqHhWRhUBujvBhYEne8YuBI1754gLl+cccFpEA0AL0VuoDGWOMOV3Vus5U9ROqulhVl+MO8m9T1d8FHgSu8552HfCAd/9BYLM3k+xc3EH/x7zutUEReZU32+z9Y47JvdY13ntM6fiMMcaY4moxM8BngftE5HrgIPBuAFV9RkTuA54FMsCHVTU31etDwF1ABHcSwENe+VeBb3oTB3pxA5oxxphpJPYFf7S1a9fqrl27ql0NY4yZUUTkcVVdW+ixas86M8YYM8vVYteZmYVmctJRY8zkWKCZJWr5Qp5LOhr0y6iko5+GmqmjMaZyrOtsFqj17NEzPemoMWZyLNDMArV+IZ/pSUeNMZNjXWfTpJJdW4f6YsyJBEeV1dKFfElrPT2DiZGN1WBmJR01xkyOtWimwVR0bT3c1cO1d+7kylu3ce2dO0cdW+vZo20bAmPObhZopsFku7ZKBapav5Bb0lFjzm7WdTYNJtK1VaxrLT9QAdSHAsRSGe7Yvnckmeenvecd7ouxuMZmnYElHTXmbGaBZhqUGqMoNf13IoHKLuTGmFplXWfToFTXVqmutVofgzHGmGIs0EyDUmMUh/piZLIOe48N0fXSAHuPDZHJOiMtllofgzHGmGKs62yaFOvaaqoLsLtnCL9P8PuEjKO8eDLBqmjjyLG1PgZTSi1nLjDGVJYFmhowkkE7l0hbx5Qzs8dgLAWNMWc36zqrAUOpLIvmhAn4hawqAb+waE6Y4VS29MEzQK1nLjDGVJa1aGpAblbaivbGkbJYKkO0KVzFWk2dWs9cYIypLGvR1IDZPthvs+aMObtZoKkBs33l/I3rVzAQT7O7e5DOo/3s7h5kIJ6eNYHUGFOcdZ3ViFKD/TN91pYCCIgIyKl5D8aY2c9aNDNAre83U8od2/fSEgmyKtrEmgXNrIo20RIJ2mQAY84SFmhmgJk+a6vUglRjzOxmgWYGmOkbhzXVBXjxZIKMo6MWpDbWWc+tMWcDCzQzwEyftTVqQWruxugFqcaY2csCzQwwHdOfi22sNlmzfUGqMaY4CzQzQKWnP1d6ssGS1noCfh8r2htZs6CZFe2NBPy+GdMiM8ZMTtU6yUUkDGwH6rx63K+qnxKRNuDbwHJgP/AeVe3zjvkEcD2QBW5S1R955ZcBdwER4AfAzaqqIlIHfAO4DDgBvFdV90/TR5xSlcx1Vmpjtcm6cf0KPvngM8RSGSJBP/F0dlYtSDXGFFfNFk0SuEpVLwYuAa4WkVcBHwe2quoqYKv3OyJyAbAZuBC4GviiiORGyL8E3ACs8m5Xe+XXA32quhL4PHDrNHyuGafSkw1m+4JUY0xxVWvRqDsSPOT9GvRuCrwD2OCVfx14GPiYV36vqiaBfSKyB7hCRPYDzaq6A0BEvgG8E3jIO+YW77XuB74gIqI2Cj1KqR1Ap8JMzj5tjJmcqo7RiIhfRJ4EeoAfq+qjwHxVPQrg/cxdnRYBh/IOP+yVLfLujy0fdYyqZoB+YG6xOqlC1jm74tBsz7VmjKmuqgYaVc2q6iXAYtzWyUVFni6FXqJIebFjRr+wyA0isktEdvUc6+Fgb4xjg0lSGafEJ5gdrGvLGFNJNbFiTlVPisjDuGMr3SKyUFWPishC3NYOuC2VJXmHLQaOeOWLC5TnH3NYRAJAC9Bb4P3vBO4EuOTSy1RVGUykGUykiYT8NIeDNMzyxYXWtWWMqZSqtWhEpF1E5nj3I8AmoAt4ELjOe9p1wAPe/QeBzSJSJyLn4g76P+Z1rw2KyKtERID3jzkm91rXANvKHZ+Jp7J0DyQ41BujP5bGOcu61YwxZrKq+TV9IfB1b+aYD7hPVb8nIjuA+0TkeuAg8G4AVX1GRO4DngUywIdVNbfi70Ocmt78kHcD+CrwTW/iQC/urLUzks46nBhO0htL0VgXoDkSoC7gL32gAeD2Lc/zlUf2MZzK0hDy84Erz+WmTaurXS1jzDQQm4A12iWXXqbf/dFPJ/TccNBPcyRIQ8jvpr83Bd2+5Xlu27YHn4BPwFH3dvNVKy3YGDNLiMjjqrq20GOWGWASEuksPQMJDvXG6RtOnXWz1SbqK4/swycQ8Pnwic/76ZYbY2a/2T3CPU0yjkNfLMXJeJqGOnfyQDho3Wo5w6ksgTFfaXyC5Toz5ixhgWYKqSpDiQxDiQx1QT/N4QCNdYGzvlutIeSmnfHlnQZH3XJjzOxnXWcVkkxnOTaY5GBv7KzvVvvAlefiqNvyc9TxfrrlxpjZzwLNGAdPxHjo6aMMJTNT8npZR+mLpTjYG6NnMEEyc/Z1F920aTU3X7WSSNBPxnHzqNlEAGPOHjbrbIy6hat04XX/SNAvrFsxl40d83nluW2Exg4yTILNVjPGzDbFZp3ZGM0YzeEgdQEfyYzD9t3H2b77OA11fl63qp2NHVEuXjIH3ySDQyKdJZHOEvD5aAwHaAoHCPqtcWmMmZ2sRTPGJZdepnf/11Ye2XOCrZ3dPH6gj/zhlXmNIa5aE2VTx3zOa2+YshZJJOSnKTx7WzkPd/Vwx/a9HOqLsaS1nhvXr7CUN8bMIsVaNBZoxhi7YLN3OMXDzx1ja1c3nUcHRz132dx6NnVE2bhmPgtawlPy/gGfjyavlROYJa2c3A6eQb+M2vjMEncaM3tYoClDscwAL/bF2drVzZbOHg73xUc9dtE5zWzsiLJhdZSW+uCk6yEiNITcsZyZvibn2jt3nrbfTSyVIdoU5p4bXlXFmhljpooFmjJMJAWNqvJ89xBbOrv5yXPH6B1OjTzm9wmXL29l45r5vHrl3NN2rjwToYCP5kiQphm6JufKW7fhFzg+lCKVdQj5fcxrDOEo/OxjV1W7esaYKWCTAaaYiHD+gibOX9DEB193Hk8c7GNrVw8/232cWCrLzr297NzbSzjo48qV89jYEWXtsjb8vjMLEqmMw/HBJH3DuYSewRk1eaCpLsDuniH8PsHvEzKO8uLJBKuijdWumjFmGligmSS/T1i7vI21y9v4yMYsO/b2srWzm0f39ZJIO2zp7GFLZw9zIkE2nO/OXLtgYfMZtUyyjtIfT9MfT9NQF6A5HCQyA1bXj7Sac41nHVNujJnVLNBMobqgnw3nt7Ph/HYG4mm27z7G1s4enjrcz8l4mv988gj/+eQRFraE2dgRZdOa+SydW39G7zWczDCczBD0+2gOB3n8QC9f/tm+mpzVNZTKsmhOeFTX2YLGOst1ZsxZwsZoxihnm4CJ6hlIsK2rhy1dPew9NjzqsVXRRjZ1RHn9mijzGuvO6PUf29vLbdt2EwoIDaEAyYxTU7O6bDKAMbOfTQYoQyUCTb59x4fZ2tnN1q4eugeSI+UCvGLpHDZ2zOe1q+bRWMbW0X/87ac4MZwcmXggIqQyWeY3h7n3xnVT/RHKZtObjZn9LNCUYe3atfrznY8ST2WJpdwV/JXgqPLMiwNs6ermp88dYyBxKrdauelvrv3yTprDAYRT4z6Km0n6eze9tiYmD+QWbB7ui7G4xrr2jDGTZ7POylQX8FMX8DOn3h2Aj6UyI4HHmaLA7BPhZYtbeNniFv7o9SvZtb+PLZ3d/OKFE2Wnv1nYHBnVogFIpB3mN0dGJg/Uh9ztp/O7r6rBvtYYc/axFs0Ya9eu1V27dhV8TFVJZhyGkxliqSzprDPl7x9LZcpOf5Mbown4hHDQRyLtkHGUm69axRUr2ka9ftCfyzwQPOPp1uWaiq4zS2FjTG2zrrMyFAs0Y6WzDrFUlngqSzydnfLpum76mx62dvWcnv6mrZ6NHVE2dkRZ2BLhsb293PvLQ7w0EGdBc4TNly85LcjkExEa6vy0RILUBSo7RXqykwEe7urhT+9/isFEhozjjKTp+btrLrZgY0yNsEBThnICTT7HUeLp7EjgyThT29oplv7mwnOa2dQR5XWr25lTHyr7tXPbFpQzAaEcV966jTmR4Ki1Q6rumqCJZAZ48z9uH1nwKQKqbpfmqmgjD31kfUXqbIwpj43RTAOfT2ioC9DgXayTmeyUTihY1Brh/euW875XLWN3j5v+ZluXm/7mmSMDPHNkgC/85AXWLmtlU0eUV6+cN+H0N7ltC3p9PpojhbvVJtN1taS1/rQWTTydZXHrxNYQ7T0+jE8YGZ8SARVl7/HhEkcaY2qBBZoKGTuhIJ7OEktmiKezk9rWWURYPb+J1fObuHH9eTx56CRbOrtH0t88uq+XR/edWfqbjOPQO5yiL5amoc5Pc9hN6Jk/xjInEqRnMMEnH3yGT8OEgs2N61fwyQefIZbKjBqjuXH9ijM+D2PZGI4xtcu6zsY4066zciS8LrZYKkMqMzVdbMl0lp37etnS2c1j+3pJZ0/9u+bS32zqmE/Hwqay0t/UBf185N4nODGUpKHuVFbqchdcTmZ689Wf/yl7jg3jl7yuM1VWtjfww//9OhvDMaYG2BhNGaYj0OTLZB1iaW9CwRRNnx5MpPnp88fZ2tnNU4f7Rz12Julvrv3yTlq87jR3nETKGmOZrIe7eviT+59iKJkh6yh+n9BYF+BzXiCxMRxjqs/GaGpYwO+j2ctXpqok0g6x1OSmTzeFg7zt5Qt528sXnpb+5mh/grt3HuTunQdH0t9sOD9Ke9P46W/y1+lkVfF5mQcmOsYyWRvWRPncNReP2yKyMRxjalvVWjQisgT4BrAAcIA7VfU2EWkDvg0sB/YD71HVPu+YTwDXA1ngJlX9kVd+GXAXEAF+ANysqioidd57XAacAN6rqvuL1Wu6WzTFpLMO8Sls7RRLf3PJ0jlsWhPltavaaQyP/v4x3jqdP3njat500cKqbz99/l8+hKri953KfpB1HESE5/76zVWrlzFnk5rsOhORhcBCVf2ViDQBjwPvBP4n0KuqnxWRjwOtqvoxEbkAuAe4AjgH2AKsVtWsiDwG3AzsxA00t6vqQyLyh8DLVfWDIrIZ+C1VfW+xetVSoMmXWywaT2WJpbMkJzGTrVT6m1etmMumMelvvvmL/dz3+GHi6SyRoJ/3XLaY9716OXBq++nmyPQtAs1XagzHGFN5NRloxhKRB4AveLcNqnrUC0YPq+r5XmsGVf0b7/k/Am7BbfX8RFXXeOXXesffmHuOqu4QkQDwEtCuRT50rQaasfLX7STSZ97Nls46p6W/yWmsC7B+9TwWtUT4r18fIej3Fc08MJ2LQPOVGsMxxlRezY/RiMhy4BXAo8B8VT0K4AWb3JViEW6LJeewV5b27o8tzx1zyHutjIj0A3OB42Pe/wbgBoClS5dO2eeqpLHrdlIjrZ0MibQz4SwFQb+PdefNZd15c09LfzOUzPCDp18CwC/QHAkiBAgHfCQyDvf+8tCoQKPqJvIcSmRGFoHmutUqOf241BiOMaa6JhxoRGQZsEpVt4hIBAio6mCp4ybwuo3AvwMfUdWBIn39hR7QIuXFjhldoHoncCe4LZpSda5FoYCPUMBHC8EzylKQS2FzdCDOwuYIn7h6Df2JDFu7uuk8OkhWoS+Wpi+WJuT30RR218OMJ7cINODz8evDJ7nlwd8wlHTrcnwwyZ/e/9SUTj/esCZqgcWYGjWh3PEi8gfA/cAdXtFi4D8n++YiEsQNMt9S1e96xd1el1luHKfHKz8MLMk7fDFwxCtfXKB81DFe11kL0DvZete6XGunvamOpXPrWdQaoa0hRDhYeNA+N9h/YjhJczjAieEkX/vFfhbPifDPv3MpHQuaaA4HCPrdY1NZhxPDaY4Ppfhf9zzBA0++yMlYqmBdMo7DP/z4efpiaRx1u7UUN2jd+sOukec93NXDtXfu5Mpbt3HtnTt5uKun4OsZY2aeibZoPow7CP8ogKruzuvSOiPiXvG+CnSq6j/kPfQgcB3wWe/nA3nl/yYi/4A7GWAV8Jg3GWBQRF7l1e/9wD+Nea0dwDXAtmLjM7NVfpYCx1FiaXexaCLlkHHcLrBMNsvJmDvWE/T7aKzzj3SNXbduObdt2+3ueSNukHC3TGAk/c0/bdvj5koTWNbawP945dKRbrVDfTFUIZ1VrwmqCIxMPx674LJQi8dW/leXnX8zGRMNNElVTcnIOgUJMPmtRV4DvA94WkSe9Mr+HDfA3Cci1wMHgXcDqOozInIf8CyQAT6sqrm+mw9xanrzQ94N3ED2TRHZg9uS2TzJOs94Pm+gvDEvJ9vBvmEGYmnEJ/h8QsZR+obTZBw3EFyxoo2bWTWSHXplexPvWbuYYMDHls5uHn7uGMmMMzJ77Tfxfm753jNsXruE33nlUhxHye+8U++WzTqcjKX47EOd9MXS+H1CwO9D9VSLZ8Oa6KRT4NSCmXyhng3n31TXRAPNT0Xkz4GIiLwB+EPgvybzxqr6CIXHUAA2jnPMZ4DPFCjfBVxUoDyBF6hMYXUBP5msIj7Bn+tWE8iIjkqPc8WKtoLbDly2rJWjJxO8eDJOIp1lOJVFcTdeu2vHAf7zySPjfiPx+4Xe4RQvHB/2Wjnef2MWXN6xfS9Bv4wk5awPBYilMtyxfe+UXegqGQhm+oV6Os6/md0mur/vx4FjwNPAjbhrVf6yUpUy0yvoFxxvnU4i45DMOCgQDghtDSHqSmSB7h5M0NYQZNGcCOfNayDaVEck6P5pnYynGS+HaMA3+s9Pcdf4qHfLOdQXOy0TdSTo53BfrOzPWkguEPQMJkYFgqkaJ8q/UIu4P4N+4Y7te6fk9Sut0uffzH4TDTQR4Guq+m5VvQb4mldmZoFoUxh1ONW+FFAHos0R5tSHWDQnwrK5DbQ31dFYFzhtO+mFzRESabf14/e539rnNdZxwYJmbli/gvHWcKazDseHkiyZE8FRd/xIVck6iqOwZE6YRDrLktb602a4lbPNQCmVDgQz/UJd6fNvZr+JBpqtjA4sEdyV+WYWUFV8PiHk8xEO+Aj5fPh8MqpV4fcJTeEg0eYwy+bWs7AlQkskSNDvY/PlS8h4U6oV92fGUd6/bhmbL1+Cf5y/slRWee8dOxGfuK0mURxVxOeu2fnAa8/jyMk4v33pIpJph+FkGlUllsqcts1AqVlrxR6vdCBY0lrPieEke48N0fXSAHuPDXFiODljLtQ3rl9BOuue9/HOvzHFTDTQhFV1KPeLd39m/F9iShpKZVk0J0zAL2RVCfiFRXPCDKcKr5MRESIhP3Mb61jSVs+7LltMY8jHob44u3uGOdQXJxKQkTGdYkkLFHjh2LCXRBQyDgjC2162cOT4S5e18oaOKN0DSZ49OkDPQIJrLl00akban97/FE8c7OOl/jhPHOzjT+9/aiSYlHq80t/Y161oo2cwRSrr4BN3enjPYIp1RbbariUb1kT59NsvJNoUpj+eJtoU5tNvv9DGZ8yETTTQDIvIpblfvCSW8SLPNzPIktZ6An4fK9obWbOgmRXtjQT8vglfaK/76k52Hxv97X/viTgf/fYTgJt7bDyfeedFXLy4ZVRZMuNw96MH+bP7f80TB/vY+cIJfvhsN20NIc5rb2BOfYh7f3mIh359FFXl1h920RdLo7jZsMeu0yn1eKW/se/Y20t7Y4iQ34ejEPL7aG8MsWPvzFnStWFNlHtueBU/+9hV3HPDqyzImLJMdNbZR4DviEhuIeRCoGhySjNzTHYHzB37+gqWP3F4gHPmRGio8xNLZVE9lcpBxO2eWnfeXL6z6zCL5oTJZpWBpLtFggK7DvSx60AfQb8QDvhprQ+CMlLHO7bv5YJFzbxwbAhVddfpqPvaPjm1TqfUNgIb1kT5NFQshc2hvhjzGutobwqPlKnqjBmjMWayJhRoVPWXIrIGOB/3OtGlqumK1sxMm4lcaM90+m846OeG167gtm178IniE9yBf4X3XOYmdDg6EHcXgyI0R4JkHIfBRIaT8TTprHq3DIPJDCG/O1bUFPbz0kDcmzigZPNbTQoZBZGJL/WqZAqbJa319AwmRqYHgw2mm7NL0UAjIlep6jYRedeYh1Z5uyx+t+CBZsYpdqGd7DqQmzatBuArj+xjOJWlIeTn+tcs5w9edx7DySzntEQ4PpQcGZAP+HyEg34unFPPR9+4mj+9/9ccH0qScZRUVjkxnOLEMNSH/Dzw5IunzWrLhRcvYw7nzq1nz7FhxNGRbQQchZXzpudCP9kWozEzXakxmtxmHv9fgdvbKlgvU0OmYvrvyxfP4cJzWljYEubCc1q4eEkr9SE3H9vNG1cB7iA5MDJrbfPlS1jUGuEjG1cxrzHE/KY65kQCI4Ellspy29Y9jDNnAb8IR07GuXnTaloiAcTn7lMjPphTH+Tjb+6Y1HmZKBtMN2e7oi0aVf2UiPiAh1T1vmmqk6kxh/pizIkER5WVM/23VItow5oof8VFI113i+ZEeP+6ZVy6rI14OssVK9r4CKtHUuAsa2tg7fI2Dp+M8bPdx4mNE2kyqiTSWc5f0MTH3rSG+x4/zEv9cZa0NUx7ChjLLm3OZiXHaFTVEZE/AizQzGLFxmBKjTHkuqPGyq3rnEgKk/EuxLkkoFddEGXdyrlkx6QZ+MjGLG+9/REKzaBOZpTbtu5mU0eUy5a3svZcdzpxJOSnORxEVau6BbUxZ4uJzjr7sYj8CfBtYDhXqKozZ36mGVepFkepMYaGoI+h1OmX+gYvDc1kWkT5SUBVlUTaIZbKeOtuHOqCfvx+gawWDDYPPHmEB548wsKWMFetibKpI8qyuQ3EU9mRnTibwsGRLauNMVNvooHm93HHWP9wTLmNZs4CpVocpWalpcdZkJkrX9Jaz77jQwwmMqSyjrdxWoBz5zWWVc/cQtFIyM9c3MzTsWSWpa0R9p+IERQZaV1lHWVOfZDWhhAvHBvmaH+Cbz16kG89epCV0UY2dUR5/flR2pvq6I+neeJgH9/+5WFePBljaRW61qptJmeXNrVvooHmAtwgcyVuwPkZ8C+VqpSZXuW0OMabMBzyC/68JJnZvF09161o47H9vd5aFnfQ/9hQit+5YnIr43P77Pyft13IR7/zJEPJDFnHTafTEg7yZ29awxUr2th3fJitnd1s7eqheyDJnp4h9vQMccdP93LJ0jmsmNvAIy8cJ+T30RAKcLQ/zv954Df8FRedFRfbmZ5d2tS+ifYXfB3oAG7H3VSswyszs0CpXFylshuvmNdAJqskMlni6SyJTJZMVlkxrwFwV8a3hANkHSWZcZNmtoQDZa2ML5arbMOaKNetW05dwI8i1Pl9/I8rlnJVRxSfCOfOa+ADr13Bv33gldy++RLefvE5NIcDKPDEwZP8+xMv0j2QpC+WYjCRIeBNa7t9226GkplROd9mo5meXdrUvom2aM5X1Yvzfv+JiDxViQqZ6VeoxdEzmOLay90WR6mutTdftICulwZHJgTkfr75ogUA7O4ZZDCRIej3jXRtDSYy7O4ZnFD9Sn3jfrirh2/uPEAq4yC4Czy/vesQa5e38brz24mnswwlM8RTWS5a1MJFi1r48OvPY9f+PrZ29bDNC1pDySxDySw+gca6AEPJDEdPxgn6fdTX+WmqCxIJFd8yodhnqNWuqcnOKjSmlIm2aJ7wtkoGQEReCfy8MlUy061ULq5S2Y0f+s1LBV83V55yM2XiE3djM58ICKM2Vium1DfuW3/YRe9wimTWIetAMuvQO5zi1h92jTw/2hRm2dwGzpnjZp2uDwVYd95c/vKtHbzsnBba6oPUe0HEURhIZOiLpbn2yzv555/s4YkDfRw5GePgiRh9wynSxTKFjlHp/W4my7YBMJU20RbNK4H3i8hB7/elQKeIPA2oqr68IrUz06JULq5S05v39AydNnajXjm4G6vF0+5U5fyp0CH/xKYWl/rGvadniKzmbdeqkM17/3zhoJ9w0J1MkMo4xFNZfu81y/m7/36OhroA85uFvuE0w15izeNDKb7z+GG+8/hhlrXVs7EjylVropwzJ0I46KcxHKAxFMA33qY71P4OlZa5wFTaRAPN1RWthamqUoGk1IUoPc4Wmrny1fObC8w6C0541lmp+mW8yDW2FpkSYyuhgI9QwMe7LlvMnPogX/rpC7zYF2f5vAY2r3WzEmzt6mZLZw+H++Ic6I3xtZ/v52s/38/Stnreeck5bDi/ndaGOhpCbtCJBP2nrc2p9a6pSicVNWaiSTUPVLoipnpKBZINa6Jcc/jkqFxlH7jy3AlfiHKvv6AlcEbfmEvVT7TwbLgycmpyVcd8ruqYD7itueFUluFkhsVt9ZwfbeLvtzxPIp0lnnbIOsrB3hi3b9vDF36yh8uXt7GxI8prVs6jsS5Ag7fuJ+x1N86EpJqWucBU0kRbNGYWK/WN9uGuHr6x88Cojbu+sfMAL188Z0IXp8l+Yy51fDDgI1lgvCeYtwiz1GD8eI87jvJnT75IQ8hPW33I3a8mnaUvliaRzuIoPLqvl0f39RIO+HjNynls7IiydlkrkZAbcK5/zXI+/f1O65oyZy2Z7VM3y7V27VrdtWtXtatRU67+/E/Zc2wYf/6CSFVWtjfww//9Os79+PcLtyiAfZ99a8Xrt/LPv0+heQUBH+z5v28d2WFzMJEh4zgEfO6C0b+75uKRWWu5WW35gSCX+PLKW7eNdH053mJQRx0G4mk+uGElWzq72fHCCfJ7EMMBH2+6aAGbOqJcsLCZJw+e5N5fHuJolXKtGVNpIvK4qq4t9Ji1aExJ+07EACXtjN5YzC2Hxjo/g8nTE1s21p3ZVOBy+X0+VB0URuonXjmcmpXmeF1sWcch7c1K27Amyh3b95LOZjkxdGoMqTkSGBmsz+/68gv4fcJwMsuStgY2dczn4PFhfrHnBD4vCCuQyDij0t9s7Ijyh68/j2VzG4iE/DTUueuK/EUmERgzW1igMSU5juLNUAbvYppREK8dc9GiOXS91E9/PIOjbhBqiQRYs6Cl6OtOldx+M4ExLa5z556aFZeblSaCOytNT81K290zSH8sjc8n+H1CxlGOD6ZIZ911PoXGiDIO/NHrV7KkrZ77f3UY4VSQ8U4T4m3ydrQ/wd07D3L3zoMEfEK0qY7r1i3nDRfOJxLyU+91sZ3NQaeW1xmZybNMgqakoD/vz0RPL79x/QqawiHOndfARec0c+68BprCoWkbg/j4mzuYUx8cd7+Zkdlnueu49zNXXmqdz4Y1Ua65dBHHBpN0vjTIscEk11y6aORCOJzK4jB6QkKudfXV69ayYXX7yCZsGUc50p/gb37YxQe+vot/f/wwB44Pc+DEMEf74wwk0jjjzOKbrWp9nZGZPAs0pqRIyEcu1ozsXumD+pBbWO2NvTasifK5ay7mFUtaWdAc5hVLWvmcN/4Cp3baVD11yy8PenccR1HVkQt9bp3PeJMhJnIhfNmiFk7G07TWBwj5hfw2y97jw3zuv5/nt//lF3zqwWf40W9e4og3jbp7IMFQMnNWBB1LgTP7VbXrTES+hrtTZ4+qXuSVteFuR7Ac2A+8R1X7vMc+AVyPux7vJlX9kVd+GXAXEAF+ANysqioidcA3gMuAE8B7VXX/NH28WaPwOpjR2ZerPT222PuvbG+kq/v0xZsr2936r57fzNOH+0ZtddAY8rFqfjMAn32ok768MZ5MVklnUnz2oU42rIkW3IsnJ9oc5lDvMP2xDD6fEAwIjqM4Dvj9buspmXH42e7j/Gz3cRrq/Kxf1c6mjigXL5mD3+cjHPTRUBegPugn4J993w1rfZ2Rmbxq/9XexemLQT8ObFXVVcBW73dE5AJgM3Chd8wXRSQ32vwl4AZglXfLveb1QJ+qrgQ+D9xasU8yi924fgWhgJ8FLWHOn9/EgpYwoYB/xkzPfcvLFjJ29EO8coAFzaHT9tMZSjksaA4BsOfYMNkxvW9ZhReOuVszjRdncuXprCI+N7u1DyHg8+Hzual+vvuhV/OJN69h9Xw36A0nszz0m5f46Hd+zeY7d/LFn+zh14dOcmwgwcHeGC+ejHMylppw+p6ZYElrPceHRid1PT6UrKl1RmZyqhpoVHU7MDaF7zs4lRn668A788rvVdWkqu4D9gBXiMhCoFlVd6g7V/sbY47Jvdb9wEaxLRXLNhVdY8WyL1faQ795qWCgyeVi+9EzheuSK8/t6ql5N3DHWyYiv2sOcjPjhHBAaG+qoyUS5NhgkqDfnUiRq2su/c2Nd/+K379rF3fvPMD+40P0Dqc43BfjUG+M3uEUiXThraxninUr2jg2lBrVNXlsKMW6FZPbRsLUjlqcdTZfVY8CqOpREcldzRYBO/Oed9grS3v3x5bnjjnkvVZGRPqBucDx/DcUkRtwW0QsXbp0Sj/MbDGZrrFq73eyp2cIh1Oz5lBwODXrLDbOhTpX7vPJaVtI58onYvX85oKz8lYvaCHaHOZfH9lLXyx92nGtkSCN4QCHxqS/uWBhM5s6omw4v510NsTJGAR8bobp/IwEM8WOvb1Em0IMxEdPL9+xt5ebql05MyVqMdCMp9D/1VqkvNgxowtU7wTuBHfB5plW0BRW7aSSBWedaelcaDkhvxAvEGhykwV83jTmsXJxaN2KNh7dd2pBp6PQH8+MfGPffWz49IOBk/E0939oHc93D7G1q5ttXcfoHU7x7NEBnj06cFr6m4zjLiKdaUHnUF+MuQ11zGssnNTVzHy1GGi6RWSh15pZCOT6NQ4DS/Ketxg44pUvLlCef8xhEQkALZzeVWcqrNqDvX5x1/2MjSsTTB5NfchPMuOMrJPJrZFp8LYVWB1toKv79GCxOupu/PaDp4+CjsQ3N96pW37TptUFg5T3FOrrApy/oInzFzRx4/rzePLQSbZ0dvPI7uMMp7Ljpr/JBR2/zw3wDXX+ggk/a8FMyAVnJqcWA82DwHXAZ72fD+SV/5uI/ANwDu6g/2OqmhWRQW+/nEeB9+PuApr/WjuAa4Btajl3pl21LyQr2xt5vntoZHxFvFtu1lkppWbd7TteOGDmyvediBEosNV1LrNCMQtbIqSzDoOJDEOJDJcta+WyZa18ZGOWnft62dLZzWP7eklkHLZ29bC1q4eWSJAN57ezcU2UC89pZjCRZuuz3dy76xDdAwkWt0b44Prz2HjB/Al9/kqzbQpmv2pPb74H2ADME5HDwKdwA8x9InI9cBB4N4CqPiMi9wHPAhngw6qa61z/EKemNz/k3QC+CnxTRPbgtmQ2T8PHMmNU+0Ly8Td3cNM9v2IolR1JUdMY8o8s6CylVPbpZLbwd5f88kxWSWVPjQX5gGBgYq2LoN9HW0OI1vogsVSWwUQGgNetbud1q9sZTKT5+i8O8N/PdjOUzNAfT49Kf7NmQROP7j1BLO3OVDvan6Dz6BN86m0XclVHlPpQ4Ix3Dp0KtbBNwe1bnj8tO/lNm1ZP+HFTXFUDjapeO85DG8d5/meAzxQo3wVcVKA8gReoTPXUwoUkFPQTcnQkv1iojLGLyW6T0FTn5/iY6ciOV14OEaHB24Ygv5XTeWSQHXtP0FofZF5jkL5YmuFkloyjHO1PcLQ/cdprDSWz/P2Pn+Oy5a30x9PcvWM/9z1+mJj3+f7gtSum9UJazXVYt295ntu27cEnbiLWeDrLbdv2AHDTptUlHzel1WLXmZmFqnkhuWP7XloiQRa2REbKypmM8HBXD/f/6kXam+pY6rVo7v/VixPeJiGWKrzmZbzyichv5Xz3iRcJ+YW6gBu45jf5iYez1IcCrF3eyrcePVjwNV4aSDKUyPAfvzrMXTsOjMySGUxm+fyW3aQyDn/8xvMnPLtupvrKI/u8IOJ2bfoEMo7DVx7Zx02bVpd83JRmgcbMepOdjFAqu3MpyaxD0Ocu8sx13fnFLZ8sEeFIf3zk87lbGEA46KM/nuL6K88dN9AA/Pa//IKsowW34v7KI/v47bVLCAd91IcC1If8o/PezRLDqSyBMR/LJ275RB6fCrM9qagFGjPrLWmtZ/+JodPWaSyf6w7m5zI+j5WboFUqu7N/nHU2uWzMDSG3FVSXd5HOOA4NUzT1OH+yRcCbSjeUzHLOnEiJI92sBeNJZBxUlXgqSzyV5QTu9te5oDMTpk5PRO7fJ7/h5uipWYWlHp+saq8zmw6z7+uJMWOsW9FGz+Dolec9g6dWni9qCRc8LldeKrtzaJx50rnyD1x5Lo66wcVRx/vplk+FG9evIJ1VYqmMuwNoKkPWgZuuWsWStuIz+z7x5jVFH3++e5D8iZqpjMPJWIojJ+McPBHj+FCS+BR+sx/P7Vue5+W3/Ijz/vwHvPyWH3H7luen7LVL/ftU+t+vFpKKVjpzhwUaM+vt2NtLe2OIkN+Ho26OsfbGEDv2ukuq/vqdL6O5zj/yjdUn0Fzn56/f+TKgdHbn+pB/VOoY8V4j9433pk2rufmqlUSCfjKO221381UrR/r3xxsBmejISLEUQaW6ut5QYorzB+/+Fb931y6+ufMAR07GRz2WW6tztD/OgRPD9AwmGK5AxuncYHw8nR01GD9VwabUv0+pxyfrUF+MyJjW4XSuM5uObRqs68zMeof6YsxrrKO9qfDK8w1rotx+7aXjzoorvI4mOLKOZiLZrW/atHrcC1PAB+lxtqKeqEpOtjjYG+Nff76ffx2T/mZOfWjkOVlHGfJmwYnIyLhOQ2jyGaenYzC+2L/PRB6fjGqvM5uOzB0WaMysN5H/kYtdqEutoyn1eCnNkSAnhk/PddYyZgLDmfLhTqceS2BUsCjkX373UrZ29rCtq4cTBdLfbOqI8uqV80Z9Ix87rlMX9HP3jv3cvfMAsbRT9jqU6RiMr6ZqrzObjswdFmjMrDfZ/5FLraOZ7DqhibSIJuMdlyzkP548elr5Oy9ZSFtD8UCzen4Tq+c38Yolc/jqI/t4sT9OKuOOUYyX/mZsC+YrP31h1PTpgUSGz2/ZDZxah1Js1lWlB+OrbTrWmRU7v9PRorJAY2a9yf6PPJF1NJPpuppsiyhXx/EuJC8NpJgTCTCQOJU9ujkc4KWB1IRe+7G9vfzTT/YQ8AlLWiPEUlmGU1nOaYmwu2ewaPobEeGeXx4qOH36iw+/wOZXLuXx/X383x90Egr4Cs66+sCV53Lbtj1kHGckgelUDsbXgkp2fZaa1TYdLSoLNOasMJn/kSvdhz0VgbDYheSQ95r5CTXzx6jWndvKjn19p73u5UtbCPp93PvLQwR8MtI91hAK4BMh5Pdx/wfX8dPnj7O1s5tfH+4/Lf3NVWuiJMbZpC2RcRhKZLjjp+7sqqA3WcOdNp0dOb+5Vo+lgDkzpf5+p6NFZYHGmBKmow+7koGwVNfIPTe+mmvv+MWoYLPu3FbuufHVAPQMJWiqC7itEq9pEg76eGkgTlM4yNtevpC3vXwhPQMJtj13jK2d3bxwbJij/Ymii0Vzjg7EaQ4H3C2uvTfwi3DgxPDIt+xKDsbPdhP5+6105g4LNMaUUO1ZQaWUupBMpGskF1QKWdbWQM9ggkjQP5J5IJ7KsqB59ILQaHOYzZcvYfPlS9h3fJhtXT1s7ezhpYHTc60BtDe6dV7YHOHEcHLUhIJ4Oku0KcxL/YlTs9iCbvLPUDnT8UxN/P3av5gxJRRaEFlLaeyXtNYTH7NLaP6FZLJbcec+fzydxe8T0tksCrxv3fi70Z47r8FNf/OBK/jg+hUFp2r3xjJ88oFnuPCcZtJZh3g6i+K+T8ZRNl/ubj+Vm8V2Yjg5soX18aHkyL+HKa4W/n7F/qFGW7t2re7atava1TA1JjfYXq3s08Xkj9Hkt1jKCSYTeY9Cnz+ZyTIQzzCULH7Rf2xvL/c8dpADvcOAMOxd7HJyLRZFWdpaz7VXLOUKL3NDMSLuZ46E/LM2F9tUmI6/XxF5XFXXFnzMAs1oFmjMTFTtQOg4ymAiw0AiTXoCyULjqSyP7HEnEew60Ddql9G5jSGuOj/Kpo4oK6ONZe0KGvT7qA/5qQ8FCAd9Nbmj6GxlgaYMFmiMmZzhpBtwJpoDrXc4xcPPHWNrVzedRwdHPbasrZ6rOqJsXBOdUJLQfD4RIiG3tRMJWmun0izQlMECjTFTI5Vx6I+n3fxnE7zOvHgyzrbOHrZ0dnOob3RutfHS30yUtXYqywJNGSzQGDO1yu1WA3cCwO6eoVHpb3J8Amu99DevOW/eGW1D7RMhHPRTX+enPjj5fGzGAk1ZLNAYUznDyQz98TSJ9MTzlGUd5alDJ9nS2cPPdh8bleMsHPDx6pXz2DRO+puJstbO5FmgKYMFGmMqb6Kz1U47Lp1l575etnb28Oi+E6NmruXS32zqiHLBwuYzDhb5YzvW2pk4CzRlsEBjzPTJbS9QTrdazmAizfbnj7O1q5unDvWPyqeWS3+zqSPKsrkNk6qjtXYmxgJNGSzQGFMdsVSGgXiGWCpT9rHHBpMjmQj2HBsa9djKaCMb10S5ak2U9qa6SdXRWjvjs0BTBgs0xlRXOuswmMgwmEiTPYPdOvefGGZr5+npbwS4eMkcNnVEWb+qncbw5DNwWWvnFAs0ZbBAY0xtUFWGkhkGEhmSZUweyD/+mSMDbOns4eHnehhInGopBf3CK8+dy6aOKK9aMXdK8qed7a0dCzRlsEBjTO1JpLMMxNMMp7JnlN8sk3XYdaCPLZ09/HzPcZJ5Wxc01PlZv6qdjR1RLl48B79valoloYC7nXV9yO9tfTC7nfWBRkSuBm4D/MBXVPWz4z3XAo0xtSuTdRhIZBhKZMg45U0eyBlJf9PVw679vVOW/qYYvy8/J1tgyoJZLTmrA42I+IHngTcAh4FfAteq6rOFnm+Bxpjap6oMp7IMlpHqppC+mJf+prObZ6cw/U0pdUG3ey0yi1o7Z3ugWQfcoqpv8n7/BICq/k2h51ugMWZmSWUcBhNphpKZM5o8kHPkZNzdkrqzh4O9oze1m2z6m2L8Phlp6USC/hnb2jnbA801wNWq+gHv9/cBr1TVP8p7zg3ADQBLly697MCBA1WpqzHmzE128kD+60wo/c3KeaM2a5sqdUE/Dd6kgrrAzGntnO2B5t3Am8YEmitU9X8Ver61aIyZ+c4088BYpdLfvGblPDZOMv1NMQGfj3DIm1QQ9OOr4dZOsUBzNmzlfBhYkvf7YuBIlepijJkGdQE/7U1+2hpCDCbSDMTPbPKA3ydcuqyVS5e18pFNq9i59wRbvPQ3iYzjdrV19bjpb1a7M9cuPOfM09+MlXEchhIOQ4kMIkJdwF23M+NaO2dBiyaAOxlgI/Ai7mSA31HVZwo931o0xsxOZ5LQczzF0t8saA6zsSPKxo4oyyeZ/qaYgM83srNopAZaO2d11xmAiLwF+Efc6c1fU9XPjPdcCzTGzG6TXZMzVtH0N+2NbOyYmvQ3xYjIyHbYkZB/ShagnkEdzu5AUw4LNMacHTJeqpuBM0x1U8h0pr8pphqpcSzQlMECjTFnl6marTb2NZ85MsDWzh5+UiD9zatWzGXjmqlLf1PMdKXGsUBTBgs0xpy9pmq2Wr5qpL8pJhTwEQlOfWvHAk0ZLNAYY85k++mJmEj6m40dUVZNYfqbYvJbO5Ggn+AkWjsWaMpggcYYk28y++QUUyz9zdK2encPnY4oi6Y4/U0xubGdXOApJ9hZoCmDBRpjTCGT3SenmBdPxtnW2cOWzm4O9cVHPXbBwiY2dsxnw/nttE5x+ptiRPITgZZu7VigKYMFGmNMMZWYPJD/2hNKf3PePCKh6V2wmWvtNNQFqAucPrZjgaYMFmiMMROVSGcZSKQZTk7Nmpx8WUd56vBJtnb2sP356U9/U4xPZKSLLbftgQWaMligMcaUK+soQxWYPJCTyjij0t+ks6eu25VKf1OOcNDPotZ6CzQTZYHGGDMZw0k34Exmn5xiaiH9TSHnRZss0EyUBRpjzFRIZRz642mGkxmcCl1njw0m2drVw7Yqpr/JsUBTBgs0xpipVKk1OWMVT3/TwsY183nd6sqlv7FAUwYLNMaYSql0txqUTn/zynPnsqlj6tPfWKApgwUaY0ylVSLVTSH56W9+sec4ifz0NyE/r13VzqaOKBcvmXz6Gws0ZbBAY4yZLllHJ7UxWzniqSw/f+E4Wzork/7GAk0ZLNAYY6abqjKccvfJmYqN2Uopmf6mI8rGNVHOKSP9jQWaMligMcZUUzKT9WarTf0i0EKmKv2NBZoyWKAxxtSCrKMMxNMMJirfrQYTS3+zcU2UK1cWTn9jgaYMFmiMMbUk163WH09PeW618WQd5alDJ9nS2cPPdp+e/ubVK+exaUz6Gws0ZbBAY4ypVYm0O44znJqebjUonv6mORxgw/lRNnVEeccrFo8baCq7cbUxxpgpEw76CQf9ZLwtCwYqsGXBWKGAj/Wr21m/up2hRIbtu4+xpbOHpw6dZCCR4cGnjvDgU0eKvoYFGmOMmWECfh+tDSHm1AcZSmboj6dJZSo/jtMYDvCWly3kLS9byLHBJNu63EwEY9PfjGVdZ2NY15kxZiaqRrdazv4Tw2zsWGBdZ8YYM5vld6sNVGgn0PGUyhRtgcYYY2aRgN9HW0OI1vogg8kMA9PUrVa0TlV9d2OMMRUhIjSHgzSHg8RTuZ1AM6UPrAALNMYYM8tFvG2X01mHgXiaoWRm2rrVAKZ3o2mPiLxbRJ4REUdE1o557BMiskdEnhORN+WVXyYiT3uP3S5e1jcRqRORb3vlj4rI8rxjrhOR3d7tumn7gMYYU4OCfh9zG+tY2lbPvKY6gv7pCQFVCTTAb4B3AdvzC0XkAmAzcCFwNfBFEcnlOvgScAOwyrtd7ZVfD/Sp6krg88Ct3mu1AZ8CXglcAXxKRFor+JmMMWZGyHWrLWmrZ2FLhPpQZTu3qhJoVLVTVZ8r8NA7gHtVNamq+4A9wBUishBoVtUd6s7b+wbwzrxjvu7dvx/Y6LV23gT8WFV7VbUP+DGngpMxxhjcbrUFLWGWtNXTEgniO4MtAkqpVotmPIuAQ3m/H/bKFnn3x5aPOkZVM0A/MLfIa51GRG4QkV0isuvYsWNT8DGMMWZmye9Wm9s4td1qFWsvicgWYEGBh/5CVR8Y77ACZVqk/EyPGV2oeidwJ7gLNsepmzHGzHo+n9ASCdISCRJLZRiIZ4ilJjdbrWKBRlU3ncFhh4Eleb8vBo545YsLlOcfc1hEAkAL0OuVbxhzzMNnUCdjjDkr1YcC1IcCpDIOA4k0Q4kMzhlkHai1rrMHgc3eTLJzcQf9H1PVo8CgiLzKG395P/BA3jG5GWXXANu8cZwfAW8UkVZvEsAbvTJjjDFlCAV8zMt1qzWU361WlXU0IvJbwD8B7cD3ReRJVX2Tqj4jIvcBzwIZ4MOqmtsI4UPAXUAEeMi7AXwV+KaI7MFtyWwGUNVeEfkr4Jfe8z6tqr2V/3TGGDM7+XxCS32Qlnq3W60/niaeKr1HjiXVHMOSahpjzMSlMg798TTR5vC4STVrrevMGGPMDBIK+Ghvqiv6HAs0xhhjKsoCjTHGmIqyQGOMMaaiLNAYY4ypKAs0xhhjKsoCjTHGmIqyQGOMMaaiLNAYY4ypKAs0xhhjKspS0IwhIseAA0WeMg84Pk3VORNWv8mx+k2O1W9yZnL9lqlqe6EHLNCUSUR2jZfPpxZY/SbH6jc5Vr/Jma31s64zY4wxFWWBxhhjTEVZoCnfndWuQAlWv8mx+k2O1W9yZmX9bIzGGGNMRVmLxhhjTEVZoDHGGFNRFmjGISJfE5EeEflNXtktIvKiiDzp3d5SxfotEZGfiEiniDwjIjd75W0i8mMR2e39bK2x+tXEORSRsIg8JiJPefX7/73yWjl/49WvJs5fXj39IvKEiHzP+70mzl+R+tXM+ROR/SLytFePXV5ZzZy/cep3RufPxmjGISLrgSHgG6p6kVd2CzCkqp+rZt28uiwEFqrqr0SkCXgceCfwP4FeVf2siHwcaFXVj9VQ/d5DDZxDERGgQVWHRCQIPALcDLyL2jh/49Xvamrg/OWIyB8Da4FmVX2biPwtNXD+itTvFmrk/InIfmCtqh7PK6uZ8zdO/W7hDM6ftWjGoarbgd5q12M8qnpUVX/l3R8EOoFFwDuAr3tP+zruxb2W6lcT1DXk/Rr0bkrtnL/x6lczRGQx8FbgK3nFNXH+YNz61bqaOX9TyQJN+f5IRH7tda1VtVsgR0SWA68AHgXmq+pRcC/2QLSKVQNOqx/UyDn0ulWeBHqAH6tqTZ2/ceoHNXL+gH8E/gxw8spq5vxRuH5QO+dPgf8WkcdF5AavrJbOX6H6wRmcPws05fkScB5wCXAU+Puq1gYQkUbg34GPqOpAteszVoH61cw5VNWsql4CLAauEJGLqlWXQsapX02cPxF5G9Cjqo9X4/1LKVK/mjh/nteo6qXAm4EPe931taRQ/c7o/FmgKYOqdnv/8zvAl4Erqlkfr+/+34Fvqep3veJub3wkN07SU0v1q7Vz6NXpJPAw7vhHzZy/nPz61dD5ew3wdq8f/17gKhG5m9o5fwXrV0PnD1U94v3sAf7Dq0utnL+C9TvT82eBpgy5PwDPbwG/Ge+501AXAb4KdKrqP+Q99CBwnXf/OuCB6a4bjF+/WjmHItIuInO8+xFgE9BF7Zy/gvWrlfOnqp9Q1cWquhzYDGxT1d+lRs7fePWrlfMnIg3eJBlEpAF4o1eXmjh/49XvTM9fYOqrODuIyD3ABmCeiBwGPgVsEJFLcPsu9wM3Vqt+uN/Y3gc87fXjA/w58FngPhG5HjgIvLs61Ru3ftfWyDlcCHxdRPy4X7juU9XvicgOauP8jVe/b9bI+RtPrfz9jedva+T8zQf+w/0+RgD4N1X9oYj8kto4f+PV74z+/mx6szHGmIqyrjNjjDEVZYHGGGNMRVmgMcYYU1EWaIwxxlSUBRpjjDEVZYHGmAkSkeWSl807r/zTIrKpxLG3iMifVK52xtQuW0djzCSp6ierXQdjapm1aIwpj19EvizuHjH/LSIREblLRK4BEJG3iEiXiDwiIreLtw+K5wIReVhE9orITd7z/yzv/udFZJt3f6OX0gUR+ZKI7JLR+9JsFJH/yL2wiLxBRL7LGF5L6uteXfeLyLtE5G/F3Wfkh16aoNzeI7eKuwfOYyKy0is/T0R2isgvvZbb0Nj3MKYUCzTGlGcV8M+qeiFwEvjt3AMiEgbuAN6sqlcC7WOOXQO8CTc/1Ke8i/x24LXe42uBRq/8SuBnXvlfqOpa4OXA60Tk5cA2oENEcu/xe8C/jlPn83DT5b8DuBv4iaq+DIh75TkDqnoF8AXczMcAtwG3qerlwJHip8aYwizQGFOefar6pHf/cWB53mNrgL2qus/7/Z4xx35fVZPeRlI9uGk+Hgcu8/JKJYEduAHntZwKNO8RkV8BTwAXAheom9Ljm8DvejnR1gEPjVPnh1Q1DTwN+IEfeuVPj6n/PXk/13n31wHf8e7/2zivb0xRNkZjTHmSefezQCTvdynz2ICqpr0Mw78H/AL4NfB63FZIp4icC/wJcLmq9onIXUDYe41/Bf4LSADfUdWMiHwY+APv8dw2u0kAVXVEJK2n8k45jL4G6Dj3jZkUa9EYM3W6gBXibvQG8N4JHrcdN5hsx23FfBB40gsIzcAw0C8i83H3BgFG0rgfAf4SuMsr+2dVvcS7ldvV9d68nzu8+zs51T24uczXMwawFo0xU0ZV4yLyh8APReQ48NgED/0Z8BfADlUdFpGEV4aqPiUiTwDPAHuBn4859ltAu6o+OwUfoU5EHsX9AnqtV/YR4G4R+SjwfaB/Ct7HnGUse7MxU0hEGlV1yNuP55+B3ar6+Qq+3xeAJ1T1q5N8nf3AWm/8KL+8HoirqorIZuBaVX3HZN7LnH2sRWPM1PoDEbkOCOEO3t9RqTcSkcdxu9U+Wqn3AC4DvuAFzpPA71fwvcwsZS0aY4wxFWWTAYwxxlSUBRpjjDEVZYHGGGNMRVmgMcYYU1EWaIwxxlTU/wNajArmVifiJQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>As the highway-mpg goes up, the price goes down: this indicates an inverse/negative relationship between these two variables. Highway mpg could potentially be a predictor of price.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'highway-mpg' and 'price' and see it's approximately -0.704\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"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>highway-mpg</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" highway-mpg price\n",
"highway-mpg 1.000000 -0.704692\n",
"price -0.704692 1.000000"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['highway-mpg', 'price']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Weak Linear Relationship</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see if \"Peak-rpm\" as a predictor variable of \"price\".\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='peak-rpm', ylabel='price'>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Peak rpm does not seem like a good predictor of the price at all since the regression line is close to horizontal. Also, the data points are very scattered and far from the fitted line, showing lots of variability. Therefore it's it is not a reliable variable.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'peak-rpm' and 'price' and see it's approximately -0.101616 \n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"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>peak-rpm</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>1.000000</td>\n",
" <td>-0.101616</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.101616</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" peak-rpm price\n",
"peak-rpm 1.000000 -0.101616\n",
"price -0.101616 1.000000"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['peak-rpm','price']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question 3 a): </h1>\n",
"\n",
"<p>Find the correlation between x=\"stroke\", y=\"price\".</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[[\"stroke\",\"price\"]] </p>\n",
"</div>\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"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>stroke</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>1.00000</td>\n",
" <td>0.08231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>0.08231</td>\n",
" <td>1.00000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" stroke price\n",
"stroke 1.00000 0.08231\n",
"price 0.08231 1.00000"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"df[[\"stroke\",\"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details><summary>Click here for the solution</summary>\n",
"\n",
"```python\n",
"\n",
"#The correlation is 0.0823, the non-diagonal elements of the table.\n",
"\n",
"df[[\"stroke\",\"price\"]].corr()\n",
"\n",
"```\n",
"\n",
"</details>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question 3 b):</h1>\n",
"\n",
"<p>Given the correlation results between \"price\" and \"stroke\" do you expect a linear relationship?</p> \n",
"<p>Verify your results using the function \"regplot()\".</p>\n",
"</div>\n"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='stroke', ylabel='price'>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"sns.regplot(x=\"stroke\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details><summary>Click here for the solution</summary>\n",
"\n",
"```python\n",
"\n",
"#There is a weak correlation between the variable 'stroke' and 'price.' as such regression will not work well. We can see this using \"regplot\" to demonstrate this.\n",
"\n",
"#Code: \n",
"sns.regplot(x=\"stroke\", y=\"price\", data=df)\n",
"\n",
"```\n",
"\n",
"</details>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Categorical variables</h3>\n",
"\n",
"<p>These are variables that describe a 'characteristic' of a data unit, and are selected from a small group of categories. The categorical variables can have the type \"object\" or \"int64\". A good way to visualize categorical variables is by using boxplots.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look at the relationship between \"body-style\" and \"price\".\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='body-style', ylabel='price'>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x=\"body-style\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We see that the distributions of price between the different body-style categories have a significant overlap, and so body-style would not be a good predictor of price. Let's examine engine \"engine-location\" and \"price\":</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='engine-location', ylabel='price'>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEGCAYAAABPdROvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAgfUlEQVR4nO3df5RdZX3v8feHCRcGbSgMQ1acCQadeDVAG5uRphe8VQkwpUrwXriEqplecxsvRoi2XS1x9RbsXfSKq0pJXGBRvEyoCjFaiawkJQQt2obgRJEQfixmlQD5ccM4IAYJ0Zl87x/7OXBmcjKZzM6ePZPzea111tn7u/ezz7NnneR7nv3s/TyKCMzMzEbrmLIrYGZmE5sTiZmZ5eJEYmZmuTiRmJlZLk4kZmaWy6SyKzDWTjnllJg+fXrZ1TAzm1A2b978s4horrWt7hLJ9OnT6e7uLrsaZmYTiqRnDrbNl7bMzCwXJxIzM8vFicTMzHJxIjEzs1ycSGzU+vr6uPrqq+nr6yu7KmZWIicSG7Wuri62bNnCihUryq6KmZXIicRGpa+vj3Xr1hERrFu3zq0SszpWeCKR1CDpJ5LuSevXSdoh6eH0uqhq36WSeiQ9KenCqvhsSVvStmWSlOLHSborxTdJml70+Vimq6uL/fv3AzAwMOBWiVkdG4sWyRLg8SGxGyNiVnqtAZA0E5gPnAF0ADdLakj73wIsAmakV0eKLwRejIg24EbghkLPxF5z33330d/fD0B/fz/r168vuUZmVpZCE4mkVuAPga+MYPd5wJ0RsS8ingZ6gLMlTQUmR8TGyGbhWgFcUlWmKy2vAs6rtFasWHPnzmXSpGxghEmTJnH++eeXXCMzK0vRLZK/B/4C2D8k/glJj0j6qqSTUqwFeK5qn+0p1pKWh8YHlYmIfuAloGloJSQtktQtqbu3tzffGRkAnZ2dHHNM9vVpaGhgwYIFJdfIzMpSWCKR9H7g+YjYPGTTLcBbgVnALuDzlSI1DhPDxIcrMzgQcWtEtEdEe3NzzTHH7DA1NTXR0dGBJDo6OmhqOiB/m1mdKHLQxnOAi1Nn+vHAZEn/GBEfruwg6cvAPWl1OzCtqnwrsDPFW2vEq8tslzQJOBF4oYBzsRo6OzvZtm2bWyNmda6wFklELI2I1oiYTtaJfn9EfDj1eVR8EHg0La8G5qc7sU4n61R/KCJ2AXskzUn9HwuAu6vKdKblS9NnHNAisWI0NTWxbNkyt0bM6lwZw8h/TtIssktQ24CPAUTEVkkrgceAfmBxRAykMlcCtwONwNr0ArgNuENSD1lLZP7YnIKZmVWo3n7At7e3h+cjMTM7PJI2R0R7rW1+st3MzHJxIjEzs1ycSMzMLBcnEjMzy8WJxMzMcnEiMTOzXJxIzMwsFycSMzPLxYnERs1ztpsZOJFYDp6z3czAicRGqa+vj7Vr1xIRrF271q0SszrmRGKj0tXV9dpUu7/+9a/dKjGrY04kNirr16+nMuBnRHDvvfeWXCMzK4sTiY3KlClThl03s/rhRGKjsnv37mHXzax+OJHYqJx//vlkE1aCJC644IKSa2RmZSk8kUhqkPQTSfek9ZMlrZf0VHo/qWrfpZJ6JD0p6cKq+GxJW9K2ZWnKXdK0vHel+CZJ04s+H8t0dnZy7LHHAnDsscd63nazOjYWLZIlwONV69cAGyJiBrAhrSNpJtlUuWcAHcDNkhpSmVuARWTzuM9I2wEWAi9GRBtwI3BDsadiFU1NTXR0dCCJP/iDP/C87WZ1rNBEIqkV+EPgK1XheUBXWu4CLqmK3xkR+yLiaaAHOFvSVGByRGyM7DahFUPKVI61Cjiv0lqx4nV2dnLWWWe5NWJW54pukfw98BfA/qrYlIjYBZDeT03xFuC5qv22p1hLWh4aH1QmIvqBl4ADfhpLWiSpW1J3b29vzlOyiqamJpYtW+bWiFmdKyyRSHo/8HxEbB5pkRqxGCY+XJnBgYhbI6I9Itqbm5tHWB0zMxuJSQUe+xzgYkkXAccDkyX9I7Bb0tSI2JUuWz2f9t8OTKsq3wrsTPHWGvHqMtslTQJOBF4o6oTMzOxAhbVIImJpRLRGxHSyTvT7I+LDwGqgM+3WCdydllcD89OdWKeTdao/lC5/7ZE0J/V/LBhSpnKsS9NnHNAiMTOz4hTZIjmYzwIrJS0EngUuA4iIrZJWAo8B/cDiiBhIZa4EbgcagbXpBXAbcIekHrKWyPyxOgkzM8uo3n7At7e3R3d3d9nVMDObUCRtjoj2Wtv8ZLuZmeXiRGJmZrk4kZiZWS5OJGZmlosTiZmZ5eJEYqPW19fH1Vdf7fnazeqcE4mNWldXF1u2bPF87WZ1rowHEu0o0NfXx7p164gI1q1bx4IFCzx4owGwfPlyenp6Sq3Djh07AGhpaTnEnsVra2vjqquuKrsahXKLxEalq6uL/fuzQZ0HBgbcKrFxZe/evezdu7fsatQNP9luo3LRRRfxyiuvvLZ+wgknsGbNmhJrZPa6JUuWAHDTTTeVXJOjh59styNu7ty5g+ZsP//880uukZmVxYnERuXiiy+m0pqNCD7wgQ+UXCMzK4sTiY3K6tWrB7VIvvvd75ZcIzMrixOJjcp99903qEWyfv36kmtkZmVxIrFRefe73z3supnVj8KeI5F0PPAAcFz6nFURca2k64A/AXrTrp+OiDWpzFJgITAAXB0R/5zis3l9Yqs1wJKICEnHASuA2UAfcHlEbCvqnOx19Xa330QwHp7fGC8qf4fK3Vv1ruhnWYp8IHEf8L6IeFnSscAPJVVmNrwxIv6uemdJM8lmODwDeBNwn6S3pVkSbwEWAQ+SJZIOslkSFwIvRkSbpPnADcDlBZ6TJT/4wQ8GrT/wwAMsXbq0pNoYZP95PrX1J5z2xoFD73yU+w+/zi627HvGt/o/+3JD4Z9RWCJJc6e/nFaPTa/hfsbOA+6MiH3A02n63LMlbQMmR8RGAEkrgEvIEsk84LpUfhXwRUnyvO3FmzJlCtu2bRu0buU77Y0DfPp3flF2NWwc+dsfTy78MwrtI5HUIOlh4HlgfURsSps+IekRSV+VdFKKtQDPVRXfnmItaXlofFCZiOgHXgIOGKdD0iJJ3ZK6e3t7h262Udi9e/ew62ZWPwpNJBExEBGzgFay1sWZZJep3grMAnYBn0+7q9YhhokPV2ZoPW6NiPaIaG9ubj6sc7Dahj6AeMEFF5RUEzMr25jctRURPwe+D3RExO6UYPYDXwbOTrttB6ZVFWsFdqZ4a434oDKSJgEnAi8UcxZW7eKLLx607gcSzepXYYlEUrOk30zLjcBc4AlJU6t2+yDwaFpeDcyXdJyk04EZwEMRsQvYI2mOsifgFgB3V5XpTMuXAve7f2Rs+IFEM6so8q6tqUCXpAayhLUyIu6RdIekWWSXoLYBHwOIiK2SVgKPAf3A4nTHFsCVvH7779r0ArgNuCN1zL9AdteXjYFaDyR+6lOfKrlW9W3Hjh38ck/DmHSu2sTxzJ4G3pCG1S9KkXdtPQK8s0b8I8OUuR64vka8GzizRvxV4LJ8NbXRmDt3LmvWrKG/v59JkyZ50EazOuaJrWxUOjs7WbduHQANDQ0sWLCg5BpZS0sL+/p3+fZfG+RvfzyZ4wqe4MtDpNioNDU10dHRgSQ6Ojo8O6JZHXOLxEats7OTbdu2uTUyjjz7svtIAHa/kv1GnnLC/pJrUr5nX25gRsGf4URio9bU1MSyZcvKroYlbW1tZVdh3PhVGmvruDf7bzKD4r8bTiQ2an19fXzmM5/h2muv9aWtcaDIQfkmGk+1O7acSGzUurq62LJlCytWrPCtv/aa8TAK8Xga/bfokXfHA3e226j09fWxbt06IoJ169bR19dXdpXMXtPY2EhjY2PZ1agbbpHYqHR1dTEwkD0v2t/f71aJveZo//VtB3KLxEblvvvuey2RDAwMeKpdszrmRGKjcu655w5a91S7ZvXLicRGpTJgo5mZE4mNytCpdoeum1n9cCKxUZk7d+6gYeQ9aKNZ/XIisVG5+OKLBw0j74mtzOqXE4mNiie2MrMKJxIblVoTW5lZfSpyqt3jJT0k6aeStkr6TIqfLGm9pKfS+0lVZZZK6pH0pKQLq+KzJW1J25alKXdJ0/LeleKbJE0v6nxssLlz5zJpUvY8qye2MqtvRbZI9gHvi4jfBmYBHZLmANcAGyJiBrAhrSNpJtlUuWcAHcDNaZpegFuARWQDWc5I2wEWAi9GRBtwI3BDgedjVTo7OznmmOzr44mtzOpbYYkkMi+n1WPTK4B5QFeKdwGXpOV5wJ0RsS8ingZ6gLMlTQUmR8TGyK6lrBhSpnKsVcB5ldaKFcsTW5lZRaF9JJIaJD0MPA+sj4hNwJSI2AWQ3k9Nu7cAz1UV355iLWl5aHxQmYjoB14CDvgfTdIiSd2Sunt7e4/Q2VlnZydnnXWWWyNmda7QRBIRAxExC2gla12cOczutVoSMUx8uDJD63FrRLRHRHtzc/Mham0jVZnYyq0Rs/o2JndtRcTPge+T9W3sTperSO/Pp922A9OqirUCO1O8tUZ8UBlJk4ATgReKOAczM6utyLu2miX9ZlpuBOYCTwCrgc60Wydwd1peDcxPd2KdTtap/lC6/LVH0pzU/7FgSJnKsS4F7o/KPalmZjYmipyPZCrQle68OgZYGRH3SNoIrJS0EHgWuAwgIrZKWgk8BvQDiyNiIB3rSuB2oBFYm14AtwF3SOoha4nML/B8zMysBtXbD/j29vbo7u4uuxpmZhOKpM0R0V5rm59sNzOzXDzV7gS0fPlyenp6yq4GO3bsAKClpeUQexarra3N07ualciJxEZt7969ZVfBzMYBJ5IJaLz8+l6yZAkAN910U8k1MbMyuY/EzMxycSIxM7NcnEjMzCyXEScSSW+WNDctN0r6jeKqZWZmE8WIEomkPyEbpv0fUqgV+E5BdTIzswlkpC2SxcA5wC8AIuIpXh/+3czM6thIE8m+iPhVZSWNtFtfY6uYmVlNI00k/yLp00CjpPOBbwLfLa5aZmY2UYw0kVwD9AJbgI8Ba4C/KqpSZmY2cYz0yfZG4KsR8WXIptBNsVeKqpiZmU0MI22RbCBLHBWNwH1HvjpmZjbRjDSRHB8RL1dW0vIJwxWQNE3S9yQ9LmmrpCUpfp2kHZIeTq+LqsosldQj6UlJF1bFZ0vakrYtSzMlkmZTvCvFN0mafhjnbmZmR8BIE8kvJf1OZUXSbOBQQ7/2A38WEe8A5gCLJc1M226MiFnptSYdcybZDIdnkM3tfnO6hAZwC7CIbPrdGWk7wELgxYhoA24Ebhjh+ZiZ2REy0j6STwLflLQzrU8FLh+uQJprfVda3iPpcWC4iSvmAXdGxD7g6TR97tmStgGTI2IjgKQVwCVk0+3OA65L5VcBX5Qkz9tuZjZ2RtQiiYgfAW8nmzv948A7ImLzSD8kXXJ6J7AphT4h6RFJX5V0Uoq1AM9VFdueYi1peWh8UJmI6AdeAppqfP4iSd2Sunt7e0dabTMzG4FhE4mk96X3/wJ8AHgb2aWlD6TYIUl6I/At4JMR8Quyy1RvBWaRtVg+X9m1RvEYJj5cmcGBiFsjoj0i2pubm0dSbTMzG6FDXdr6feB+siQyVADfHq6wpGPJksjXIuLbABGxu2r7l4F70up2YFpV8VZgZ4q31ohXl9menrY/EXjhEOdkZmZH0LCJJCKulXQMsDYiVh7OgdOdVbcBj0fEF6riU1P/CcAHgUfT8mrg65K+ALyJrOXzUEQMSNojaQ7ZpbEFwPKqMp3ARuBS4H73j5iZja1DdrZHxH5JnwAOK5GQDfL4EWCLpIdT7NPAFZJmkbVotpE9KU9EbJW0EniM7I6vxRExkMpdCdxO9vzK2vSCLFHdkTrmXyC768vMzMbQSO/aWi/pz4G7gF9WghFx0MtIEfFDavdhrBmmzPXA9TXi3cCZNeKvApcNW3MzMyvUSBPJR8laEB8fEn/Lka2OmZlNNCNNJDPJksi5ZAnlB8CXiqqUmZlNHCNNJF1kk1otS+tXpNh/K6JSZmY2cYw0kfzHiPjtqvXvSfppERUyM7OJZaRjbf0k3X4LgKTfBf61mCqZmdlEMtIWye8CCyQ9m9ZPAx6XtAWIiPitQmpnZmbj3kgTScehdzEzs3o0okQSEc8UXREzM5uYRtpHYmZmVpMTiZmZ5eJEYmZmuTiRmJlZLk4kZmaWixOJmZnl4kRiZma5OJGYmVkuhSUSSdMkfU/S45K2SlqS4idLWi/pqfR+UlWZpZJ6JD0p6cKq+GxJW9K2ZWkaXyQdJ+muFN8kaXpR52NmZrUV2SLpB/4sIt4BzAEWS5oJXANsiIgZwIa0Tto2HziDbEiWmyU1pGPdAiwim8d9Bq8P2bIQeDEi2oAbgRsKPB8zM6uhsEQSEbsi4sdpeQ/wONACzCOby4T0fklangfcGRH7IuJpoAc4W9JUYHJEbIyIAFYMKVM51irgvEprxczMxsaY9JGkS07vBDYBUyJiF2TJBjg17dYCPFdVbHuKtaTlofFBZSKiH3gJaKrx+YskdUvq7u3tPUJnZWZmMAaJRNIbgW8Bn4yIXwy3a41YDBMfrszgQMStEdEeEe3Nzc2HqrKZmR2GQhOJpGPJksjXIuLbKbw7Xa4ivT+f4tuBaVXFW4GdKd5aIz6ojKRJwInAC0f+TMzM7GCKvGtLwG3A4xHxhapNq4HOtNwJ3F0Vn5/uxDqdrFP9oXT5a4+kOemYC4aUqRzrUuD+1I9iZmZjZKQTW43GOcBHgC2SHk6xTwOfBVZKWgg8C1wGEBFbJa0EHiO742txRAykclcCtwONwNr0gixR3SGph6wlMr/A8zEzsxoKSyQR8UNq92EAnHeQMtcD19eIdwNn1oi/SkpEZmZWDj/ZbmZmuTiRmJlZLk4kZmaWixOJmZnl4kRiZma5OJGYmVkuTiRmZpaLE4mZmeXiRGJmZrk4kZiZWS5OJGZmlkuRgzYelZYvX05PT0/Z1RgXKn+HJUuWlFyT8aGtrY2rrrqq7GqYjTknksPU09PDw48+zsAJJ5ddldId86tsxP7N/7675JqUr+EVT4Nj9cuJZBQGTjiZvW+/qOxq2DjS+MSasqtgVhr3kZiZWS5FzpD4VUnPS3q0KnadpB2SHk6vi6q2LZXUI+lJSRdWxWdL2pK2LUuzJJJmUrwrxTdJml7UuZiZ2cEV2SK5HeioEb8xImal1xoASTPJZjc8I5W5WVJD2v8WYBHZ1Lszqo65EHgxItqAG4EbijoRMzM7uMISSUQ8QDb97UjMA+6MiH0R8TTQA5wtaSowOSI2prnYVwCXVJXpSsurgPMqrRUzMxs7ZfSRfELSI+nS10kp1gI8V7XP9hRrSctD44PKREQ/8BLQVOsDJS2S1C2pu7e398idiZmZjXkiuQV4KzAL2AV8PsVrtSRimPhwZQ4MRtwaEe0R0d7c3HxYFTYzs+GNaSKJiN0RMRAR+4EvA2enTduBaVW7tgI7U7y1RnxQGUmTgBMZ+aU0MzM7QsY0kaQ+j4oPApU7ulYD89OdWKeTdao/FBG7gD2S5qT+jwXA3VVlOtPypcD9qR/FzMzGUGEPJEr6BvAe4BRJ24FrgfdImkV2CWob8DGAiNgqaSXwGNAPLI6IgXSoK8nuAGsE1qYXwG3AHZJ6yFoi84s6FzMzO7jCEklEXFEjfNsw+18PXF8j3g2cWSP+KnBZnjqamVl+frLdzMxycSIxM7NcnEjMzCwXJxIzM8vFicTMzHJxIjEzs1ycSMzMLBcnEjMzy8WJxMzMcnEiMTOzXJxIzMwsFycSMzPLxYnEzMxycSIxM7NcnEjMzCwXJxIzM8ulsEQi6auSnpf0aFXsZEnrJT2V3k+q2rZUUo+kJyVdWBWfLWlL2rYsTblLmpb3rhTfJGl6UediZmYHV9gMiWTT434RWFEVuwbYEBGflXRNWv9LSTPJpso9A3gTcJ+kt6Xpdm8BFgEPAmuADrLpdhcCL0ZEm6T5wA3A5QWeDwA7duyg4ZWXaHxiTdEfZRNIwyt97NjRX3Y1zEpRWIskIh4gm0u92jygKy13AZdUxe+MiH0R8TTQA5wtaSowOSI2RkSQJaVLahxrFXBepbViZmZjp8gWSS1TImIXQETsknRqireQtTgqtqfYr9Py0HilzHPpWP2SXgKagJ8N/VBJi8haNZx22mm5TqClpYX/t28Se99+Ua7j2NGl8Yk1tLRMKbsaZqUYL53ttVoSMUx8uDIHBiNujYj2iGhvbm4eZRXNzKyWsU4ku9PlKtL78ym+HZhWtV8rsDPFW2vEB5WRNAk4kQMvpZmZWcHGOpGsBjrTcidwd1V8froT63RgBvBQugy2R9Kc1P+xYEiZyrEuBe5P/ShmZjaGCusjkfQN4D3AKZK2A9cCnwVWSloIPAtcBhARWyWtBB4D+oHF6Y4tgCvJ7gBrJLtba22K3wbcIamHrCUyv6hzMTOzgysskUTEFQfZdN5B9r8euL5GvBs4s0b8VVIiMjOz8oyXznYzM5ugnEjMzCwXJxIzM8vFicTMzHIZ6yfbjwoNr7zgsbaAY179BQD7j59cck3K1/DKC4CfbLf65ERymNra2squwrjR07MHgLa3+D9QmOLvhtUtJ5LDdNVVV5VdhXFjyZIlANx0000l18TMyuQ+EjMzy8WJxMzMcnEiMTOzXJxIzMwsFycSMzPLxYnEzMxycSIxM7NcnEjMzCyXUhKJpG2Stkh6WFJ3ip0sab2kp9L7SVX7L5XUI+lJSRdWxWen4/RIWpZmUTQzszFUZovkvRExKyLa0/o1wIaImAFsSOtImkk2++EZQAdws6SGVOYWYBHZ1Lwz0nYzMxtD42mIlHlkU/MCdAHfB/4yxe+MiH3A02lq3bMlbQMmR8RGAEkrgEt4fSreo9by5cvp6ekpuxqv1aEyVEpZ2traPHSNWYnKapEEcK+kzZIWpdiUiNgFkN5PTfEW4LmqsttTrCUtD40fQNIiSd2Sunt7e4/gadS3xsZGGhsby66GmZWsrBbJORGxU9KpwHpJTwyzb61+jxgmfmAw4lbgVoD29vaa+0wk/vVtZuNJKS2SiNiZ3p8H/gk4G9gtaSpAen8+7b4dmFZVvBXYmeKtNeJmZjaGxjyRSHqDpN+oLAMXAI8Cq4HOtFsncHdaXg3Ml3ScpNPJOtUfSpe/9kiak+7WWlBVxszMxkgZl7amAP+U7tSdBHw9ItZJ+hGwUtJC4FngMoCI2CppJfAY0A8sjoiBdKwrgduBRrJO9qO+o93MbLxRxITvMjgs7e3t0d3dXXY1zMwmFEmbqx7XGMRPtpuZWS5OJGZmlosTiZmZ5eJEYmZmudRdZ7ukXuCZsutxFDkF+FnZlTCrwd/NI+vNEdFca0PdJRI7siR1H+xODrMy+bs5dnxpy8zMcnEiMTOzXJxILK9by66A2UH4uzlG3EdiZma5uEViZma5OJGYmVkuTiR2AElXS3pc0tdyHme6pD86UvUys/HJicRq+ThwUUR8qBKQNJopB6YDTiRWKGVG/X+ZpIYjWZ965ERig0j6EvAWYLWklyTdKuleYIWkN0vaIOmR9H5aKnO7pGWS/k3Sv0u6NB3us8C7JT0s6VMlnZIdhVJr93FJNwM/Bv6XpB+l7+Znqvb7jqTNkrZKWlQVf1nS30jaBPxeCadwVPFdW3YASduAduATwAeAcyNir6TvAqsiokvSR4GLI+ISSbcDbwAuB94OrI6INknvAf48It5fwmnYUUzSdODfgf8ETAYuBT4GiGxW1c9FxAOSTo6IFyQ1Aj8Cfj8i+iQFcHlErCznDI4ubpHYoayOiL1p+feAr6flO4Bzq/b7TkTsj4jHyGbBNCvaMxHxINl03RcAPyFrnbydbEpugKsl/RR4EJhWFR8AvjW21T16lTHVrk0svxxmW3Vzdl/Vsgqqi1m1yndTwP+JiH+o3phaxHOB34uIVyR9Hzg+bX61aspuy8ktEjsc/wbMT8sfAn54iP33AL9RaI3M4J+Bj0p6I4CkFkmnAicCL6Yk8nZgTpmVPJo5kdjhuBr475IeAT4CLDnE/o8A/ZJ+6s52K0pE3Et2yXWjpC3AKrIfMOuASen7+r/JLm9ZAdzZbmZmubhFYmZmuTiRmJlZLk4kZmaWixOJmZnl4kRiZma5OJGYjZKkN0ladYSONV3So0fiWFXH/GNJb6pa/4qkmUfyM8zAT7abjVpE7CQb42m8+mPgUWAnQET8j1JrY0ctt0isLkn6sKSH0sjE/yCpIY0Ie316gPJBSVPSvm9N6z9KI8a+nOKvtSLSr/9vS1on6SlJn6v6rAskbZT0Y0nfrDyBPUzdjpf0fyVtkfQTSe9N8QZJf5fij0i6KsX/OtXt0TRas9IIzO3A19I5Nkr6vqT2VOaKdJxHJd1Q9dk1/wZmw3Eisboj6R1kIxWfExGzyAbw+xDZCMYPRsRvAw8Af5KK3ATcFBHvIv26P4hZ6bhnAZdLmibpFOCvgLkR8TtAN/Cnh6jiYoCIOAu4AuiSdDywCDgdeGdE/BZQmXjsixHxrog4E2gE3h8Rq9JnfSgiZlUNvEm63HUD8L5U53dJuiRtPtjfwOygnEisHp0HzAZ+JOnhtP4W4FfAPWmfzWQTc0E26vE30/LXObgNEfFSRLwKPAa8mWx8p5nAv6bP6kzx4ZxLNroyEfEE8AzwNrIBCL8UEf1p2wtp//dK2pSGB3kfcMYhjv8u4PsR0ZuO9TXgP6dtB/sbmB2U+0isHgnoioilg4LSn8frYwYNcPj/PqpHQK6UF7A+Iq4Y8lm/C1RGq/1rsnHJqut3sHoPGtMotVRuBtoj4jlJ1/H6CLcHM9zozL/O+TewOuQWidWjDcClaYRYJJ0sabhWwoPAf03L84fZ72Blz5HUlj7rBElvi4hN6ZLTrIhYPaTMA2SX2pD0NuA04EngXuB/Kk17LOlkXk8aP0t9L9Wd/wcbfXkT8PuSTlE2zewVwL8c5nmZvcaJxOpOmnzrr4B708iw64GpwxT5JPCnkh5K+710GJ/VS3b31DfSZz1INvHScG4GGtKlqruAP46IfcBXgGeBR9JkTX8UET8HvgxsAb5DNgtgxe3Alyqd7VV12gUsBb4H/BT4cUTcPdJzMhvKo/+aHYKkE4C9ERGS5gNXRMS8sutlNl74+qfZoc0GvihJwM+Bj5ZbHbPxxS0SMzPLxX0kZmaWixOJmZnl4kRiZma5OJGYmVkuTiRmZpbL/wdpj06ENSSTagAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x=\"engine-location\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Here we see that the distribution of price between these two engine-location categories, front and rear, are distinct enough to take engine-location as a potential good predictor of price.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's examine \"drive-wheels\" and \"price\".\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='drive-wheels', ylabel='price'>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# drive-wheels\n",
"sns.boxplot(x=\"drive-wheels\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Here we see that the distribution of price between the different drive-wheels categories differs; as such drive-wheels could potentially be a predictor of price.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"discriptive_statistics\">3. Descriptive Statistical Analysis</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Let's first take a look at the variables by utilizing a description method.</p>\n",
"\n",
"<p>The <b>describe</b> function automatically computes basic statistics for all continuous variables. Any NaN values are automatically skipped in these statistics.</p>\n",
"\n",
"This will show:\n",
"\n",
"<ul>\n",
" <li>the count of that variable</li>\n",
" <li>the mean</li>\n",
" <li>the standard deviation (std)</li> \n",
" <li>the minimum value</li>\n",
" <li>the IQR (Interquartile Range: 25%, 50% and 75%)</li>\n",
" <li>the maximum value</li>\n",
"<ul>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can apply the method \"describe\" as follows:\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"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>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>201.000000</td>\n",
" <td>201.00000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>197.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.840796</td>\n",
" <td>122.00000</td>\n",
" <td>98.797015</td>\n",
" <td>0.837102</td>\n",
" <td>0.915126</td>\n",
" <td>53.766667</td>\n",
" <td>2555.666667</td>\n",
" <td>126.875622</td>\n",
" <td>3.330692</td>\n",
" <td>3.256904</td>\n",
" <td>10.164279</td>\n",
" <td>103.405534</td>\n",
" <td>5117.665368</td>\n",
" <td>25.179104</td>\n",
" <td>30.686567</td>\n",
" <td>13207.129353</td>\n",
" <td>9.944145</td>\n",
" <td>0.099502</td>\n",
" <td>0.900498</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>1.254802</td>\n",
" <td>31.99625</td>\n",
" <td>6.066366</td>\n",
" <td>0.059213</td>\n",
" <td>0.029187</td>\n",
" <td>2.447822</td>\n",
" <td>517.296727</td>\n",
" <td>41.546834</td>\n",
" <td>0.268072</td>\n",
" <td>0.319256</td>\n",
" <td>4.004965</td>\n",
" <td>37.365700</td>\n",
" <td>478.113805</td>\n",
" <td>6.423220</td>\n",
" <td>6.815150</td>\n",
" <td>7947.066342</td>\n",
" <td>2.534599</td>\n",
" <td>0.300083</td>\n",
" <td>0.300083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-2.000000</td>\n",
" <td>65.00000</td>\n",
" <td>86.600000</td>\n",
" <td>0.678039</td>\n",
" <td>0.837500</td>\n",
" <td>47.800000</td>\n",
" <td>1488.000000</td>\n",
" <td>61.000000</td>\n",
" <td>2.540000</td>\n",
" <td>2.070000</td>\n",
" <td>7.000000</td>\n",
" <td>48.000000</td>\n",
" <td>4150.000000</td>\n",
" <td>13.000000</td>\n",
" <td>16.000000</td>\n",
" <td>5118.000000</td>\n",
" <td>4.795918</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.000000</td>\n",
" <td>101.00000</td>\n",
" <td>94.500000</td>\n",
" <td>0.801538</td>\n",
" <td>0.890278</td>\n",
" <td>52.000000</td>\n",
" <td>2169.000000</td>\n",
" <td>98.000000</td>\n",
" <td>3.150000</td>\n",
" <td>3.110000</td>\n",
" <td>8.600000</td>\n",
" <td>70.000000</td>\n",
" <td>4800.000000</td>\n",
" <td>19.000000</td>\n",
" <td>25.000000</td>\n",
" <td>7775.000000</td>\n",
" <td>7.833333</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1.000000</td>\n",
" <td>122.00000</td>\n",
" <td>97.000000</td>\n",
" <td>0.832292</td>\n",
" <td>0.909722</td>\n",
" <td>54.100000</td>\n",
" <td>2414.000000</td>\n",
" <td>120.000000</td>\n",
" <td>3.310000</td>\n",
" <td>3.290000</td>\n",
" <td>9.000000</td>\n",
" <td>95.000000</td>\n",
" <td>5125.369458</td>\n",
" <td>24.000000</td>\n",
" <td>30.000000</td>\n",
" <td>10295.000000</td>\n",
" <td>9.791667</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2.000000</td>\n",
" <td>137.00000</td>\n",
" <td>102.400000</td>\n",
" <td>0.881788</td>\n",
" <td>0.925000</td>\n",
" <td>55.500000</td>\n",
" <td>2926.000000</td>\n",
" <td>141.000000</td>\n",
" <td>3.580000</td>\n",
" <td>3.410000</td>\n",
" <td>9.400000</td>\n",
" <td>116.000000</td>\n",
" <td>5500.000000</td>\n",
" <td>30.000000</td>\n",
" <td>34.000000</td>\n",
" <td>16500.000000</td>\n",
" <td>12.368421</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>3.000000</td>\n",
" <td>256.00000</td>\n",
" <td>120.900000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>59.800000</td>\n",
" <td>4066.000000</td>\n",
" <td>326.000000</td>\n",
" <td>3.940000</td>\n",
" <td>4.170000</td>\n",
" <td>23.000000</td>\n",
" <td>262.000000</td>\n",
" <td>6600.000000</td>\n",
" <td>49.000000</td>\n",
" <td>54.000000</td>\n",
" <td>45400.000000</td>\n",
" <td>18.076923</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses wheel-base length width \\\n",
"count 201.000000 201.00000 201.000000 201.000000 201.000000 \n",
"mean 0.840796 122.00000 98.797015 0.837102 0.915126 \n",
"std 1.254802 31.99625 6.066366 0.059213 0.029187 \n",
"min -2.000000 65.00000 86.600000 0.678039 0.837500 \n",
"25% 0.000000 101.00000 94.500000 0.801538 0.890278 \n",
"50% 1.000000 122.00000 97.000000 0.832292 0.909722 \n",
"75% 2.000000 137.00000 102.400000 0.881788 0.925000 \n",
"max 3.000000 256.00000 120.900000 1.000000 1.000000 \n",
"\n",
" height curb-weight engine-size bore stroke \\\n",
"count 201.000000 201.000000 201.000000 201.000000 197.000000 \n",
"mean 53.766667 2555.666667 126.875622 3.330692 3.256904 \n",
"std 2.447822 517.296727 41.546834 0.268072 0.319256 \n",
"min 47.800000 1488.000000 61.000000 2.540000 2.070000 \n",
"25% 52.000000 2169.000000 98.000000 3.150000 3.110000 \n",
"50% 54.100000 2414.000000 120.000000 3.310000 3.290000 \n",
"75% 55.500000 2926.000000 141.000000 3.580000 3.410000 \n",
"max 59.800000 4066.000000 326.000000 3.940000 4.170000 \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg \\\n",
"count 201.000000 201.000000 201.000000 201.000000 201.000000 \n",
"mean 10.164279 103.405534 5117.665368 25.179104 30.686567 \n",
"std 4.004965 37.365700 478.113805 6.423220 6.815150 \n",
"min 7.000000 48.000000 4150.000000 13.000000 16.000000 \n",
"25% 8.600000 70.000000 4800.000000 19.000000 25.000000 \n",
"50% 9.000000 95.000000 5125.369458 24.000000 30.000000 \n",
"75% 9.400000 116.000000 5500.000000 30.000000 34.000000 \n",
"max 23.000000 262.000000 6600.000000 49.000000 54.000000 \n",
"\n",
" price city-L/100km diesel gas \n",
"count 201.000000 201.000000 201.000000 201.000000 \n",
"mean 13207.129353 9.944145 0.099502 0.900498 \n",
"std 7947.066342 2.534599 0.300083 0.300083 \n",
"min 5118.000000 4.795918 0.000000 0.000000 \n",
"25% 7775.000000 7.833333 0.000000 1.000000 \n",
"50% 10295.000000 9.791667 0.000000 1.000000 \n",
"75% 16500.000000 12.368421 0.000000 1.000000 \n",
"max 45400.000000 18.076923 1.000000 1.000000 "
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The default setting of \"describe\" skips variables of type object. We can apply the method \"describe\" on the variables of type 'object' as follows:\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"scrolled": true
},
"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>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>engine-type</th>\n",
" <th>num-of-cylinders</th>\n",
" <th>fuel-system</th>\n",
" <th>horsepower-binned</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>unique</th>\n",
" <td>22</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>6</td>\n",
" <td>7</td>\n",
" <td>8</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>top</th>\n",
" <td>toyota</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>ohc</td>\n",
" <td>four</td>\n",
" <td>mpfi</td>\n",
" <td>Low</td>\n",
" </tr>\n",
" <tr>\n",
" <th>freq</th>\n",
" <td>32</td>\n",
" <td>165</td>\n",
" <td>115</td>\n",
" <td>94</td>\n",
" <td>118</td>\n",
" <td>198</td>\n",
" <td>145</td>\n",
" <td>157</td>\n",
" <td>92</td>\n",
" <td>115</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" make aspiration num-of-doors body-style drive-wheels \\\n",
"count 201 201 201 201 201 \n",
"unique 22 2 2 5 3 \n",
"top toyota std four sedan fwd \n",
"freq 32 165 115 94 118 \n",
"\n",
" engine-location engine-type num-of-cylinders fuel-system \\\n",
"count 201 201 201 201 \n",
"unique 2 6 7 8 \n",
"top front ohc four mpfi \n",
"freq 198 145 157 92 \n",
"\n",
" horsepower-binned \n",
"count 200 \n",
"unique 3 \n",
"top Low \n",
"freq 115 "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe(include=['object'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Value Counts</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Value-counts is a good way of understanding how many units of each characteristic/variable we have. We can apply the \"value_counts\" method on the column 'drive-wheels'. Don’t forget the method \"value_counts\" only works on Pandas series, not Pandas Dataframes. As a result, we only include one bracket \"df['drive-wheels']\" not two brackets \"df[['drive-wheels']]\".</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fwd 118\n",
"rwd 75\n",
"4wd 8\n",
"Name: drive-wheels, dtype: int64"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can convert the series to a Dataframe as follows :\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"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>drive-wheels</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels\n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].value_counts().to_frame()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's repeat the above steps but save the results to the dataframe \"drive_wheels_counts\" and rename the column 'drive-wheels' to 'value_counts'.\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"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>value_counts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drive_wheels_counts = df['drive-wheels'].value_counts().to_frame()\n",
"drive_wheels_counts.rename(columns={'drive-wheels': 'value_counts'}, inplace=True)\n",
"drive_wheels_counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Now let's rename the index to 'drive-wheels':\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"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>value_counts</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"drive-wheels \n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drive_wheels_counts.index.name = 'drive-wheels'\n",
"drive_wheels_counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can repeat the above process for the variable 'engine-location'.\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"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>value_counts</th>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-location</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>front</th>\n",
" <td>198</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rear</th>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"engine-location \n",
"front 198\n",
"rear 3"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# engine-location as variable\n",
"engine_loc_counts = df['engine-location'].value_counts().to_frame()\n",
"engine_loc_counts.rename(columns={'engine-location': 'value_counts'}, inplace=True)\n",
"engine_loc_counts.index.name = 'engine-location'\n",
"engine_loc_counts.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Examining the value counts of the engine location would not be a good predictor variable for the price. This is because we only have three cars with a rear engine and 198 with an engine in the front, this result is skewed. Thus, we are not able to draw any conclusions about the engine location.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"basic_grouping\">4. Basics of Grouping</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The \"groupby\" method groups data by different categories. The data is grouped based on one or several variables and analysis is performed on the individual groups.</p>\n",
"\n",
"<p>For example, let's group by the variable \"drive-wheels\". We see that there are 3 different categories of drive wheels.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['rwd', 'fwd', '4wd'], dtype=object)"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>If we want to know, on average, which type of drive wheel is most valuable, we can group \"drive-wheels\" and then average them.</p>\n",
"\n",
"<p>We can select the columns 'drive-wheels', 'body-style' and 'price', then assign it to the variable \"df_group_one\".</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"df_group_one = df[['drive-wheels','body-style','price']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then calculate the average price for each of the different categories of data.\n"
]
},
{
"cell_type": "code",
"execution_count": 31,
"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>drive-wheels</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4wd</td>\n",
" <td>10241.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>fwd</td>\n",
" <td>9244.779661</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>rwd</td>\n",
" <td>19757.613333</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels price\n",
"0 4wd 10241.000000\n",
"1 fwd 9244.779661\n",
"2 rwd 19757.613333"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# grouping results\n",
"df_group_one = df_group_one.groupby(['drive-wheels'],as_index=False).mean()\n",
"df_group_one"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>From our data, it seems rear-wheel drive vehicles are, on average, the most expensive, while 4-wheel and front-wheel are approximately the same in price.</p>\n",
"\n",
"<p>You can also group with multiple variables. For example, let's group by both 'drive-wheels' and 'body-style'. This groups the dataframe by the unique combinations 'drive-wheels' and 'body-style'. We can store the results in the variable 'grouped_test1'.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"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>drive-wheels</th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4wd</td>\n",
" <td>hatchback</td>\n",
" <td>7603.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4wd</td>\n",
" <td>sedan</td>\n",
" <td>12647.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4wd</td>\n",
" <td>wagon</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>fwd</td>\n",
" <td>convertible</td>\n",
" <td>11595.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>fwd</td>\n",
" <td>hardtop</td>\n",
" <td>8249.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>8396.387755</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>9811.800000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>fwd</td>\n",
" <td>wagon</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>23949.600000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>rwd</td>\n",
" <td>hardtop</td>\n",
" <td>24202.714286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>14337.777778</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21711.833333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>rwd</td>\n",
" <td>wagon</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels body-style price\n",
"0 4wd hatchback 7603.000000\n",
"1 4wd sedan 12647.333333\n",
"2 4wd wagon 9095.750000\n",
"3 fwd convertible 11595.000000\n",
"4 fwd hardtop 8249.000000\n",
"5 fwd hatchback 8396.387755\n",
"6 fwd sedan 9811.800000\n",
"7 fwd wagon 9997.333333\n",
"8 rwd convertible 23949.600000\n",
"9 rwd hardtop 24202.714286\n",
"10 rwd hatchback 14337.777778\n",
"11 rwd sedan 21711.833333\n",
"12 rwd wagon 16994.222222"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# grouping results\n",
"df_gptest = df[['drive-wheels','body-style','price']]\n",
"grouped_test1 = df_gptest.groupby(['drive-wheels','body-style'],as_index=False).mean()\n",
"grouped_test1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>This grouped data is much easier to visualize when it is made into a pivot table. A pivot table is like an Excel spreadsheet, with one variable along the column and another along the row. We can convert the dataframe to a pivot table using the method \"pivot \" to create a pivot table from the groups.</p>\n",
"\n",
"<p>In this case, we will leave the drive-wheel variable as the rows of the table, and pivot body-style to become the columns of the table:</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"5\" halign=\"left\">price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>body-style</th>\n",
" <th>convertible</th>\n",
" <th>hardtop</th>\n",
" <th>hatchback</th>\n",
" <th>sedan</th>\n",
" <th>wagon</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7603.000000</td>\n",
" <td>12647.333333</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>11595.0</td>\n",
" <td>8249.000000</td>\n",
" <td>8396.387755</td>\n",
" <td>9811.800000</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>23949.6</td>\n",
" <td>24202.714286</td>\n",
" <td>14337.777778</td>\n",
" <td>21711.833333</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" price \\\n",
"body-style convertible hardtop hatchback sedan \n",
"drive-wheels \n",
"4wd NaN NaN 7603.000000 12647.333333 \n",
"fwd 11595.0 8249.000000 8396.387755 9811.800000 \n",
"rwd 23949.6 24202.714286 14337.777778 21711.833333 \n",
"\n",
" \n",
"body-style wagon \n",
"drive-wheels \n",
"4wd 9095.750000 \n",
"fwd 9997.333333 \n",
"rwd 16994.222222 "
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_pivot = grouped_test1.pivot(index='drive-wheels',columns='body-style')\n",
"grouped_pivot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Often, we won't have data for some of the pivot cells. We can fill these missing cells with the value 0, but any other value could potentially be used as well. It should be mentioned that missing data is quite a complex subject and is an entire course on its own.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"scrolled": true
},
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"5\" halign=\"left\">price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>body-style</th>\n",
" <th>convertible</th>\n",
" <th>hardtop</th>\n",
" <th>hatchback</th>\n",
" <th>sedan</th>\n",
" <th>wagon</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>7603.000000</td>\n",
" <td>12647.333333</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>11595.0</td>\n",
" <td>8249.000000</td>\n",
" <td>8396.387755</td>\n",
" <td>9811.800000</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>23949.6</td>\n",
" <td>24202.714286</td>\n",
" <td>14337.777778</td>\n",
" <td>21711.833333</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" price \\\n",
"body-style convertible hardtop hatchback sedan \n",
"drive-wheels \n",
"4wd 0.0 0.000000 7603.000000 12647.333333 \n",
"fwd 11595.0 8249.000000 8396.387755 9811.800000 \n",
"rwd 23949.6 24202.714286 14337.777778 21711.833333 \n",
"\n",
" \n",
"body-style wagon \n",
"drive-wheels \n",
"4wd 9095.750000 \n",
"fwd 9997.333333 \n",
"rwd 16994.222222 "
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_pivot = grouped_pivot.fillna(0) #fill missing values with 0\n",
"grouped_pivot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question 4:</h1>\n",
"\n",
"<p>Use the \"groupby\" function to find the average \"price\" of each car based on \"body-style\" ? </p>\n",
"</div>\n"
]
},
{
"cell_type": "code",
"execution_count": 35,
"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>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>convertible</td>\n",
" <td>21890.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>hardtop</td>\n",
" <td>22208.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>hatchback</td>\n",
" <td>9957.441176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>sedan</td>\n",
" <td>14459.755319</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>wagon</td>\n",
" <td>12371.960000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" body-style price\n",
"0 convertible 21890.500000\n",
"1 hardtop 22208.500000\n",
"2 hatchback 9957.441176\n",
"3 sedan 14459.755319\n",
"4 wagon 12371.960000"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df_gptest2 = df[['body-style','price']]\n",
"grouped_test_bodystyle = df_gptest2.groupby(['body-style'],as_index= False).mean()\n",
"grouped_test_bodystyle"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details><summary>Click here for the solution</summary>\n",
"\n",
"```python\n",
"# grouping results\n",
"df_gptest2 = df[['body-style','price']]\n",
"grouped_test_bodystyle = df_gptest2.groupby(['body-style'],as_index= False).mean()\n",
"grouped_test_bodystyle\n",
"\n",
"```\n",
"\n",
"</details>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you did not import \"pyplot\" let's do it again. \n"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Variables: Drive Wheels and Body Style vs Price</h4>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's use a heat map to visualize the relationship between Body Style vs Price.\n"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#use the grouped results\n",
"plt.pcolor(grouped_pivot, cmap='RdBu')\n",
"plt.colorbar()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The heatmap plots the target variable (price) proportional to colour with respect to the variables 'drive-wheel' and 'body-style' in the vertical and horizontal axis respectively. This allows us to visualize how the price is related to 'drive-wheel' and 'body-style'.</p>\n",
"\n",
"<p>The default labels convey no useful information to us. Let's change that:</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEmCAYAAABoGYshAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAeSElEQVR4nO3daZRkVZnu8f+TVQgoFCKTSKEgliLigCCCDI3SauGEA9rlRaEVRW1UtPs6Lr222qi4rnO3AzYq4kjbtuKAyIVWRoFCaZlESkApQRFExKGAqnzuh7MDooqsysjMyDwV+zy/tc7KiB0RJ96oynxz57v32Vu2iYiI+oy1HUBERMyOJPiIiEolwUdEVCoJPiKiUknwERGVmt92AP00fyNrw03bDmO4Kp2l9PBF27cdwtAtu/6PbYcwK7bZ4t5thzArrrvy0ptsbzWTc4wtWGhWrhjouf7rzafaXjyT95tr61eC33BT7rXL89oOY6jGV97Rdgiz4qTvfrjtEIbuWe88re0QZsVrX7xb2yHMitftu9MvZ3ySlSuY/7BnDfTUOy/+7JYzfr85tl4l+IiIOSWhsXltRzFrkuAjosPE2Px7tR3ErEmCj4juSg8+IqJOAjQvCT4ioj4SY+nBR0TUKSWaiIgapQYfEVEnIcbmb9B2GLMmCT4iuis9+IiIeiXBR0TUSMo0yYiIGon04CMi6qQx5mWpgoiICik9+IiIKonMoomIqFYSfEREjTIPPiKiVknwERFVksTYBplFExFRn5RoIiLqlQQfEVGpsTG1HcKsSYKPiM6ShJLgIyLqNG/eWNshzJok+IjoLpEefEREjZrVJJPgIyIqJMaUBB8RUZ+UaCIi6pUEHxFRIQnmzU+Cj4iokiquwc/JBFBJB0j69ly8V0TEoCQxNjbYMYqm1YNX8ytPtseHHE9ExJyquQY/cA9e0g6SrpD0ceBq4PjSfrSkq8vtnSSdXW4vlvSzcv+5sxB7RMSMaUwDHes8h7S9pP8uOfIySUeX9vtJOk3SVeXr5n2veYukZZKulPTUvvbdJV1SHvto6VAjaUNJXy3t50vaYbLPNtUSzcOAzwN7A7uWtv2AmyVtB+wLnCVpI+DTwDPL4/ef4vtERMw+wZg00DGJlcA/2X44sBdwlKRdgDcDp9teBJxe7lMeWwI8AlgMfFxSb1nLTwBHAovKsbi0HwHcYvshwIeAYycLaqoJ/pe2f2T7N8AmkjYFtge+BOxPk8zPAnYGrrF9lW0DX1jbCSUdKWmppKVeuWKK4URETJ8QY/PHBjrWxfYNtn9cbt8GXAFsBxwMnFCedgLw7HL7YOArtm+3fQ2wDNhT0rbAAtvnldz5+TVe0zvX14ADe737tZlqgv9z3+3zgJcAV9Ik9f1oevbn9D7zICe0fZztPWzvofkbTTGciIgZEFMZZN2y1xktx5ETnrIpnewGnA9sY/sGaH4JAFuXp20HXNf3suWlbbtye8321V5jeyVwK7DFuj7eTKZJngm8qxw/AZ4I/NX2rZJ+BuwoaSfbvwBeOIP3iYiYNVOYJnmT7T0mOdcmwH8Cr7P9x3Wce6IHvI72db1mrWYyTfIsmvLMmbZX0fxmORvA9gqaGtJ3yiDrL2fwPhERs6JZbGywY9JzSRvQJPcv2v56af5tKbtQvt5Y2pfT5M+ehcD1pX3hBO2rvUbSfGAz4PfrimngHrzta7l7YJXSM1ff/aes8fzv0dTiIyLWTxrOjk6lFn48cIXtD/Y9dDJwOPC+8vWbfe1fkvRB4AE0g6kX2F4l6TZJe9GUeA4DPrbGuc4DDgHOKHX6tcqVrBHRYWJsOBt+7AO8GLhE0sWl7a00if0kSUcAvwKeD2D7MkknAZfTzMA5qlRCAF4FfA7YGDilHND8AjlR0jKanvuSyYJKgo+IztKQevC2z2biGjnAgWt5zTHAMRO0L6WvWtLXvoLyC2JQSfAR0Wk1X8maBB8RnSXBvCT4iIg6JcFHRFRIKAk+IqJGEtxrkmUIRlkSfER0lgTz04OPiKiPSA0+IqJOSg0+IqJKTQ8+NfiIiCqlBx8RUaExKbNoIiJqNW/w9eBHThJ8RHRWliqIiKhYEnxERIVyoVNERKVEBlkjIqqUGnxERKWyVEFERK3Sg4+IqFPWg4+IqFgSfEREhcay4UdERKVSg4+IqJNQ1qKJiKjVWBJ8RER9BMyrN78nwUdEhwnGUoOPiKiPgA2yZV9ERH1SoplDuz10O849/T1thzFcF3yz7QhmxxXfaDuCobvqDTu3HcKs8Ngf2g5hVrxuGCeRUqKJiKiRyCyaiIhqpUQTEVEhCTaYl0HWiIjqpEQTEVGxlGgiIiokVHUPvt7iU0TEZMpqkoMck55K+oykGyVd2tf2z5J+Lenicjyt77G3SFom6UpJT+1r313SJeWxj0rNbyBJG0r6amk/X9IOk8WUBB8RndXU4Ac7BvA5YPEE7R+y/ZhyfBdA0i7AEuAR5TUflzSvPP8TwJHAonL0znkEcIvthwAfAo6dLKAk+IjorN5SBYMck7F9JvD7Ad/6YOArtm+3fQ2wDNhT0rbAAtvn2TbweeDZfa85odz+GnBgr3e/NknwEdFdgnljgx3AlpKW9h1HDvgur5b001LC2by0bQdc1/ec5aVtu3J7zfbVXmN7JXArsMW63jiDrBHRWVOcJnmT7T2m+BafAN4NuHz9APDS8tZr8jrameSxCSXBR0SHze6OTrZ/e9c7SZ8Gvl3uLge273vqQuD60r5wgvb+1yyXNB/YjElKQinRRERn9XrwgxzTOn9TU+95DtCbYXMysKTMjNmRZjD1Ats3ALdJ2qvU1w8Dvtn3msPL7UOAM0qdfq3Sg4+IzmqWKhhOD17Sl4EDaGr1y4F3AAdIegxNKeVa4BUAti+TdBJwObASOMr2qnKqV9HMyNkYOKUcAMcDJ0paRtNzXzJZTEnwEdFpw6rQ2H7hBM3Hr+P5xwDHTNC+FNh1gvYVwPOnElMSfER02tiEY5d1SIKPiM4Sw+vBr4+S4COi0yre0CkJPiI6TOnBR0RUSbM8D75tSfAR0Wkp0UREVKri/J4EHxHdlS37IiIqVnF+T4KPiG6reUGuJPiI6CyVLftqlQQfEZ2WEk1ERIVESjQREdWaZFvTkZYEHxHdpVzoFBFRJQFD2u9jvZQEHxGdVnOJZkrjC5JeK+kKSV+c4uuulbTl1EKLiJhdzZWsgx2jaKo9+H8ADrJ9zWwEExEx10Y0dw9k4B68pE8CDwZOlmQ17itpXNL+5TlnSXqIpC0kfV/STyR9irr/DSNiZIkxDXaMooETvO1XAtcDTwROBXYB9gUuAvaTtCGw0PYymt3Ez7a9G3Ay8MC1nVfSkZKWSlr6u5tvnv4niYiYqrLhxyDHKJruHP+zgP3L8V6aRP844MLy+P7AFwBsfwe4ZW0nsn2c7T1s77HVFltMM5yIiKmTjcZXDXSMopkk+P2APYHvAvcFDgDO7HuOZxJYRMRckMcHOkbRdBP8+cATgHHbK4CLgVfQJH5oEv2hAJIOAjafWZgREbPB4PHBjhE0rQRv+3bgOuBHpeksYFPgknL/ncD+kn4MPAX41QzjjIiYHfZgxwia0jRJ2zv03d6v7/aXgC/13b+ZJrH3vH76IUZEzBJ7ZHvng8iVrBHRaaNaXx9EEnxEdJhhfGXbQcyaJPiI6C6TEk1ERJ0M40nwERFVSg0+IqJWSfARERWyYUSXIRhEEnxEdFpKNBERVcqFThER9ao4wU93sbGIiNHn4S02Jukzkm6UdGlf2/0knSbpqvJ1877H3iJpmaQrJT21r313SZeUxz6qsmmspA0lfbW0ny9ph8liSoKPiM4SQ10u+HPA4jXa3gycbnsRcHq5j6RdgCXAI8prPi5pXnnNJ4AjgUXl6J3zCOAW2w8BPgQcO1lASfAR0WGGVasGOyY7k30m8Ps1mg8GTii3TwCe3df+Fdu3lz2ulwF7StoWWGD7PNsGPr/Ga3rn+hpwYK93vzapwUdEd01tqYItJS3tu3+c7eMmec02tm8AsH2DpK1L+3bcvdw6wPLSdme5vWZ77zXXlXOtlHQrsAVw09rePAk+IjptCtMkb7K9x7DedoI2r6N9Xa9Zq5RoIqLDZn1Hp9+Wsgvl642lfTmwfd/zFgLXl/aFE7Sv9hpJ84HNuGdJaDVJ8BHRbbOb4E8GDi+3Dwe+2de+pMyM2ZFmMPWCUs65TdJepb5+2Bqv6Z3rEOCMUqdfq5RoIqK7hrhUgaQvAwfQ1OqXA+8A3gecJOkImq1Ln9+8rS+TdBJwObASOMp2L5BX0czI2Rg4pRwAxwMnSlpG03NfMllMSfAR0WHGK+8czpnsF67loQPX8vxjgGMmaF8K7DpB+wrKL4hBJcFHRHeZLDYWEVEjYzzAHPdRlQQfEd1lsqNTRESdsh58RESdPLxB1vVREnxEdJhxevARERXKLJqIiFo5g6wREVUymSYZEVGnzKKJiKhTZtFERNQqPfg586uLr+DozR7bdhgxgA9+7dVthzB0f93zkLZDmBWbXHVm2yGsvzKLJiKiTsY4s2giIiqUHnxERKVsfOcdbUcxa5LgI6LDcqFTRES9UqKJiKiQs9hYRES1MosmIqJGNl6VBB8RUR3bjN+5su0wZk0SfER0l0kPPiKiVknwEREVss141oOPiKhTZtFERNQos2giIuqUWTQRERUbTw8+IqJCmSYZEVGp1OAjIupkMosmIqJONuN3ZJA1IqI+hvH04CMi6mNSg4+IqJPBFS9VMNZ2ABER7TEeHx/omIykayVdIuliSUtL2/0knSbpqvJ1877nv0XSMklXSnpqX/vu5TzLJH1Ukqb76ZLgI6K7yjz4QY4BPdH2Y2zvUe6/GTjd9iLg9HIfSbsAS4BHAIuBj0uaV17zCeBIYFE5Fk/34yXBR0Rn2WbVHSsHOqbpYOCEcvsE4Nl97V+xfbvta4BlwJ6StgUW2D7PtoHP971mypLgI6LDplSi2VLS0r7jyHucDL4v6aK+x7axfQNA+bp1ad8OuK7vtctL23bl9prt05JB1ojorqktVXBTX+llIvvYvl7S1sBpkn62judOVFf3OtqnJQk+IrrL4FXTzp+rn8q+vny9UdJ/AXsCv5W0re0bSvnlxvL05cD2fS9fCFxf2hdO0D4tKdFERGcZM75qfKBjXSTdR9KmvdvAU4BLgZOBw8vTDge+WW6fDCyRtKGkHWkGUy8oZZzbJO1VZs8c1veaKUsPPiK6y+DxofTgtwH+q8xonA98yfb3JF0InCTpCOBXwPMBbF8m6STgcmAlcJTt3oT8VwGfAzYGTinHtAyc4MsUnqXAr20/Y6pvJOlPtjeZ6usiImaLDavumPmFTravBh49QfvNwIFrec0xwDETtC8Fdp1xUEytB380cAWwYBhvHBHROntoNfj10UA1eEkLgacD/17uby3ponL70ZIs6YHl/i8k3VvSjpLOk3ShpHfP1geIiJiJ8VUe6BhFgw6yfhh4IzAOzSgxsJGkBcB+NKWb/SQ9CLjR9l+AjwCfsP044DfDDjwiYsaGfyXremXSBC/pGTRJ+6I1HjoX2AfYH3hP+bofcFZ5fB/gy+X2ies4/5G9CwdWUO+iPxGx/jEwPu6BjlE0SA1+H+BZkp4GbAQskPQF4Ps0Cf1BNNN43kTz7/XtvtdO+q9i+zjgOICttOFo/itGxGiyhzLIur6atAdv+y22F9regWZxnDNsvwg4E3gRcJXtceD3wNOAc8pLzynPBzh02IFHRMyUy4VOgxyjaNoXOtm+ttw8s3w9G/iD7VvK/aOBo8o80M2mHWFExGypPMFP6UIn2z8AftB3/4F9t99DU4vv3b8G2Lvv5e+bbpAREbPDk16lOspyJWtEdNfwrmRdLyXBR0RnGUZ2jvsgkuAjortsxiueRZMEHxGdZacHHxFRrUE21B5VSfAR0V0e3XVmBpEEHxHdNcQdndZHSfAR0VlmSnuyjpwk+IjoLptVdyTBR0RUx4Zxp0QTEVGlVUnwERH1MVDxGGsSfER0W3rwEREVGjfckcXGIiLqlBJNRESFjFOiiYioUQZZIyIqlgQfEVEhO7NoIiKqZDKLJiKiSqnBR0RULCWaiIgKNTX4tqOYPUnwEdFp6cFHRFTIQL2rwSfBR0SHGWcWTUREjZpZNEnwERH1qXyQdaztACIi2tLrwQ9yTEbSYklXSlom6c2zH/3k0oOPiE4bRg9e0jzg34AnA8uBCyWdbPvymZ99+pLgI6KzxhnaUgV7AstsXw0g6SvAwUCrCV5ejwYYJP0O+OUcvd2WwE1z9F5zpcbPBPlco2QuP9ODbG81kxNI+h5NzIPYCFjRd/8428eV8xwCLLb9snL/xcDjbb96JvHN1HrVg5/pf9ZUSFpqe4+5er+5UONngnyuUTJqn8n24iGdShOdfkjnnrYMskZEzNxyYPu++wuB61uK5S5J8BERM3chsEjSjpLuBSwBTm45pvWrRDPHjms7gFlQ42eCfK5RUuNnmpTtlZJeDZwKzAM+Y/uylsNavwZZIyJieFKiiYioVBJ8RESlkuAjIiqVBB8RUalOzaKRtC+wyPZnJW0FbGL7mrbjmilJjwX2pbmw4hzbP245pBmTdJDtU9Zoe6XtT7YV0zBIegKwA30/e7Y/31pAQ1LWYtmG1T/Xr9qLKKBDs2gkvQPYA3iY7YdKegDwH7b3aTm0GZH0f4DnA18vTc+m+Vz/0lpQQyDpXOBtts8o998EHGD7oHYjmz5JJwI7ARcDq0qzbb+2taCGQNJrgHcAv+XuDZJs+1HtRRXQrQR/MbAb8GPbu5W2n476N6GkK4DdbK8o9zem+YwPbzeymZG0JfBt4A3AYmBnYIntO1sNbAbK/9UuruyHTtIymnVXbm47llhdl2rwd5QfLANIuk/L8QzLtTSLIPVsCPyinVCGx/ZNwLNolmB9AHDIKCf34lLg/m0HMQuuA25tO4i4py7V4E+S9CngvpJeDrwU+HTLMQ3D7cBlkk6j+eX1ZOBsSR8FGLU//yXdRvM5VL7eC3gwcIgk217QZnwztCVwuaQLaP7fALD9rPZCGoqrgR9I+g6rf64PthdSQIdKNACSngw8hSZ5nGr7tJZDmjFJh6/rcdsnzFUssW6S/maidts/nOtYhqmMb92D7XfOdSyxuk4l+FqVxY0eWu5eWUEpA0nPAc6wfWu5f1+aQdZvtBlXrJ2kTWkGV//UdizRqD7B9/3Jf4+HaL4ZR/lPfiQdAJxAU4sXzZKlh9s+s72oZk7SxbYfs0bbT3oD5KNI0l7Ax4CH05Se5gF/ruB7cFfgROB+pekm4LD1YbGtrqu+Bm9707ZjmGUfAJ5i+0oASQ8Fvgzs3mpUMzfRBIBR/379V5plZP+DZsruYcCiViMajuOAf7T933BXp+PTwBNajCkY/R+YKVnjgqCzbf+k5ZCGYYNecgew/XNJG7QZ0JAslfRBmlk0Bl4DXNRuSDNne5mkebZXAZ8t8/1H3X16yR3A9g8qmqU20jozTbJcEHQCsAXNbIbPSXpbu1ENxVJJx0s6oByfpoJESJPQ7wC+StPjXQEc1WpEM/eXMl5ysaT3S3o9UEMivFrS2yXtUI63ASN/hXgNqq/B91R8QdCGNIlvX5oa/JnAv9m+o9XA4h4kPQi4EdgAeD2wGfBx28taDWyGJG0OvJPVvwf/2fYtrQYWnUrwpwAvtP2Hcv++wBdsP6PNuGZK0tG2PzJZ26gpawW9EXgEfRdy2X5Sa0FFjJjqa/CSPkZTw53wgqA2YxuSw4E1k/nfT9A2ar5IU555BvBKms/5u1YjmiZJlzDxTC4AKlgu41vc8/PdCiwFPtX7qznmXvU9+FovBJL0QuB/0fxZfFbfQ5sCq2z/bSuBDYmki2zv3r9ekKQf2p7wYqH1WSnNwN1jCCeWr4cCf7H9rrmPangkfQTYimb2FsDfAb8BNgYW2H5xW7F1XfU9+FFN4AM4F7iBZsD4A33ttwE/bSWi4epdrHWDpKcD1wMLW4xn2mz/EkDSPmusXvpmSecAI53gaca29u+7/y1JZ9reX1Lmwreo+gQv6STbL1jbn8mj+udxSRq/BPZuO5ZZ8i+SNgP+iebioAU0A5Oj7D6S9rV9Nty1NnwNs2i2kvTA3vrvkh5I0/GAZiZUtKQLJZptbd/Q92fyanq9q1Gzjit0ARj1qyNrJGl34DM0s2dMU6d+6ahv0CLpacAnaVYxFbAj8A/AD4CX2/5wa8F1XPUJvkfSsbbfNFnbqJH0Lpp654k0P1yHApvafn+rgc2QpAfTDBTvTbOJxHnA621f3WpgQyBpAc3PXjVL7JbpujvTfA/+LAOr64cuJfgf237sGm01bPhxvu3HT9Y2aiT9iOYq1t7A3RLgNaP8uSRtA7wHeIDtgyTtAuxt+/iWQ5uxsh7NLqw+pXXktyIcddVfySrpVaX+vrOkn/Yd11DHYOQqSYdKmidpTNKh3L0d3CiT7RNtryzHF1hHSWpEfA44lWYDE4CfA69rK5hhKcsFf6wcTwTeT7NZS7Ss+h58GajbHHgv8Oa+h26z/ft2ohoeSTvQlDL2oWy6DbzO9rUthjVtknorEr4R+APwFZrP9XfAhrbf3VJoMybpQtuP618Vc6JVM0dN6UA9GviJ7UeXv1T+3fYzWw6t86qfRWP71jIg+chRHVBdGzU72R9l++C2Yxmii7h7RyeAV/Q9ZmBkEzzwZ0lbcPe2kXtRx1Z3K2yPS1pZxhdupNmFK1pWfYIHKN98/9M/lasGtleVmRnVsL1j2zHMon8ETgZ2KvPftwIOaTekobiwLP3RW+juT8AFrUYUQEcSfLEtzVIFFwB/7jVWsB/mTySdTLPiYv/n+np7IQ1HmSe+A33fpyM+cLcTcBDNpizPAx5PHT+DmwLPp5kW+T2aq1drGN8aedXX4Hsq3g/zsxM02/ZL5zyYIZJ0Ik1CvJi7B409apuI9+vN2pK0L81smg8Abx3lmUEAkp5Es2TGfjSlmYuBM0d9wbsadCbBw11rgiyy/f8k3RuYZ/u2tuOKeyrLO+/iir5Be4Orkt4LXGL7S6O+DWFPGQ96HM0smlcCf7W9c7tRRQ1/Hg5E0suBI2n2jdwJ2I7m6rsD24xrpiRtBBzBPZfVHekePHApcH+a9XZq8WtJnwL+Fji2XBw08lOVJZ1Os+TCeTQL3z3O9o3tRhVQwTfXFBxFM5XwjwC2rwK2bjWi4TiRJhE+FfghzYJcI/tXiaRvlTGFLYHLJZ0q6eTe0XZ8M/QCmnnwi8u+BPcD3tBqRMPxU5o1Z3YFHgXsWjbUiZZ1pkTTu7qz78/k+TQ7Oo36lay9z9Or724AnDqqG2OsbaykZ9THTGomaRPgJcD/Bu5ve8OWQ+q8zpRogB9KeiuwsaQn0yyG9K2WYxqG3rK6fyiXi/+GZubJSOolcEk7AjesscXiNm3GFhOT9GqaAdbdaVY4/Qyr71EQLelSD36Mplb9FJqLaE6ludpupP8BJL0M+E/gkTSXwm8CvN32p9qMa6YkLQWe0NtbVs1m1efYfly7kcWaJL2BZh/Wi2yvbDueuFuXEvxzgO/avr3tWIapDNQ9j6bXvkFpdgW7BN3jEn5J/2P70S2FFDFyujTI+izg55JOlPT0UoOvwTeBg4GVNFcQ/om+C55G2O8k3XURmqSDgZtajCdi5HSmBw9QBiAPolm4al/gNNsvazeqmZF0qe1d245j2CTtRLPxdm/lxeXAi23/or2oIkZLLb3Ygdi+U9IpNIs9bUzT8x3pBA+cK+mRti9pO5AhG7e9V5mZIdu3lYHXiBhQZ3rwkhbTbBrxRJo1M74KfH9UB4X69pidDywCrgZupxlAdgXTPyfaoOUi21UtrhYxm7rUg/97mrXFX1HJQOsz2g5gNkjameaq3M0kPbfvoQX0XakbEZPrTIK3vaTtGIaptrXt+zyM5pfXfYH+DSNuA17eRkARo6pLJZrnAsfSLE8g7i5lLGg1sJiQpL1tn9d2HBGjrEsJfhnwTNtXtB1LTK7iRdQi5kyX5sH/Nsl9pFS1iFpEG7rUg/8ITcL4Bs1sE6COnY9qVNsiahFt6MwgK80sjL/QrEXTYyAJfv1U1SJqEW3oTIK3/ZK2Y4gpOU7S5sDbaDaq3gR4e7shRYyWLpVoFgIfo9n0w8DZwNG2l7caWEyo1kXUIuZSlwZZP0vTE3wAzXZ93yptsX6qdRG1iDnTpR78RMvP3qMt1g+1LqIWMZe61IO/SdKLJM0rx4uAm9sOKtbqXEmPbDuIiFHWpR78A4F/BfamqcGfC7zW9q9aDSxWU/siahFzqUsJ/gTgdbZvKffvB/zfXBm5fpH0oHU9XvEaPBFD15lpksCjeskdwPbvJe3WZkBxT0ngEcPTpRr8WJlXDdzVg+/SL7iI6JguJbgP0AzcfY2mxvsC4Jh2Q4qImD2dqcEDSNoFeBLNgN3pti9vOaSIiFnTqQQfEdElXarBR0R0ShJ8RESlkuAjIiqVBB8RUan/D8tnM2IAuFOfAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"im = ax.pcolor(grouped_pivot, cmap='RdBu')\n",
"\n",
"#label names\n",
"row_labels = grouped_pivot.columns.levels[1]\n",
"col_labels = grouped_pivot.index\n",
"\n",
"#move ticks and labels to the center\n",
"ax.set_xticks(np.arange(grouped_pivot.shape[1]) + 0.5, minor=False)\n",
"ax.set_yticks(np.arange(grouped_pivot.shape[0]) + 0.5, minor=False)\n",
"\n",
"#insert labels\n",
"ax.set_xticklabels(row_labels, minor=False)\n",
"ax.set_yticklabels(col_labels, minor=False)\n",
"\n",
"#rotate label if too long\n",
"plt.xticks(rotation=90)\n",
"\n",
"fig.colorbar(im)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Visualization is very important in data science, and Python visualization packages provide great freedom. We will go more in-depth in a separate Python Visualizations course.</p>\n",
"\n",
"<p>The main question we want to answer in this module, is \"What are the main characteristics which have the most impact on the car price?\".</p>\n",
"\n",
"<p>To get a better measure of the important characteristics, we look at the correlation of these variables with the car price, in other words: how is the car price dependent on this variable?</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"correlation_causation\">5. Correlation and Causation</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><b>Correlation</b>: a measure of the extent of interdependence between variables.</p>\n",
"\n",
"<p><b>Causation</b>: the relationship between cause and effect between two variables.</p>\n",
"\n",
"<p>It is important to know the difference between these two and that correlation does not imply causation. Determining correlation is much simpler the determining causation as causation may require independent experimentation.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p3>Pearson Correlation</p>\n",
"\n",
"<p>The Pearson Correlation measures the linear dependence between two variables X and Y.</p>\n",
"<p>The resulting coefficient is a value between -1 and 1 inclusive, where:</p>\n",
"<ul>\n",
" <li><b>1</b>: Total positive linear correlation.</li>\n",
" <li><b>0</b>: No linear correlation, the two variables most likely do not affect each other.</li>\n",
" <li><b>-1</b>: Total negative linear correlation.</li>\n",
"</ul>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Pearson Correlation is the default method of the function \"corr\". Like before we can calculate the Pearson Correlation of the of the 'int64' or 'float64' variables.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" sometimes we would like to know the significant of the correlation estimate. \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>P-value</b>: \n",
"\n",
"<p>What is this P-value? The P-value is the probability value that the correlation between these two variables is statistically significant. Normally, we choose a significance level of 0.05, which means that we are 95% confident that the correlation between the variables is significant.</p>\n",
"\n",
"By convention, when the\n",
"\n",
"<ul>\n",
" <li>p-value is $<$ 0.001: we say there is strong evidence that the correlation is significant.</li>\n",
" <li>the p-value is $<$ 0.05: there is moderate evidence that the correlation is significant.</li>\n",
" <li>the p-value is $<$ 0.1: there is weak evidence that the correlation is significant.</li>\n",
" <li>the p-value is $>$ 0.1: there is no evidence that the correlation is significant.</li>\n",
"</ul>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can obtain this information using \"stats\" module in the \"scipy\" library.\n"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"from scipy import stats"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Wheel-base vs Price</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the Pearson Correlation Coefficient and P-value of 'wheel-base' and 'price'. \n"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.584641822265508 with a P-value of P = 8.076488270733218e-20\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['wheel-base'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between wheel-base and price is statistically significant, although the linear relationship isn't extremely strong (~0.585)</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Horsepower vs Price</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'horsepower' and 'price'.\n"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8095745670036562 with a P-value of P = 6.369057428259195e-48\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['horsepower'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"\n",
"<p>Since the p-value is $<$ 0.001, the correlation between horsepower and price is statistically significant, and the linear relationship is quite strong (~0.809, close to 1)</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Length vs Price</h3>\n",
"\n",
"Let's calculate the Pearson Correlation Coefficient and P-value of 'length' and 'price'.\n"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.6906283804483639 with a P-value of P = 8.016477466159328e-30\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['length'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between length and price is statistically significant, and the linear relationship is moderately strong (~0.691).</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Width vs Price</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'width' and 'price':\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.7512653440522675 with a P-value of P = 9.200335510481123e-38\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['width'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Conclusion:\n",
"\n",
"Since the p-value is < 0.001, the correlation between width and price is statistically significant, and the linear relationship is quite strong (~0.751).\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Curb-weight vs Price\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'curb-weight' and 'price':\n"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8344145257702843 with a P-value of P = 2.189577238894065e-53\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['curb-weight'], df['price'])\n",
"print( \"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between curb-weight and price is statistically significant, and the linear relationship is quite strong (~0.834).</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Engine-size vs Price</h3>\n",
"\n",
"Let's calculate the Pearson Correlation Coefficient and P-value of 'engine-size' and 'price':\n"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8723351674455185 with a P-value of P = 9.265491622198389e-64\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['engine-size'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"\n",
"<p>Since the p-value is $<$ 0.001, the correlation between engine-size and price is statistically significant, and the linear relationship is very strong (~0.872).</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Bore vs Price</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'bore' and 'price':\n"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.5431553832626603 with a P-value of P = 8.049189483935261e-17\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['bore'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between bore and price is statistically significant, but the linear relationship is only moderate (~0.521).</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can relate the process for each 'City-mpg' and 'Highway-mpg':\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>City-mpg vs Price</h3>\n"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is -0.6865710067844678 with a P-value of P = 2.321132065567641e-29\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['city-mpg'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between city-mpg and price is statistically significant, and the coefficient of ~ -0.687 shows that the relationship is negative and moderately strong.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Highway-mpg vs Price</h3>\n"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is -0.704692265058953 with a P-value of P = 1.7495471144476358e-31\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['highway-mpg'], df['price'])\n",
"print( \"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Conclusion:\n",
"\n",
"Since the p-value is < 0.001, the correlation between highway-mpg and price is statistically significant, and the coefficient of ~ -0.705 shows that the relationship is negative and moderately strong.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"anova\">6. ANOVA</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>ANOVA: Analysis of Variance</h3>\n",
"<p>The Analysis of Variance (ANOVA) is a statistical method used to test whether there are significant differences between the means of two or more groups. ANOVA returns two parameters:</p>\n",
"\n",
"<p><b>F-test score</b>: ANOVA assumes the means of all groups are the same, calculates how much the actual means deviate from the assumption, and reports it as the F-test score. A larger score means there is a larger difference between the means.</p>\n",
"\n",
"<p><b>P-value</b>: P-value tells how statistically significant is our calculated score value.</p>\n",
"\n",
"<p>If our price variable is strongly correlated with the variable we are analyzing, expect ANOVA to return a sizeable F-test score and a small p-value.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Drive Wheels</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Since ANOVA analyzes the difference between different groups of the same variable, the groupby function will come in handy. Because the ANOVA algorithm averages the data automatically, we do not need to take the average before hand.</p>\n",
"\n",
"<p>Let's see if different types 'drive-wheels' impact 'price', we group the data.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 49,
"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>drive-wheels</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>rwd</td>\n",
" <td>13495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>rwd</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>fwd</td>\n",
" <td>13950.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4wd</td>\n",
" <td>17450.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>fwd</td>\n",
" <td>15250.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>136</th>\n",
" <td>4wd</td>\n",
" <td>7603.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels price\n",
"0 rwd 13495.0\n",
"1 rwd 16500.0\n",
"3 fwd 13950.0\n",
"4 4wd 17450.0\n",
"5 fwd 15250.0\n",
"136 4wd 7603.0"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_test2=df_gptest[['drive-wheels', 'price']].groupby(['drive-wheels'])\n",
"grouped_test2.head(2)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"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>drive-wheels</th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>13495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>13950.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4wd</td>\n",
" <td>sedan</td>\n",
" <td>17450.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>196</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>16845.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>197</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>19045.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>198</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21485.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>199</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>22470.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>200</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>22625.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>201 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" drive-wheels body-style price\n",
"0 rwd convertible 13495.0\n",
"1 rwd convertible 16500.0\n",
"2 rwd hatchback 16500.0\n",
"3 fwd sedan 13950.0\n",
"4 4wd sedan 17450.0\n",
".. ... ... ...\n",
"196 rwd sedan 16845.0\n",
"197 rwd sedan 19045.0\n",
"198 rwd sedan 21485.0\n",
"199 rwd sedan 22470.0\n",
"200 rwd sedan 22625.0\n",
"\n",
"[201 rows x 3 columns]"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_gptest"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can obtain the values of the method group using the method \"get_group\". \n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4 17450.0\n",
"136 7603.0\n",
"140 9233.0\n",
"141 11259.0\n",
"144 8013.0\n",
"145 11694.0\n",
"150 7898.0\n",
"151 8778.0\n",
"Name: price, dtype: float64"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_test2.get_group('4wd')['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can use the function 'f_oneway' in the module 'stats' to obtain the <b>F-test score</b> and <b>P-value</b>.\n"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 67.95406500780399 , P = 3.3945443577151245e-23\n"
]
}
],
"source": [
"# ANOVA\n",
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'], grouped_test2.get_group('rwd')['price'], grouped_test2.get_group('4wd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a great result, with a large F test score showing a strong correlation and a P value of almost 0 implying almost certain statistical significance. But does this mean all three tested groups are all this highly correlated? \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Separately: fwd and rwd\n"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 130.5533160959111 , P = 2.2355306355677845e-23\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'], grouped_test2.get_group('rwd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's examine the other groups \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4wd and rwd\n"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 8.580681368924756 , P = 0.004411492211225333\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('rwd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>4wd and fwd</h4>\n"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 0.665465750252303 , P = 0.41620116697845666\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('fwd')['price']) \n",
" \n",
"print(\"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Conclusion: Important Variables</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We now have a better idea of what our data looks like and which variables are important to take into account when predicting the car price. We have narrowed it down to the following variables:</p>\n",
"\n",
"Continuous numerical variables:\n",
"\n",
"<ul>\n",
" <li>Length</li>\n",
" <li>Width</li>\n",
" <li>Curb-weight</li>\n",
" <li>Engine-size</li>\n",
" <li>Horsepower</li>\n",
" <li>City-mpg</li>\n",
" <li>Highway-mpg</li>\n",
" <li>Wheel-base</li>\n",
" <li>Bore</li>\n",
"</ul>\n",
" \n",
"Categorical variables:\n",
"<ul>\n",
" <li>Drive-wheels</li>\n",
"</ul>\n",
"\n",
"<p>As we now move into building machine learning models to automate our analysis, feeding the model with variables that meaningfully affect our target variable will improve our model's prediction performance.</p>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Thank you for completing this lab!\n",
"\n",
"## Author\n",
"\n",
"<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>\n",
"\n",
"### Other Contributors\n",
"\n",
"<a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>\n",
"\n",
"Bahare Talayian\n",
"\n",
"Eric Xiao\n",
"\n",
"Steven Dong\n",
"\n",
"Parizad\n",
"\n",
"Hima Vasudevan\n",
"\n",
"<a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a>\n",
"\n",
"<a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"## Change Log\n",
"\n",
"| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n",
"| ----------------- | ------- | ---------- | ---------------------------------- |\n",
"| 2020-10-30 | 2.1 | Lakshmi | changed URL of csv |\n",
"| 2020-08-27 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n",
"\n",
"<hr>\n",
"\n",
"## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\n"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"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.6.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment