Skip to content

Instantly share code, notes, and snippets.

@AakashVasudevan
Created November 23, 2020 02:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AakashVasudevan/755a3f57a41cc92835a70b3044bd929c to your computer and use it in GitHub Desktop.
Save AakashVasudevan/755a3f57a41cc92835a70b3044bd929c 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://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.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": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"float64\n",
"\n",
"-->\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": 6,
"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>symboling</th>\n",
" <td>1.000000</td>\n",
" <td>0.466264</td>\n",
" <td>-0.535987</td>\n",
" <td>-0.365404</td>\n",
" <td>-0.242423</td>\n",
" <td>-0.550160</td>\n",
" <td>-0.233118</td>\n",
" <td>-0.110581</td>\n",
" <td>-0.140019</td>\n",
" <td>-0.008245</td>\n",
" <td>-0.182196</td>\n",
" <td>0.075819</td>\n",
" <td>0.279740</td>\n",
" <td>-0.035527</td>\n",
" <td>0.036233</td>\n",
" <td>-0.082391</td>\n",
" <td>0.066171</td>\n",
" <td>-0.196735</td>\n",
" <td>0.196735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>normalized-losses</th>\n",
" <td>0.466264</td>\n",
" <td>1.000000</td>\n",
" <td>-0.056661</td>\n",
" <td>0.019424</td>\n",
" <td>0.086802</td>\n",
" <td>-0.373737</td>\n",
" <td>0.099404</td>\n",
" <td>0.112360</td>\n",
" <td>-0.029862</td>\n",
" <td>0.055563</td>\n",
" <td>-0.114713</td>\n",
" <td>0.217299</td>\n",
" <td>0.239543</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.181877</td>\n",
" <td>0.133999</td>\n",
" <td>0.238567</td>\n",
" <td>-0.101546</td>\n",
" <td>0.101546</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wheel-base</th>\n",
" <td>-0.535987</td>\n",
" <td>-0.056661</td>\n",
" <td>1.000000</td>\n",
" <td>0.876024</td>\n",
" <td>0.814507</td>\n",
" <td>0.590742</td>\n",
" <td>0.782097</td>\n",
" <td>0.572027</td>\n",
" <td>0.493244</td>\n",
" <td>0.158502</td>\n",
" <td>0.250313</td>\n",
" <td>0.371147</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.543304</td>\n",
" <td>0.584642</td>\n",
" <td>0.476153</td>\n",
" <td>0.307237</td>\n",
" <td>-0.307237</td>\n",
" </tr>\n",
" <tr>\n",
" <th>length</th>\n",
" <td>-0.365404</td>\n",
" <td>0.019424</td>\n",
" <td>0.876024</td>\n",
" <td>1.000000</td>\n",
" <td>0.857170</td>\n",
" <td>0.492063</td>\n",
" <td>0.880665</td>\n",
" <td>0.685025</td>\n",
" <td>0.608971</td>\n",
" <td>0.124139</td>\n",
" <td>0.159733</td>\n",
" <td>0.579821</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.698142</td>\n",
" <td>0.690628</td>\n",
" <td>0.657373</td>\n",
" <td>0.211187</td>\n",
" <td>-0.211187</td>\n",
" </tr>\n",
" <tr>\n",
" <th>width</th>\n",
" <td>-0.242423</td>\n",
" <td>0.086802</td>\n",
" <td>0.814507</td>\n",
" <td>0.857170</td>\n",
" <td>1.000000</td>\n",
" <td>0.306002</td>\n",
" <td>0.866201</td>\n",
" <td>0.729436</td>\n",
" <td>0.544885</td>\n",
" <td>0.188829</td>\n",
" <td>0.189867</td>\n",
" <td>0.615077</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.680635</td>\n",
" <td>0.751265</td>\n",
" <td>0.673363</td>\n",
" <td>0.244356</td>\n",
" <td>-0.244356</td>\n",
" </tr>\n",
" <tr>\n",
" <th>height</th>\n",
" <td>-0.550160</td>\n",
" <td>-0.373737</td>\n",
" <td>0.590742</td>\n",
" <td>0.492063</td>\n",
" <td>0.306002</td>\n",
" <td>1.000000</td>\n",
" <td>0.307581</td>\n",
" <td>0.074694</td>\n",
" <td>0.180449</td>\n",
" <td>-0.062704</td>\n",
" <td>0.259737</td>\n",
" <td>-0.087027</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.104812</td>\n",
" <td>0.135486</td>\n",
" <td>0.003811</td>\n",
" <td>0.281578</td>\n",
" <td>-0.281578</td>\n",
" </tr>\n",
" <tr>\n",
" <th>curb-weight</th>\n",
" <td>-0.233118</td>\n",
" <td>0.099404</td>\n",
" <td>0.782097</td>\n",
" <td>0.880665</td>\n",
" <td>0.866201</td>\n",
" <td>0.307581</td>\n",
" <td>1.000000</td>\n",
" <td>0.849072</td>\n",
" <td>0.644060</td>\n",
" <td>0.167562</td>\n",
" <td>0.156433</td>\n",
" <td>0.757976</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.794889</td>\n",
" <td>0.834415</td>\n",
" <td>0.785353</td>\n",
" <td>0.221046</td>\n",
" <td>-0.221046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>-0.110581</td>\n",
" <td>0.112360</td>\n",
" <td>0.572027</td>\n",
" <td>0.685025</td>\n",
" <td>0.729436</td>\n",
" <td>0.074694</td>\n",
" <td>0.849072</td>\n",
" <td>1.000000</td>\n",
" <td>0.572609</td>\n",
" <td>0.209523</td>\n",
" <td>0.028889</td>\n",
" <td>0.822676</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.679571</td>\n",
" <td>0.872335</td>\n",
" <td>0.745059</td>\n",
" <td>0.070779</td>\n",
" <td>-0.070779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>-0.140019</td>\n",
" <td>-0.029862</td>\n",
" <td>0.493244</td>\n",
" <td>0.608971</td>\n",
" <td>0.544885</td>\n",
" <td>0.180449</td>\n",
" <td>0.644060</td>\n",
" <td>0.572609</td>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.591309</td>\n",
" <td>0.543155</td>\n",
" <td>0.554610</td>\n",
" <td>0.054458</td>\n",
" <td>-0.054458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.008245</td>\n",
" <td>0.055563</td>\n",
" <td>0.158502</td>\n",
" <td>0.124139</td>\n",
" <td>0.188829</td>\n",
" <td>-0.062704</td>\n",
" <td>0.167562</td>\n",
" <td>0.209523</td>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.034696</td>\n",
" <td>-0.035201</td>\n",
" <td>0.082310</td>\n",
" <td>0.037300</td>\n",
" <td>0.241303</td>\n",
" <td>-0.241303</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>-0.182196</td>\n",
" <td>-0.114713</td>\n",
" <td>0.250313</td>\n",
" <td>0.159733</td>\n",
" <td>0.189867</td>\n",
" <td>0.259737</td>\n",
" <td>0.156433</td>\n",
" <td>0.028889</td>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" <td>-0.435780</td>\n",
" <td>0.331425</td>\n",
" <td>0.268465</td>\n",
" <td>0.071107</td>\n",
" <td>-0.299372</td>\n",
" <td>0.985231</td>\n",
" <td>-0.985231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.075819</td>\n",
" <td>0.217299</td>\n",
" <td>0.371147</td>\n",
" <td>0.579821</td>\n",
" <td>0.615077</td>\n",
" <td>-0.087027</td>\n",
" <td>0.757976</td>\n",
" <td>0.822676</td>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" <td>0.107885</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.804575</td>\n",
" <td>0.809575</td>\n",
" <td>0.889488</td>\n",
" <td>-0.169053</td>\n",
" <td>0.169053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>0.279740</td>\n",
" <td>0.239543</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.435780</td>\n",
" <td>0.107885</td>\n",
" <td>1.000000</td>\n",
" <td>-0.115413</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" <td>0.115830</td>\n",
" <td>-0.475812</td>\n",
" <td>0.475812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-mpg</th>\n",
" <td>-0.035527</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.034696</td>\n",
" <td>0.331425</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.115413</td>\n",
" <td>1.000000</td>\n",
" <td>0.972044</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.949713</td>\n",
" <td>0.265676</td>\n",
" <td>-0.265676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>0.036233</td>\n",
" <td>-0.181877</td>\n",
" <td>-0.543304</td>\n",
" <td>-0.698142</td>\n",
" <td>-0.680635</td>\n",
" <td>-0.104812</td>\n",
" <td>-0.794889</td>\n",
" <td>-0.679571</td>\n",
" <td>-0.591309</td>\n",
" <td>-0.035201</td>\n",
" <td>0.268465</td>\n",
" <td>-0.804575</td>\n",
" <td>-0.058598</td>\n",
" <td>0.972044</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" <td>-0.930028</td>\n",
" <td>0.198690</td>\n",
" <td>-0.198690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.082391</td>\n",
" <td>0.133999</td>\n",
" <td>0.584642</td>\n",
" <td>0.690628</td>\n",
" <td>0.751265</td>\n",
" <td>0.135486</td>\n",
" <td>0.834415</td>\n",
" <td>0.872335</td>\n",
" <td>0.543155</td>\n",
" <td>0.082310</td>\n",
" <td>0.071107</td>\n",
" <td>0.809575</td>\n",
" <td>-0.101616</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" <td>0.789898</td>\n",
" <td>0.110326</td>\n",
" <td>-0.110326</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-L/100km</th>\n",
" <td>0.066171</td>\n",
" <td>0.238567</td>\n",
" <td>0.476153</td>\n",
" <td>0.657373</td>\n",
" <td>0.673363</td>\n",
" <td>0.003811</td>\n",
" <td>0.785353</td>\n",
" <td>0.745059</td>\n",
" <td>0.554610</td>\n",
" <td>0.037300</td>\n",
" <td>-0.299372</td>\n",
" <td>0.889488</td>\n",
" <td>0.115830</td>\n",
" <td>-0.949713</td>\n",
" <td>-0.930028</td>\n",
" <td>0.789898</td>\n",
" <td>1.000000</td>\n",
" <td>-0.241282</td>\n",
" <td>0.241282</td>\n",
" </tr>\n",
" <tr>\n",
" <th>diesel</th>\n",
" <td>-0.196735</td>\n",
" <td>-0.101546</td>\n",
" <td>0.307237</td>\n",
" <td>0.211187</td>\n",
" <td>0.244356</td>\n",
" <td>0.281578</td>\n",
" <td>0.221046</td>\n",
" <td>0.070779</td>\n",
" <td>0.054458</td>\n",
" <td>0.241303</td>\n",
" <td>0.985231</td>\n",
" <td>-0.169053</td>\n",
" <td>-0.475812</td>\n",
" <td>0.265676</td>\n",
" <td>0.198690</td>\n",
" <td>0.110326</td>\n",
" <td>-0.241282</td>\n",
" <td>1.000000</td>\n",
" <td>-1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>gas</th>\n",
" <td>0.196735</td>\n",
" <td>0.101546</td>\n",
" <td>-0.307237</td>\n",
" <td>-0.211187</td>\n",
" <td>-0.244356</td>\n",
" <td>-0.281578</td>\n",
" <td>-0.221046</td>\n",
" <td>-0.070779</td>\n",
" <td>-0.054458</td>\n",
" <td>-0.241303</td>\n",
" <td>-0.985231</td>\n",
" <td>0.169053</td>\n",
" <td>0.475812</td>\n",
" <td>-0.265676</td>\n",
" <td>-0.198690</td>\n",
" <td>-0.110326</td>\n",
" <td>0.241282</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 \\\n",
"symboling 1.000000 0.466264 -0.535987 -0.365404 \n",
"normalized-losses 0.466264 1.000000 -0.056661 0.019424 \n",
"wheel-base -0.535987 -0.056661 1.000000 0.876024 \n",
"length -0.365404 0.019424 0.876024 1.000000 \n",
"width -0.242423 0.086802 0.814507 0.857170 \n",
"height -0.550160 -0.373737 0.590742 0.492063 \n",
"curb-weight -0.233118 0.099404 0.782097 0.880665 \n",
"engine-size -0.110581 0.112360 0.572027 0.685025 \n",
"bore -0.140019 -0.029862 0.493244 0.608971 \n",
"stroke -0.008245 0.055563 0.158502 0.124139 \n",
"compression-ratio -0.182196 -0.114713 0.250313 0.159733 \n",
"horsepower 0.075819 0.217299 0.371147 0.579821 \n",
"peak-rpm 0.279740 0.239543 -0.360305 -0.285970 \n",
"city-mpg -0.035527 -0.225016 -0.470606 -0.665192 \n",
"highway-mpg 0.036233 -0.181877 -0.543304 -0.698142 \n",
"price -0.082391 0.133999 0.584642 0.690628 \n",
"city-L/100km 0.066171 0.238567 0.476153 0.657373 \n",
"diesel -0.196735 -0.101546 0.307237 0.211187 \n",
"gas 0.196735 0.101546 -0.307237 -0.211187 \n",
"\n",
" width height curb-weight engine-size bore \\\n",
"symboling -0.242423 -0.550160 -0.233118 -0.110581 -0.140019 \n",
"normalized-losses 0.086802 -0.373737 0.099404 0.112360 -0.029862 \n",
"wheel-base 0.814507 0.590742 0.782097 0.572027 0.493244 \n",
"length 0.857170 0.492063 0.880665 0.685025 0.608971 \n",
"width 1.000000 0.306002 0.866201 0.729436 0.544885 \n",
"height 0.306002 1.000000 0.307581 0.074694 0.180449 \n",
"curb-weight 0.866201 0.307581 1.000000 0.849072 0.644060 \n",
"engine-size 0.729436 0.074694 0.849072 1.000000 0.572609 \n",
"bore 0.544885 0.180449 0.644060 0.572609 1.000000 \n",
"stroke 0.188829 -0.062704 0.167562 0.209523 -0.055390 \n",
"compression-ratio 0.189867 0.259737 0.156433 0.028889 0.001263 \n",
"horsepower 0.615077 -0.087027 0.757976 0.822676 0.566936 \n",
"peak-rpm -0.245800 -0.309974 -0.279361 -0.256733 -0.267392 \n",
"city-mpg -0.633531 -0.049800 -0.749543 -0.650546 -0.582027 \n",
"highway-mpg -0.680635 -0.104812 -0.794889 -0.679571 -0.591309 \n",
"price 0.751265 0.135486 0.834415 0.872335 0.543155 \n",
"city-L/100km 0.673363 0.003811 0.785353 0.745059 0.554610 \n",
"diesel 0.244356 0.281578 0.221046 0.070779 0.054458 \n",
"gas -0.244356 -0.281578 -0.221046 -0.070779 -0.054458 \n",
"\n",
" stroke compression-ratio horsepower peak-rpm \\\n",
"symboling -0.008245 -0.182196 0.075819 0.279740 \n",
"normalized-losses 0.055563 -0.114713 0.217299 0.239543 \n",
"wheel-base 0.158502 0.250313 0.371147 -0.360305 \n",
"length 0.124139 0.159733 0.579821 -0.285970 \n",
"width 0.188829 0.189867 0.615077 -0.245800 \n",
"height -0.062704 0.259737 -0.087027 -0.309974 \n",
"curb-weight 0.167562 0.156433 0.757976 -0.279361 \n",
"engine-size 0.209523 0.028889 0.822676 -0.256733 \n",
"bore -0.055390 0.001263 0.566936 -0.267392 \n",
"stroke 1.000000 0.187923 0.098462 -0.065713 \n",
"compression-ratio 0.187923 1.000000 -0.214514 -0.435780 \n",
"horsepower 0.098462 -0.214514 1.000000 0.107885 \n",
"peak-rpm -0.065713 -0.435780 0.107885 1.000000 \n",
"city-mpg -0.034696 0.331425 -0.822214 -0.115413 \n",
"highway-mpg -0.035201 0.268465 -0.804575 -0.058598 \n",
"price 0.082310 0.071107 0.809575 -0.101616 \n",
"city-L/100km 0.037300 -0.299372 0.889488 0.115830 \n",
"diesel 0.241303 0.985231 -0.169053 -0.475812 \n",
"gas -0.241303 -0.985231 0.169053 0.475812 \n",
"\n",
" city-mpg highway-mpg price city-L/100km diesel \\\n",
"symboling -0.035527 0.036233 -0.082391 0.066171 -0.196735 \n",
"normalized-losses -0.225016 -0.181877 0.133999 0.238567 -0.101546 \n",
"wheel-base -0.470606 -0.543304 0.584642 0.476153 0.307237 \n",
"length -0.665192 -0.698142 0.690628 0.657373 0.211187 \n",
"width -0.633531 -0.680635 0.751265 0.673363 0.244356 \n",
"height -0.049800 -0.104812 0.135486 0.003811 0.281578 \n",
"curb-weight -0.749543 -0.794889 0.834415 0.785353 0.221046 \n",
"engine-size -0.650546 -0.679571 0.872335 0.745059 0.070779 \n",
"bore -0.582027 -0.591309 0.543155 0.554610 0.054458 \n",
"stroke -0.034696 -0.035201 0.082310 0.037300 0.241303 \n",
"compression-ratio 0.331425 0.268465 0.071107 -0.299372 0.985231 \n",
"horsepower -0.822214 -0.804575 0.809575 0.889488 -0.169053 \n",
"peak-rpm -0.115413 -0.058598 -0.101616 0.115830 -0.475812 \n",
"city-mpg 1.000000 0.972044 -0.686571 -0.949713 0.265676 \n",
"highway-mpg 0.972044 1.000000 -0.704692 -0.930028 0.198690 \n",
"price -0.686571 -0.704692 1.000000 0.789898 0.110326 \n",
"city-L/100km -0.949713 -0.930028 0.789898 1.000000 -0.241282 \n",
"diesel 0.265676 0.198690 0.110326 -0.241282 1.000000 \n",
"gas -0.265676 -0.198690 -0.110326 0.241282 -1.000000 \n",
"\n",
" gas \n",
"symboling 0.196735 \n",
"normalized-losses 0.101546 \n",
"wheel-base -0.307237 \n",
"length -0.211187 \n",
"width -0.244356 \n",
"height -0.281578 \n",
"curb-weight -0.221046 \n",
"engine-size -0.070779 \n",
"bore -0.054458 \n",
"stroke -0.241303 \n",
"compression-ratio -0.985231 \n",
"horsepower 0.169053 \n",
"peak-rpm 0.475812 \n",
"city-mpg -0.265676 \n",
"highway-mpg -0.198690 \n",
"price -0.110326 \n",
"city-L/100km 0.241282 \n",
"diesel -1.000000 \n",
"gas 1.000000 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"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": 7,
"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": 7,
"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": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"df[['bore', 'stroke', 'compression-ratio', 'horsepower']].corr() \n",
"\n",
"-->\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": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(0.0, 55682.36737933924)"
]
},
"execution_count": 8,
"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": 9,
"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": 9,
"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": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='highway-mpg', ylabel='price'>"
]
},
"execution_count": 10,
"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=\"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": 11,
"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": 11,
"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": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='peak-rpm', ylabel='price'>"
]
},
"execution_count": 12,
"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": 13,
"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": 13,
"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": 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>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": 14,
"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": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"#The correlation is 0.0823, the non-diagonal elements of the table.\n",
"#code:\n",
"df[[\"stroke\",\"price\"]].corr() \n",
"\n",
"-->\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": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='stroke', ylabel='price'>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEGCAYAAABPdROvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA//klEQVR4nO29e5Qc5XXo+9v9mJdmRhKSRsgaYUkgIhAxGGSMYy8iY98V/AjgEzmGe2O4CYmIDw745mXITYiD43WsY8cP4mOC/FgGkhgUJccmBOEYFEX2NQ9LGAwCAcpIWANCo8dI8+5H1b5/1Fc93T3dMz2a7unu6f1bq9XVu+urqaou1a79+PYWVcUwDMMwTpdItXfAMAzDqG9MkRiGYRgzwhSJYRiGMSNMkRiGYRgzwhSJYRiGMSNi1d6B2Wbx4sW6cuXKau+GYRhGXbFnz55jqrqk0HcNp0hWrlzJ7t27q70bhmEYdYWIvFbsO3NtGYZhGDPCFIlhGIYxI0yRGIZhGDPCFIlhGIYxI0yRGIZhGDOi4bK2DMMozM59fdyzq4dD/SOsWNjGTZevZsParmrvllEHmEViGAY79/Vxx0N76RscY0FrnL7BMe54aC879/VVe9eMOqDiikREoiLyMxF52H3+jIi8LiLPutcHs9a9XUT2i8jLIvJrWfJLROR5991dIiJO3iwiDzr5UyKystLHYxhzkXt29RCPCm1NMUSC93hUuGdXT7V3zagDZsMiuRV4KU/2ZVW9yL0eARCR84FrgXXAlcDXRSTq1r8b2ASsca8rnfxGoF9VzwG+DGyu6JEYxhzlUP8IrfFojqw1HqW3f6RKe2TUExVVJCLSDXwI+GYJq18NPKCqCVU9AOwHLhWRZUCnqj6hQReu+4Brssbc65a3Ae8LrRXDMEpnxcI2RlNejmw05dG9sK1Ke2TUE5W2SL4C/Cng58k/KSI/F5Fvi8hCJ1sOHMpap9fJlrvlfHnOGFVNA6eARfk7ISKbRGS3iOw+evTozI7IMOYgN12+mpSnjCTTqAbvKU+56fLV1d41ow6omCIRkQ8Dfaq6J++ru4GzgYuAw8DfhEMKbEYnkU82JlegukVV16vq+iVLCtYcM4yGZsPaLu68ah1dHS2cGk3R1dHCnVets6wtoyQqmf77buAqF0xvATpF5O9V9bfCFUTkG8DD7mMvsCJrfDfwhpN3F5Bnj+kVkRgwHzhRgWMxjDnPhrVdpjiM06JiFomq3q6q3aq6kiCIvkNVf8vFPEI+Arzglh8CrnWZWKsIgupPq+phYFBELnPxj+uB72eNucEtb3R/Y4JFYhiGYVSOakxI/J8ichGBC+ogcBOAqu4Vka3Ai0AauFlVw+jfJ4DvAK3AdvcC+BZwv4jsJ7BErp2dQzAMwzBCpNEe4NevX6/Wj8QwDGN6iMgeVV1f6Dub2W4YhmHMCFMkhmEYxowwRWIYhmHMCFMkhmEYxowwRWIYhmHMCFMkhmEYxowwRWIYhmHMCFMkhmEYxowwRWIYhmHMCOvZbhjGpFgvd2MqzCIxDKMo1svdKAWzSAzDAApbHtm93AHammKMJNPcs6vHrBIjgykSwzAylkc8KjmWx3AixbL5rTnrWi93Ix9zbRmGkWN5iATv8aiQ8tR6uRtTYorEMAwO9Y/QGo/myFrjUZpiEevlbkyJKRLDMFixsK2g5bGmq8N6uRtTUvEYiYhEgd3A66r6YRE5A3gQWEnQIfE3VbXfrXs7cCPgAbeo6g+c/BLGOyQ+AtyqqioizcB9wCXAceBjqnqw0sdkGHONmy5fzR0P7WUkmaY1HmU05WUsD+vlbkzFbFgktwIvZX2+DXhcVdcAj7vPiMj5BK1y1wFXAl93SgjgbmATQR/3Ne57CJROv6qeA3wZ2FzZQzGMucmGtV1meRinTUUtEhHpBj4EfA74Qye+Gtjglu8FdgKfdvIHVDUBHHB92C8VkYNAp6o+4bZ5H3ANQd/2q4HPuG1tA74mIqKN1j/YMMqAWR7G6VJpi+QrwJ8CfpZsqaoeBnDv4ZW7HDiUtV6vky13y/nynDGqmgZOAYvyd0JENonIbhHZffTo0RkekmEYhpFNxRSJiHwY6FPVPaUOKSDTSeSTjckVqG5R1fWqun7JkiUl7o5hGIZRCpV0bb0buEpEPgi0AJ0i8vfAERFZpqqHRWQZENZa6AVWZI3vBt5w8u4C8uwxvSISA+YDJyp1QIZhGMZEKmaRqOrtqtqtqisJgug7VPW3gIeAG9xqNwDfd8sPAdeKSLOIrCIIqj/t3F+DInKZiAhwfd6YcFsb3d+w+IhhGMYsUo0SKZ8HtorIjcAvgI8CqOpeEdkKvAikgZtVNUxs/wTj6b/b3QvgW8D9LjB/gkBhGYZhGLOINNoD/Pr163X37t3V3g3DMIy6QkT2qOr6Qt/ZzHbDMAxjRpgiMQzDMGaEKRLDMAxjRpgiMQzDMGaEKRLDMAxjRliHRMOgcJtZqztlGKVhisRoeIq1mb0TTJlgStaYGnNtGQ1PsTaz9+zqqfauVZ1QyfYNjuUo2Z37+qYebDQMpkiMhqdYm9ne/pEq7VHtYErWKAVTJEbDU6zNbPfCtirtUe1gStYoBVMkRt2xc18f1215kvds3sF1W56csZvlpstXk/KUkWQa1eA9bDPb6JiSNUrBFIlRV1TCZ29tZotjStYoBcvaMuqKbJ89QFtTjJFkmnt29czoxm9tZguzYW0XdxKc997+Ebota8sogCkSo6441D/CgtZ4jsx89pXFlGz9U+kUbnNtGXWF+ewNY3rMRgp3JXu2t4jI0yLynIjsFZG/cvLPiMjrIvKse30wa8ztIrJfRF4WkV/Lkl8iIs+77+5ynRJx3RQfdPKnRGRlpY7HqA3mks++3EkDhlGI2UjhrqRFkgCuUNULgYuAK0XkMvfdl1X1Ivd6BEBEzifocLgOuBL4uoiEeYd3A5sI2u+ucd8D3Aj0q+o5wJeBzRU8HqMGmCuBcZvoZ8wWs5HCXbEYieudPuQ+xt1rsnaMVwMPqGoCOODa514qIgeBTlV9AkBE7gOuIWi3ezXwGTd+G/A1ERHr2z63mQs++0olDRhGPisWttE3OJa51qD87uCKxkhEJCoizwJ9wA9V9Sn31SdF5Oci8m0RWehky4FDWcN7nWy5W86X54xR1TRwClhUYD82ichuEdl99OjR8hycYcwAm+hnzBaz4Q6uqCJRVU9VLwK6CayLCwjcVGcTuLsOA3/jVpdCm5hEPtmY/P3YoqrrVXX9kiVLpnUMhlEJVixs4/hwgp6jQ+x7c4Ceo0McH05Y0oBRdmbDHTwr6b+qelJEdgJXquoXQ7mIfAN42H3sBVZkDesG3nDy7gLy7DG9IhID5gMnKnEMxtxmtivcvmv1GTx98AQRgYhA0vPpG0xy3TvOqNjfNBqXSruDK5m1tUREFrjlVuD9wD4RWZa12keAF9zyQ8C1LhNrFUFQ/WlVPQwMishlLlvreuD7WWNucMsbgR0WHzGmSzUC30/0nGBJexNN0Qi+QlM0wpL2Jp7osecgo/6opEWyDLjXZV5FgK2q+rCI3C8iFxG4oA4CNwGo6l4R2Qq8CKSBm1U1nDDwCeA7QCtBkH27k38LuN8F5k8QZH0ZxrSoRuD7UP8Ii9ubWdLRkpGpqsVIjLqkkllbPwfeXkD+8UnGfA74XAH5buCCAvIx4KMz21Oj0anGbPnZyKQxjNnCZrYbDU81ZsvPpYmVhmGKxGh4qnFTnysTKw0DrGijYVStwu1cmFhpGGAWiWHkYCl/hjF9TJEYDY/VvTKMmWGuLaPhsbpXxlzH+pEYRoWxulfGXKau+5EYRr1gzbKMuUy99yMxjLrA5nTUF9YQbHrMhsVtisRoeGxOR/1giRHTZzYsbgu2GwY2p6NesMSI6XPT5au546G9jCTTtMajjKa8+upHYhiGUU4sMWL6zJl+JIZh1C+z3atlMqzY5elRt/1IDMOof2otJmGJEbWJKRLDMIoyG6mj08ESI2oTc20ZhlGUavRqmQpLjKg9Ktlqt0VEnhaR50Rkr4j8lZOfISI/FJFX3fvCrDG3i8h+EXlZRH4tS36JiDzvvrvLtdzFteV90MmfEpGVlToew2hEbLKmUQqVdG0lgCtU9ULgIuBKEbkMuA14XFXXAI+7z4jI+QStctcBVwJfd216Ae4GNhH0cV/jvge4EehX1XOALwObK3g8htFwWEzCKIWKKRINGHIf4+6lwNXAvU5+L3CNW74aeEBVE6p6ANgPXCoiy4BOVX1CVRW4L29MuK1twPtCa8UwjJljMQmjFCoaI3EWxR7gHOB/qepTIrJUVQ8DqOphEQmvyOXAk1nDe50s5Zbz5eGYQ25baRE5BSwCjuXtxyYCi4azzjqrfAdoGA2AxSSMqaho1paqeqp6EdBNYF1cMMnqhSwJnUQ+2Zj8/diiqutVdf2SJUum2GvDMAxjOsxK+q+qngR2EsQ2jjh3Fe49TEjvBVZkDesG3nDy7gLynDEiEgPmAycqcQyGYRhGYSqZtbVERBa45Vbg/cA+4CHgBrfaDcD33fJDwLUuE2sVQVD9aecGGxSRy1z84/q8MeG2NgI7XBzFMAzDmCUqGSNZBtzr4iQRYKuqPiwiTwBbReRG4BfARwFUda+IbAVeBNLAzaoa5h1+AvgO0Apsdy+AbwH3i8h+Akvk2goej2EYhlEAabQH+PXr1+vu3burvRuGYZwmtVT7q5EQkT2qur7Qd1YixTCMumHnvj7+eNtz/OxQP0cGxvjZoX7+eNtz1o+kypgiMQyjbvj89pc4OZJCfYiKoD6cHEnx+e0vVXvXGhqrtWUYRt1w4PgIEYFIJMj8FwH1lQPHrR9JNTGLxDAMw5gRpkgMw6gbVi+eh6/gq6Ioviq+BnKjepgiMQyjbvj0lWtZ2BZHgLTnI8DCtjifvnJttXetoTFFYhhG3bBhbRdf2Hghbz9rIcvmt/L2sxbyhY0XWvpvlSk52C4ibwXWqOpjbqZ6TFUHK7drhmEYE7EikrVHSRaJiPweQZn2e5yoG/hehfbJMAzDqCNKdW3dDLwbGABQ1VcBeyQwDMMwSlYkCVVNhh9cpd3Gqq1iGIZhFKRURfKfIvJnQKuI/B/APwH/WrndMgzDMOqFUhXJbcBR4HngJuAR4M8rtVOGYRhG/VBq1lYr8G1V/QZkWui2AlaXwDCMWcWq/9YepVokjxMojpBW4LHy745hGEZxdu7r446H9tI3OMaC1jh9g2Pc8dBeq/5bZUpVJC2qOhR+cMttkw0QkRUi8h8i8pKI7BWRW538MyLyuog8614fzBpzu4jsF5GXReTXsuSXiMjz7ru7XKdEXDfFB538KRFZOY1jNwyjzrhnVw/xqNDWFEMkeI9HhXt29VR71xqaUhXJsIhcHH4QkUuA0SnGpIE/UtXzgMuAm0XkfPfdl1X1Ivd6xG3zfIIOh+sIert/3bnQAO4GNhG0313jvge4EehX1XOALwObSzwewzDqkEP9I7TGozmy1niU3n7zsleTUmMknwL+SUTecJ+XAR+bbIDrtX7YLQ+KyEvA8kmGXA08oKoJ4IBrn3upiBwEOlX1CQARuQ+4hqDd7tXAZ9z4bcDXRESsb7sxV2n0+MCKhW30DY7R1jR+6xpNeXQvnNRBYlSYkiwSVf0psJagd/p/B85T1T2l/hHncno78JQTfVJEfi4i3xaRhU62HDiUNazXyZa75Xx5zhhVTQOngEUF/v4mEdktIruPHj1a6m4bRk1h8QG46fLVpDxlJJlGNXhPecpNl6+u9q41NJMqEhG5wr3/N+DXgXMJXEu/7mRTIiLtwD8Dn1LVAQI31dnARQQWy9+EqxYYrpPIJxuTK1DdoqrrVXX9kiVLStltw6g5LD4Q1Nm686p1dHW0cGo0RVdHC3deta6hrLJaZCrX1q8COwiUSD4K/Mtkg0UkTqBE/kFV/wVAVY9kff8N4GH3sRdYkTW8G3jDybsLyLPH9LrZ9vOBE1Mck2HUJYf6R1jQGs+RNWJ8wIo21h6TKhJV/UsRiQDbVXXrdDbsMqu+Bbykql/Kki9z8ROAjwAvuOWHgH8UkS8BbyGwfJ5WVU9EBkXkMgLX2PXA32aNuQF4AtgI7LD4iDFXqWZ8oNFjM8bkTBkjUVUf+ORpbPvdwMeBK/JSff+nS+X9OfBe4P9xf2cvsBV4EXgUuFlVPbetTwDfBPYD/0UQaIdAUS1ygfk/JJiBbxhzkmrFByw2Y0yFlPIALyJ/QZDu+yAwHMpVte7cSOvXr9fdu3dXezcM47QILYPe/hG6Z8kyuG7LkxMsoZFkmq6OFr676bKK/m2jdhCRPaq6vtB3pab//g5BTOS/58ktVcIwZpFqxAcsNmNMRakTEs8H/hfwHPAsQYxiXYX2yTCMGmLFwjZGU16OzOZuGNmUqkjuBc4D7iJQIuc5mWEYcxybu2FMRamurV9S1QuzPv+HiDxXiR0yDKO2sqQ2rO3iTpj12IxRP5RqkfzMpd8CICLvBP6/yuySYTQ2tZwlZbn1RiFKVSTvBH4iIgdd7asngF/NSuM1DKNM1NoM9lpWbEZtUKpr68qpVzEMY7oUcmHVWpZUtmIDaGuKMZJMc8+uHnNvGUCJikRVX6v0jhhGoxE+6cejkvOk39EcYzTl1UyF21pTbEbtUapryzCMMlPMhaWqNZUlZem/xlSYIjEajp37+rhuy5O8Z/MOrtvyZNV8/cWaNA0nvZqqcGvpv8ZUlBojMYw5QTF30p0w6zfqyYowFpvBXo20YEv/NabCFInRUNRS4Pimy1dzx0N7GUmmaY1HGU15kz7p79zXx59se47BsTRp3+fYYII/2fYcX9h44awoE1McRjHMtWU0FLXU83u6TZo2P7qP/pEUCsSiERToH0mx+dF9s7rfhpGPWSRGQ1FrPb+n86Tfc2yYiEBEgsagIqCi9BwbnmKkYVQWs0iMhsICx4ZRfkyRGA1FPff8XrWoDV/B9xVVxfcVXwO5YVSTirm2RGQFcB9wJuADW1T1qyJyBkGDrJXAQeA3VbXfjbkduBHwgFtU9QdOfgnwHaAVeAS4VVVVRJrd37gEOA58TFUPVuqYjLlBvQaOb/vAefzxtucYSqTxfCUaERY0x7ntA+dVe9eMBqeSFkka+CNVPQ+4DLhZRM4naIf7uKquAR53n3HfXUvQ5+RK4OsiEkZF7wY2EfRxX8N4yZYbgX5VPQf4MrC5gsdjGFVlw9ouvrjxQt6+YiFndrbw9hUL+eIkGVu1Ml/GmPtUzCJR1cPAYbc8KCIvAcuBq4ENbrV7gZ3Ap538AVVNAAdcH/ZLXZHITlV9AkBE7gOuIejbfjXwGbetbcDXRES0lP7BhlGHlGpN1dJ8GWPuMysxEhFZCbwdeApY6pRMqGzCq3o5cChrWK+TLXfL+fKcMaqaBk4Biwr8/U0isltEdh89erRMR2UYtUutVRA25jYVVyQi0g78M/ApVR2YbNUCMp1EPtmYXIHqFlVdr6rrlyxZMtUuG0bdU0vzZYy5T0XnkYhInECJ/IOq/osTHxGRZap6WESWAaHjthdYkTW8G3jDybsLyLPH9IpIDJgPnKjIwRjGLHLXY6/wzR8fYDjpMa8pyu++ZxW3vP/ckseXe75MLXVsNCpP2vNJpMOXh+dPHi2omEUiIgJ8C3hJVb+U9dVDwA1u+Qbg+1nya0WkWURWEQTVn3bur0ERucxt8/q8MeG2NgI7LD5i1Dt3PfYKX92xn9GURywSKICv7tjPXY+9UvI2yjlfxhpbzW18XxlNepwcSXJkYIxfHB/hFydGODIwxsmRJKNJj6nuqpW0SN4NfBx4XkSedbI/Az4PbBWRG4FfAB8FUNW9IrIVeJEg4+tmVQ1rV3+C8fTf7e4FgaK63wXmTxBkfRlGzTGdJ/pv/vgAEYFYJHjOiwikfZ9v/vhAyVZJOQst1lJ9MmNm+L6S9HwSKZ+E55FI+aQ8f8bbrWTW1o8pHMMAeF+RMZ8DPldAvhu4oIB8DKeIDKNWmW4G1XDSI4IylvJyAn6enz6tvz9TE73WGluZm600PF9Jpn2Szj2VSJdHaRTCam0ZRoW5Z1cPKc/j+FCapOfTFI3Q2Ror+kTfHIswkvQmyFWDm2g4ZrIbajnTf2upPpmlNRcm5flZSiN4T/uVURqFsBIphlFhXu0b5NhgkrSbjZ72lWODSV7tGyy4/hmthZ/vBDLpu1PFLcqZ/luueEs5JkhaWjMk0z6DYymODyU4fGqU144Pc8jFNPpHkowk07OqRMAsEsOoOMm0D3lVe30J3A4FiUx8vosA0ahk3ElTxS3K6Y7asLaLjb0nJ2SRlWoB7NzXx+ZH9/FK3xDxqLC0o/m0LYlac7NVkhzXlBf0qkmmfWoxn8gsEsOoMPFooECyiy0CNEULhxBXLGyjJRahORahNR6lNR4lHo0QjUjGnTTVPJFy9lnfua+P+598jWTaRwhuZvc/+VpJFkVoOR04NkxUQH1449QYaU9Py5KYq/3jU57PUCKdY2W8dnyYw6dGOT6cYGgsTSLl1aQSAVMkhlFxzl3ayaJ5TcSigqdKLCosmtfEmqWdBde/6fLVdLTE8HzF8/3gpUp7cyzjTprqhlrO9N+ZNNQKLSdPlUhEghfCsaHEaVkSc6ENQNrzGUmm6R9O8uapsYxrqm9gjFOjKUaTU8/bqDVMkRhGhbnp8tU0xaKcOb+FX1rawZnzW2iKRYve/Das7eILGy9kTVc7IoKIcM6SeTkFGqe6oW5Y28XGi5dzdDDBS28OcnQwwcaLl59WQDq7oZYgRESICCU11Aotp6ZoBM/XIHvI8xlJehwfTkzbkqi3NgChpXEiS2n84sQIb54aj2fUm9IohMVIjDlDraaFnu6cjgVtTSzpSBc8lqm2uXNfH9ueeZ0lHc2c5frBb3vmdd7WvWBWz0mY8dXeHOPIYCIjV+DIQILr3nHWtLdZq20AkmnfzdHwMnM1/Bp1RZUbUySzSK3e6OYCtZ4WOp2b32THApR0DZVzEuGqRW3sPzqM+Bq091XwFc5ZPLU1cdPlq7njob30jyQnfqmw/YU3p1X6pRZQ1SDF1imLpEu9rdX4xWxgimSWqPUbXbWZqZKd7lyNWiL/2E+OJAsey+ZH9zGc9Eq6hk4nu6nYbzCdhlqFtnHnVev47Xt/CgSz9KMixKIRPN+v+X7zszmpr56xGMksYfnvxSlHLafpztWoFQod+8tHBukbSEw4lv0ufbaUa2i62U2T/QalNtQqtg2ApmiEpqjQHIsSi9bmbadQzamczKlE2pRIEcwimSUaKf99upTDDTPtuRo1QqFjB/AUmvKOJe1ryaXhQ5fSSDJNq4uRTJbdNNVvUIprbrJtzMQ9VglUNeOSSqR9xlJezV8rtYwpklmilspM1BrlULLxqDCaCp4qwxsVFJ+rUSsUOvaQsNaWEMxRjEpwzZRyDU03wH+of4SoQM/RoYw7bXF707R+g8l+x89efUHV+s2nvNzSISnP3FPlxhTJLDHdJ8RGohxK9tylnRw4NsTg2HhcoaMlzqrF7ZXY5bJR6NhjESHpaaBBnCZRH96ysDWT8lvKNTSdAH97U5R9R4Yyn1Oex/CJUdYuLf38TfY7hu6xclQjnoz8mMZYanZrTjUqpkhmiZmWmZjLlEPJhts4c36sJhV1sUB2oWP3VYm6MvKhdeWpMq8pym0fOK8iN+OjWam5pcgLMdXvWO603cy8lFTpDZiMymCKZJaolbz+WqQcvTPK2X+j3EyVsZe/36dGU8xrinJsKJmxrs5sb2Y46VVsDsWJ0dSk8lKy6ir1G2THM8K5Gqm0mqVRQ1RMkYjIt4EPA32qeoGTfQb4PeCoW+3PVPUR993twI2AB9yiqj9w8ksYb2r1CHCrqqqINAP3AZcAx4GPqerBShxLOeZ/WHOgySnHDbJWJ6pNN5B93ZYn6RscY/WScbfSSDJNV0dLxfYxjCmJ5MrC0vWlpq7P5DfIVhgpTzOxjbSrUWbMLmGV4YGxNKMF2hpkU0mL5DvA1whu9tl8WVW/mC0QkfMJuhuuA94CPCYi57oOiXcDm4AnCRTJlQQdEm8E+lX1HBG5FtgMfKzcB1Gu+R+WtdW4TPe3r0Y8ra0pGvRACaP7Oi6vxENQOKkvdEmFyqMeFMbTPSd44KeHODwwyrLOVq59xwouXX1GtXerIKrKWMpnYCzF0FiagbEUg2NpBsbSDGaWg/dQaQyOBstj08hiq2SHxF0isrLE1a8GHlDVBHDAtc69VEQOAp2q+gSAiNwHXEOgSK4GPuPGbwO+JiIyVc92z1f6h5NBmqgEE6TE1Q6KiBCIJSP/u//8r7L8J7KsrcZlur99Ndx0v3/5ar7y+Kv4SkaJRCSQb93TO6OHoLTn57im6nlS39M9J/jqjleJRYTOlhjHhxN8dcer3MqaiioTX5WRhJelCPJu/qF8dHx5MBEsp7zKK+dqxEg+KSLXA7uBP1LVfmA5gcUR0utkKbecL8e9HwJQ1bSInAIWAcfy/6CIbCKwaljevaJwuYYiHDg+TGdLjETaQ1zn4KgIB48PcfjUaEbpkClqN66YJKOY4IZ3vZW/fuQlfE3RGo8y5p4yf+89q/D9oDKqMTc5HQujHG666bhkwzIl+ckgt7z/XJ7oOVGSIgzTalPpwEWV9gPFMZcC4A/89BCptMfJpEfK84lHI8xrivLATw+VpEg8X4Ob/2igDIYSWdbBaCEFESwPJdKU4zQK0N4So6MlRkdLnI7mGJ2tcTpaYnSGsvD75jidrYHsjHlNnL25+HZnW5HcDXyW4Jnns8DfAL9D4d7uOomcKb7LFapuAbYAvO2ii6f1cyzrbOX4cFDyWt3mR1MeSztap/QbZnPumR18csM5PPDTQ7w5MMqZziReuWQeB48HZSIyCgingJxyCqutkv1d/vqRArKsbQhZFpeY0ppNqmFhnI5L9pb3nzuh7pXvKze+ZyV/9a8vBg9BsXFFeN2lK+gbGCPlK6l0YxQoPHh8iKFEGjT4v5VK+/SnfUZTA2x//nCey2iixVCohfLpEI0IHc3jCqGzNUa7UwqhQshXDJ0tceY1x4iexkNrfIpqBLOqSFT1SLgsIt8AHnYfe4EVWat2A284eXcBefaYXhGJAfOBE+Xe52vfsYKv7niV0ZRHSzzi8tKVa9+xYurBeVy6+oxJn1pUlcAKrex/SMlTLACRSL6yyXXx5bsAw/UiIkQj498bhZntRIBS4xppL7ie076S9saD3GlvPCtq9ZJ2bi7wEHTB8vnBTbVOCcrve4ELaLR47GDcSkhzajQ9/r8z67/pcNLnC//+yrT3oTkWydzkOwrc+DtylMK40miNR2vq/9usKhIRWaaqh93HjwAvuOWHgH8UkS8RBNvXAE+rqicigyJyGfAUcD3wt1ljbgCeADYCO6aKj5wOl64+g1tZM+E/Ua0G10pBNbCtcp4gy/CgNCHWlHH1kXELhte+MFExkWOFZckz2wgwy2pqwgB/+FurQjwivHZ8mNdPjuJ500ufffnNAV7tG2Q05TE4lublNwem/X+gUkFqz1eGElmxgTxLINtFlB1DGBhLlcVdFLK0sznHHZRz8w+VRGugINqbA1dSc17Jm3qlkum/3wU2AItFpBf4S2CDiFxEoMsPAjcBqOpeEdkKvAikgZtdxhbAJxhP/93uXgDfAu53gfkTBFlfFWEqS8IICC0qr8IWVSHylZZIYGXluPkgo42yFZvkjc/+PvOWpbPyXYghOsVx5yvTzLisYeE2wn3OPcbcdSG4iXqufa/nK74Gv0NXRzPHhhK0xMZvVKMpj66OFhKp6T013P+Tg9z75GtB5d4IJNIe9z75GgAf/5WVJW2jlCB1yvMzN/xci6BQDGF8uVxWUUTIuIeCGEGehdAa51+fPczJ0QRjqSD2E48K7c1Ruhe286WPXViW/ahHpB7S7crJ2y66WL/3w13V3g0jj3pKqZwNZno+nu45wWcf3stIys8EG9viEf7iw+umfV5//W9/TCLtEY2M+8k936c5FuVf/+A9OeuGab1BBlEqc7P/1o8PMDCWIiISKD1VUp4SEaGjJcbgWHpCteLTJRaRzI2/syVGu7MSirmKQjdSW3M0YwEXI1shZru6b72isllb1SYejXDWonl7VHV9oe9tZrtRdaqVUlmrlON8vPzmQEaJQOACGEn5JbukstNNR5IeAjmuMAGGkx5//r0XJriPpptuWkyBtMQjE27+7Tmxg/HljKw1TkssUjG351x0dZcDUyRG1Xngp4eIRSRTIj1MkS01pXKuUY7zsXVPL9HIeFl9JcjA+sefHuLMBa0TYwc5cxEmppvmq4bw80/+6/iU+9LeHGMs5ZH2Ncd9qAoL5zXxu+9ZNa4MsmIITbHa7FtSzNXdyFa1KRKj6hweGKWzJfdSbIlHeHNgtEp7VF0OD4wSFTjUn8jMVVjQGuP1kyMcODY8Ib00Ey8YHVcKw5k001wV4KV9/sf2fWXZz5ZYhA++bVkmlhAEmbOsg+Y47S1BuunvfuenvHZiJJMooQo+yoKWGFdecGZmm0/3nOCux/bX9M24kMIAGtqqNkViVJ3suTohYymfMztbq7hX5UdVM1lPE2Ynj+ZmHWXPN0j7PqOpYBLtjffunvF+LGpvyrrZTwwod+bFDm598Gek0h6nRsf7oyxoi9Eci/LJ955T0t8cTnks7WymfySVUY4L25oYyXJr1YOL8+meE2z+wT6GXV+V/uEkm38wzMLWeENb1aZIjKpTzrk6s4GvynAiXbQ0Rfb8g6G8iWnlmuUtQCwqLG5v5sz5LXTmBZBf6D3JT3pOuPk94x0J/+93vbXkTKuQ5fPbOD6coKsjNwNs0bzmkrcRPiysyJoNP5ry6MraRj24OLf8qIeB0RSRiBCNCqoESQWjKVYvmZezbiNZ1aZIjKpTrQBm2vMZGEvnFLMrOv8gS2kMjaXLkuAsQEdWADm0BH7yX8eIRoREysdTzTyhJz2lJR6lKSq0NkUzCvdjl0w8Vx97xwru/8lBtu7pZTTl0RqP8puXdE9biUCg6Df/YB9HBscy5XzmNcW4eUNp1ki4jakeFurBxXmofyQzxwlcvEeUlB9Y0XPdqi6GKRKjJpjJXJ1EypuyNEVGUWTNRShXumnU3eg7wolmrbnZRCeGk/znK0eJRYXWeIS0p/jArVes4bKzF03Y3h8++NwEV99oymN0OElzLFLyE/vHf2XlaSmOoriy8qejRUt5WKhnF2csAmlf68aqLjemSIyaQFUZTnrFZyePFrAOEoEsOY1y15PRHItkMocyAeS80hQTC93FaYlPnm76hw8+RzwKQ4k0J0eC+EB7c5Stu3sLKpJiT+/xqOD5fk4QfmFbvGJP7GFlgQd3H6KjJZbTD2Usleaf9vTy/nVLx5/O3XfBTPqJ0zPfv24p7zt/qVtHMyuHM+9v+JW38oV/f5lE2qPFFTb1VLn+XW+ltSka9EeBnImn+SjjkzLDfiqKls2luGJBK6+dGAFfc1yGbz2jjU2Xn92wacGmSIyy4vma6ypK5MYQXu0b4qXDAwwnPWIRoa0pSsoLKqKWq1xFW1M0yyLILU1RsHaRe69UuulrJ4YZHE0hESESEdK+0j+cIu0PF1y/2NP7lh/18Nrx4WDGvtvOkYEEb12U65sPap8F60RFiLg04GhYIy0yXoYmewa9CJl1sqtRHx1KEBXo7R/JdGxc3N5E3+AYi9unjpOUWoX4Ixd3s7CtqWLFLcOJkL5TMhAqAnUvIOtzqODUaTtf4ZNXrOGz//YiI8kg3hWJCJ1NcX5/w9m8c/UiLjt7UUaRNhKmSIyCZHdHK2wlFHYfDSdKdxcloWg11IiQlTmUnVk0UZbtRgrTTWuJZNrPtBmA4IbtiU5qSYWuPnEKQAS+8aP/Csare/p396pYBN6yoJVoRIhFpOyT8TqaY7zaN0Q0EhToTPvK6yfHWNPVPuXY6VYhrmRxy0hEiBQsGl46/+2Sbs6YV5qyUx23jnynoDRfUfmBogqtrfxxXjjWD8bUakl+UyRzGFVlLO0zMDoeSK5Ed7TJiEclc8M/Nhi4ZMKaUNGI0BIXFs1r4eb3nj1e46glTlvT1OUq6oV4VEikg5tBdr2spqhkFEU0KsQjQjwaIRZ17xEhllW+O+Ep3Qtbx3u5xyIsa29iNOXTUsHif4NjqUyFYIGMoi7lqfueXT2kPI/jQ+mMNdPZGuPz21+acfvqalGqsgt+Wyjc8eL0CZVKIeUE467C0LrKdzVqnnLL3cbpWVOmSOqA6XRHG0rMrFxFMVrj0ZzZx9nzDwq5j8L35qxyFb9x909IpDzncgku6LGkz0A0xfqVc9OXHItEWL2knUMnRhhOjN9MO1rirFrczqrF86beiCPstJjfy70pGuG6LU9W5Ka8c18fhwcC11ZQMTpwXy5uj2dNeizOq32DnBpx6bKhO+5UgiMDCVYt1hm1r25UymFZTUaoZDxfM9bSVJgimUXyu6Nlt8Oc9e5obtZxZ7ZyyIod5PdHmKqxTSmcjounXohFIjTFIsSj4t4jNEUjRCLCLVes4Y6H9tLZGs/pkPj7v3r2tP5GoU6LA6MpFEh6fkVuyvfs6iEqkHI/UVABWBgc8zinq3PK8YV+8/CJ+c1TYzlWykx6wBvlI7SkpuMiNkVyGuSkmybSOaUpCqWgDrnlUp7gSiE73bQjK2gcWgftzXHmt06MIZxud7RyMZmLp16IOvdTU8y9shRGMcrVIbHQduIRIeXrlA2sSqFQUPzVvkFSXq5bxPcUTyZvFRwSjwqjqdzfPNxW2teMlXJsMEnKG5zW/hq1Q8MqkrBcRRAXKK07WrhcznTT7CBxwWqmddAdrVRWLmqnt3+Y4Zx+1zG6F5bu3pkt4tGIewlxpzDi0chpK+JyBZHzt/OezTtY0BrPWac1HqW3f2Ra2y0WFA8tnnxiESnpeM5d2smBY0PB/xtnfSS9QJlkWym+s0yn02feqB0aTpEcODbMb9z9k7KWqyiWbpo7F2HudkcrlXCGtOdMEc81wqrmpK2ICM3xCM2xKM2xceVRL4o6jJuEFgkEkxe7s0qRlEKx1rzFYmyl9mcP3XFnzo9l3HE9R4eJRiZapqrKn2x7jsGxNGnf59hggj/Z9hxf2HihKZMap5IdEr8NfBjoU9ULnOwM4EFgJUGHxN9U1X733e3AjQRNX29R1R84+SWMd0h8BLhVVVVEmoH7gEuA48DHVPXgVPuV9Hz6R1IT5GF3tMIpp+EEtLBRTnbTnFhOZo0xOSnPJ5l2dw5faYrObnwkHo3QHI/QEg8UR3OsvpV5obhJyivN7ZRN2Jo3m9Z4tOgk9kJGeTFrYmPvSb754wMMJz3mNUXpXtjKUCLFqdEg9hcRmN8aI5FW+kdSQRpzNIIq9I+k2PzovrpQJI1sTVXSIvkO8DWCm33IbcDjqvp5EbnNff60iJxP0Cp3HUHP9sdE5FzXbvduYBPwJIEiuZKg3e6NQL+qniMi1wKbgY9NtVNdHc38+YfOy2mMU2p3NGNmbPlRD6NJzz3xB0+io0mPLT/qKfsM4IjIeBzDuaaaK9jwqFqUK/5SzLKJCEUTPe567BVuef+5QHHX2Mbek2x75nWWdDRzllN0fQNjDCe9IN7ktj8w5qG+EotKbmBelJ5jhSdu1hLTnS8z16iYIlHVXSKyMk98NUEfd4B7gZ3Ap538AVVNAAdcH/ZLReQg0KmqTwCIyH3ANQSK5GrgM25b24CviYjoFEnQC9uauKIBfthapFjBu0PT9OfnE3dKIjsIXo4ss0pQiafWcsRfilk285qiDBaZZPrNHx/IKJLQNZb2lAOnhkl6PtGI8Hf/2cP8tljOPJKU5xMVXLwkTIeOcWQwMaNjqCbFXIONkok22zGSpap6GEBVD4tIeIaXE1gcIb1OlnLL+fJwzCG3rbSInAIWAcfy/6iIbCKwalje3RhF1OYihQLgU2VM1RI79/XVbAygmGVzz64enugp3AVxKJHOLB/qH2FgJMFAYtznFZQkgcSAR8wlKqR9JekpUSFnPoyqcnwoia8geXWszlk8vXhPNTjUP0JUoOfoUE4ZmekmPdQrtRJsL3Qn0Enkk42ZKFTdAmwBeNtFF9dmjYEGYMWCVg4eHyGV1fs7AqxcNLG6a2hlhBZGcyxac6VPCjGZxbH50X01HQMoZtkUUyQ5bkLfz1EiAGGc3lNoyrJChYnustGUxzld7bzeP8JQ0svETtqbotz2gfNO+5hmi5mUkZkLzLb9f0RElgG49z4n7wWyTYVu4A0n7y4gzxkjIjFgPnCiYntuzJhfPXcJ+TFaH3jfeV10tsZZ3NHMWxa0snLRPFac0UZXZwsL2ppoa6q9+lmFCP3kfYNjOX7ynfuCy7zn2HDGtSdIpnBiLccANqztoiVW+Ny3xcflJ0bTBdcJ8X0NZkw7awPg1SODvHT4FK8eGWRgNMUHLjiTpng0Z2JnU51kNmY86pr14vTKjdQjs61IHgJucMs3AN/Pkl8rIs0isgpYAzzt3GCDInKZBI8/1+eNCbe1EdgxVXzEqC7P9p6iq6OJtniEWATa4hGWzW/mhTcGWdze7EqyR+vGVZVPWFfqzVNjvHxkkDdPjZHyPO7Z1VPtXZsRqxa359woIgILWmNcsHxhRlas+CZAVIJujp4GwfTOlhjRCCDOqnGz3R95/jAxV7E4GBcUoayH8zeU9Fi+oCXnOJcvaCnbJORap5Lpv98lCKwvFpFe4C+BzwNbReRG4BfARwFUda+IbAVeBNLAzS5jC+ATjKf/bncvgG8B97vA/AmCrC+jBiiWMXV0KEFXRwtLO8cVharOGT9yobpS2TO2Vy1qY//R4bqKAezc18fBY0M5lqTvZqeXmmIciQhnzm/JBPF7+0dZ0tHM4vbx/iYjyXRwbgQiBMok7SnHh5OkvYHyHlQFKFYHLbuHy1ymkllb1xX56n1F1v8c8LkC8t3ABQXkYzhFZFSPaEQyMYxMyZAifT3KNXmuVkmm/aDUtxcUugvjAWElhNs+cB5/vO05hhLBZNhoRFjQHK/pGMCff+95RtMTDf2BKVxZ2bTEhKODicw8kuZYZEK/99Z4FC9M/41kzXh3wflap1zzeeqVWgm2G3WASKg0gldLPDqtNNu5/p/NV5/se974jO1AkWxY28UXN15YscZNk3G6acevnxorKFfISW2NRqRopYikB90Lx+eR9PaPcnw4kWORjKY8Yq7EsK9ZM96VijUcKyflms9Tr5giMYoS9AuJZpTGTCf0FZrl/LvvWTVn/rMlUoVn6Y9lySvZuKkYpaYdF1I2k0UdX+0bL7IYj4BXpEjBGfPiOfMrFrbFOTGcoq0plvNAcfbiefQNJjg5mspkbS1ojbOmq6Ms56HSVOO3rRVMkRhAYG3Eo7mKo9yT+nbu6+P+J18jmfYRgiJ99z/5Gm/rXjAn/gMW0SNF5bPF5kf3cWI4mYlteL5PajiZk3a8c19fjtvt2FCCP972HBGYkGkXMjg27t5qikVJpNMT8u8FJrixFrc3k/Z8ujpacp7ef957kq/u2J8z4/3UWJp3NUjf83rGFEmDEotEXLHC8lgbpbD50X0cG0pmlRH3SQwla2YeRb1y12OvTLDywhnnAPv7hnJdbgRzO/b3DWVkn9/+EidHUkG3RhHUh5MjqaJKBCCRVXCrKRZ0dIxExsvf+H7QE3g05U2Ii61Z2sl3N12Ws717dvWwpL0pp1JwR0uMJ3pOcMtpnx1jNjBF0gDUyuS+V44MTnhiVSc3cik1pnHXY6/w1R37iUjQu3005fHVHfsBMsokXSR2kS0/cNyVr8kKdGsJ1bHDeltrujo4eHyIgdGslrrz4sxviTOS8kuKix3qH2FxezNLsjKd5lJW31ym9qNYxrSIRyO0t8RY1B5M7lu1uHYm9xVLvqmDpJySKPafabr/yaaa2JjNN398wCmRCBGJuPdAHlLs9JbjtH/l8Ve567FXuOny1cSjQTvmpmiERNrnxHCKD/7yMu68ah1dHS2cGk3R1dHCnVetK6gUVyxsYzSVO+9iLmX1zWXMIqljst1TYT+Nep3MNxdYvrCVQ/2jBeXTYToFAIeTHvlJTRFh2hPhVi+ex6t9Q4jmznGJufkwxfAV/m5XDy/eeSWXPNvL9549nKlt1NkSY9szr/O27gUT3FiFmOtZfXMZs0jqhIgIrU1RFrQ1sbSzhbPOaOOsRW0sdZZGa1P9zgifK4wmC8+tKCYvxqH+EQZHU+x94xTPv36KvW+cYnA0VdDFM68pSiIddPsMX4l0ULV3Onz6yrUsbIsjQNrzEWBhW5xbrjiH1iIlUkJGkh479/XxyAtHiEWFlnjgQh1KeNOa2b9hbVfJ1otRW5hFUqNEI0JrPEpzPEpLvP4bMDUCx4cnNkybTA6FYyEC9A0lEYIne9Xg84oClk1nc5SBsYmKqrN5etfLhrVdfKHIHJe3dS/g89tfYt+RoaLj79nVE0wojAR1xETARzk1kqI3UnqMo5FTaOsZUyQ1Qti5rzkapaVpbiqOzpYYg2O5KaICdLTMjctwurGIYvM7To2mCo47NjSxX0fvqcI9PLLlxVJ4890RxW7ioXzlbf9W5EgCK6o5FiHtjRdlFIGE51uMowGYG/+D64hwvkZYUiScJT7XOvcV4nffsyqTYRR23vM1kDcixcrKp32dcPOPwGmXConHIiTT/gQFHp/mjHGhsFIUgkB52vM5PpwEP1AiniqxSMRiHA2AKZIKEpYUaXLWxlxt91oqYTrqZHMe6plSn/xDssvKw3hrWdx2BDJ3bx9oO81SIWGxyKiMz/HwVFm1aHqWQqZsSQF5GChfNC+YB5JIBx0Sb95wtrmqGgBTJGUknKMRZlI1RRtXaRTjlvefO2cURz7levIP0cw/AWe0nt5/13IVi2xvjjGcCFyT2UUp5zXHGr7WVKNjiuQ0CSf5ZSsOUxqNzXSf/IuVlY9HhAVtMY4Pj9ecWjQvjkROTyFtWNvF9Ze9NbAEPY/WaITrL3vrtG/yoWsyWsQ1aYHyxsUUSQlkl0oPM6jqoWOfMbvc9oHzuOW7zxRsFVsoO6uYpbCkvZmk53Pm/HEFVKy3RUtMGCtQ5j27q+HOfX1se+Z1lnSMV+AN53dM58Y/112TxulTFUUiIgeBQcAD0qq6XkTOAB4EVgIHgd9U1X63/u3AjW79W1T1B05+CeNNrx4Bbp1pl8T8UulhULweON1S4UZl+XnvSbY98zrxqOTMVL/zqnUFy8oD/Mm253i9f5S07xOLBDWn/uJD50/YdrGrPVs+nQmOUzGXXZPG6VNNi+S9qnos6/NtwOOq+nkRuc19/rSInE/Q/XAd8BbgMRE513VQvBvYBDxJoEiuZLyDYklk0m7dzPB6dVGFZTUm3KzAlMkssfnRfYykfOLRSMZVNZLy+btdPSyb31LwRv7dTZdN+H127usLQiN5rWgLkSiSyZUtP9Q/woLWeM73rfGo1bAyykYtPWpfDdzrlu8FrsmSP6CqCVU9AOwHLhWRZUCnqj7hrJD7ssYUJRIRzpjXxLL5raxc5OpQdbQwvzXoF16PSgRynzpFgvd4tD76Xc8VsrOwBCEiQkSCmd+t8dx5QZPdyO/Z1cN814dj7ZmdrOnqYH5rvOBvmT1nI3xly8FqWBmVp1qKRIF/F5E9IrLJyZaq6mEA9x4+pi0HDmWN7XWy5W45Xz4BEdkkIrtFZHf/8WNzsqTIof6Rad2sjNlDXCn1bCa7kU/nt1w+P4ibqI6/suUQpOamPGUkmUY1eLcaVkY5qZYiebeqXgx8ALhZRC6fZN1Cd3udRD5RqLpFVder6volS5ZMf2/rAHvqrD6rFrUFmUy+oqr4vuIrLO9sntaNfDq/5V9f88t0NkcJn4kiEpRH+etrfjmzjtWwMipNVWIkqvqGe+8Tkf8NXAocEZFlqnrYua3Cmtm9wIqs4d3AG07eXUDekFjl1OpTLAvrrz/yNqD0ORbT+S03rO3irusunnLblpprVBKZYZLT9P+gyDwgoqqDbvmHwJ3A+4DjWcH2M1T1T0VkHfCPBMrmLcDjwBpV9UTkp8AfAE8RBNv/VlUfmezvr1+/Xnfv3l2x46smYdaWTQirHuX6Dey3NGoNEdmjqusLflcFRbIa+N/uYwz4R1X9nIgsArYCZwG/AD6qqifcmP8X+B0gDXxKVbc7+XrG03+3A38wVfrvXFYkhmEYlaKmFEm1MUViGIYxfSZTJLWU/msYhmHUIaZIDMMwjBlhisQwDMOYEaZIDMMwjBnRcMF2ETkKvJYnXgwcK7C6MY6do8mx8zM1do4mp9bPz1tVteCM7oZTJIUQkd3FshGMADtHk2PnZ2rsHE1OPZ8fc20ZhmEYM8IUiWEYhjEjTJEEbKn2DtQBdo4mx87P1Ng5mpy6PT8WIzEMwzBmhFkkhmEYxowwRWIYhmHMiIZRJCKyQkT+Q0ReEpG9InJrgXVERO4Skf0i8nMRubga+1oNSjw/G0TklIg86153VGNfq4WItIjI0yLynDtHf1VgnUa+hko5Pw19DQGISFREfiYiDxf4ri6vn6o0tqoSaeCPVPUZEekA9ojID1X1xax1PgCsca93Ane790aglPMD8CNV/XAV9q8WSABXqOqQiMSBH4vIdlV9MmudRr6GSjk/0NjXEMCtwEtAZ4Hv6vL6aRiLRFUPq+ozbnmQ4IfM7/F+NXCfBjwJLHDdGuc8JZ6fhsZdF0PuY9y98rNVGvkaKuX8NDQi0g18CPhmkVXq8vppGEWSjYisBN5O0Fkxm+XAoazPvTTgzXSS8wPwLue62O66VzYUzi3xLEEr6B+qql1DWZRwfqCxr6GvAH8K+EW+r8vrp+EUiYi0A/9M0GlxIP/rAkMa6olqivPzDEG9nQuBvwW+N8u7V3VU1VPVi4Bu4FIRuSBvlYa+hko4Pw17DYnIh4E+Vd0z2WoFZDV//TSUInF+238G/kFV/6XAKr3AiqzP3cAbs7FvtcBU50dVB0LXhao+AsRFZPEs72ZNoKongZ3AlXlfNfQ1FFLs/DT4NfRu4CoROQg8AFwhIn+ft05dXj8No0hERIBvAS+p6peKrPYQcL3LnLgMOKWqh2dtJ6tIKedHRM506yEilxJcP8dnby+ri4gsEZEFbrkVeD+wL2+1Rr6Gpjw/jXwNqertqtqtqiuBa4EdqvpbeavV5fXTSFlb7wY+DjzvfLgAfwacBaCqfwc8AnwQ2A+MAL89+7tZNUo5PxuBT4hIGhgFrtXGKo2wDLhXRKIEN8CtqvqwiPw+2DVEaeen0a+hCcyF68dKpBiGYRgzomFcW4ZhGEZlMEViGIZhzAhTJIZhGMaMMEViGIZhzAhTJIZhGMaMMEViGLOAiHxKRNqmOWaliLxQqX0yjHJhisQwZodPAQUViZt3YRh1iykSwygzIjJPRP7NFSZ8QUT+EngL8B8i8h9unSERuVNEniIoYviHbt0XRORTBba52vWweIeInC0ij4rIHhH5kYisnd0jNIxcGmlmu2HMFlcCb6jqhwBEZD7BDOX3quoxt8484AVVvUNELnHfv5OgaN9TIvKfQL8b/0sEtZl+W1WfFZHHgd9X1VdF5J3A14ErZvH4DCMHm9luGGVGRM4FfgBsBR5W1R+5Qn3rQ0XiSoQ0q6onQTfKRap6h/vus8BRgrpLTxEolN9Q1b2uOvNR4OWsP9msqufN0uEZxgTMIjGMMqOqrzgr44PA/xCRfy+w2piqem65UOnwkFME/SneDewlcEefdKXaDaMmsBiJYZQZEXkLMKKqfw98EbgYGAQ6igzZBVwjIm0iMg/4CPAj910SuIagIuz/6XrEHBCRj7q/JSJyYeWOxjCmxiwSwyg/vwx8QUR8IAV8AngXsF1EDqvqe7NXVtVnROQ7wNNO9E1V/ZnrVImqDrumSD8UkWHg/wLuFpE/J2hn+wDw3Cwcl2EUxGIkhmEYxoww15ZhGIYxI0yRGIZhGDPCFIlhGIYxI0yRGIZhGDPCFIlhGIYxI0yRGIZhGDPCFIlhGIYxI/5/ADlN7E6ESBYAAAAASUVORK5CYII=\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)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"#There is a weak correlation between the variable 'stroke' and 'price.' as such regression will not work well. We #can see this use \"regplot\" to demonstrate this.\n",
"\n",
"#Code: \n",
"sns.regplot(x=\"stroke\", y=\"price\", data=df)\n",
"\n",
"-->\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": 16,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='body-style', ylabel='price'>"
]
},
"execution_count": 16,
"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": 17,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='engine-location', ylabel='price'>"
]
},
"execution_count": 17,
"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=\"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": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='drive-wheels', 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": [
"# 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": 19,
"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": 19,
"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": 20,
"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": 20,
"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": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fwd 118\n",
"rwd 75\n",
"4wd 8\n",
"Name: drive-wheels, dtype: int64"
]
},
"execution_count": 21,
"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": 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>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": 22,
"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": 23,
"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": 23,
"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": 24,
"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": 24,
"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": 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>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": 25,
"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": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['rwd', 'fwd', '4wd'], dtype=object)"
]
},
"execution_count": 26,
"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": 27,
"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": 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>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": 28,
"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": 29,
"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": 29,
"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": 30,
"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": 30,
"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": 31,
"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": 31,
"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": 36,
"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": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df_body = df[['body-style','price']]\n",
"grouped_df = df_body.groupby(['body-style'],as_index=False).mean()\n",
"grouped_df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\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"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you did not import \"pyplot\" let's do it again. \n"
]
},
{
"cell_type": "code",
"execution_count": 37,
"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": 42,
"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": 43,
"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": [
"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": 44,
"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>symboling</th>\n",
" <td>1.000000</td>\n",
" <td>0.466264</td>\n",
" <td>-0.535987</td>\n",
" <td>-0.365404</td>\n",
" <td>-0.242423</td>\n",
" <td>-0.550160</td>\n",
" <td>-0.233118</td>\n",
" <td>-0.110581</td>\n",
" <td>-0.140019</td>\n",
" <td>-0.008245</td>\n",
" <td>-0.182196</td>\n",
" <td>0.075819</td>\n",
" <td>0.279740</td>\n",
" <td>-0.035527</td>\n",
" <td>0.036233</td>\n",
" <td>-0.082391</td>\n",
" <td>0.066171</td>\n",
" <td>-0.196735</td>\n",
" <td>0.196735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>normalized-losses</th>\n",
" <td>0.466264</td>\n",
" <td>1.000000</td>\n",
" <td>-0.056661</td>\n",
" <td>0.019424</td>\n",
" <td>0.086802</td>\n",
" <td>-0.373737</td>\n",
" <td>0.099404</td>\n",
" <td>0.112360</td>\n",
" <td>-0.029862</td>\n",
" <td>0.055563</td>\n",
" <td>-0.114713</td>\n",
" <td>0.217299</td>\n",
" <td>0.239543</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.181877</td>\n",
" <td>0.133999</td>\n",
" <td>0.238567</td>\n",
" <td>-0.101546</td>\n",
" <td>0.101546</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wheel-base</th>\n",
" <td>-0.535987</td>\n",
" <td>-0.056661</td>\n",
" <td>1.000000</td>\n",
" <td>0.876024</td>\n",
" <td>0.814507</td>\n",
" <td>0.590742</td>\n",
" <td>0.782097</td>\n",
" <td>0.572027</td>\n",
" <td>0.493244</td>\n",
" <td>0.158502</td>\n",
" <td>0.250313</td>\n",
" <td>0.371147</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.543304</td>\n",
" <td>0.584642</td>\n",
" <td>0.476153</td>\n",
" <td>0.307237</td>\n",
" <td>-0.307237</td>\n",
" </tr>\n",
" <tr>\n",
" <th>length</th>\n",
" <td>-0.365404</td>\n",
" <td>0.019424</td>\n",
" <td>0.876024</td>\n",
" <td>1.000000</td>\n",
" <td>0.857170</td>\n",
" <td>0.492063</td>\n",
" <td>0.880665</td>\n",
" <td>0.685025</td>\n",
" <td>0.608971</td>\n",
" <td>0.124139</td>\n",
" <td>0.159733</td>\n",
" <td>0.579821</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.698142</td>\n",
" <td>0.690628</td>\n",
" <td>0.657373</td>\n",
" <td>0.211187</td>\n",
" <td>-0.211187</td>\n",
" </tr>\n",
" <tr>\n",
" <th>width</th>\n",
" <td>-0.242423</td>\n",
" <td>0.086802</td>\n",
" <td>0.814507</td>\n",
" <td>0.857170</td>\n",
" <td>1.000000</td>\n",
" <td>0.306002</td>\n",
" <td>0.866201</td>\n",
" <td>0.729436</td>\n",
" <td>0.544885</td>\n",
" <td>0.188829</td>\n",
" <td>0.189867</td>\n",
" <td>0.615077</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.680635</td>\n",
" <td>0.751265</td>\n",
" <td>0.673363</td>\n",
" <td>0.244356</td>\n",
" <td>-0.244356</td>\n",
" </tr>\n",
" <tr>\n",
" <th>height</th>\n",
" <td>-0.550160</td>\n",
" <td>-0.373737</td>\n",
" <td>0.590742</td>\n",
" <td>0.492063</td>\n",
" <td>0.306002</td>\n",
" <td>1.000000</td>\n",
" <td>0.307581</td>\n",
" <td>0.074694</td>\n",
" <td>0.180449</td>\n",
" <td>-0.062704</td>\n",
" <td>0.259737</td>\n",
" <td>-0.087027</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.104812</td>\n",
" <td>0.135486</td>\n",
" <td>0.003811</td>\n",
" <td>0.281578</td>\n",
" <td>-0.281578</td>\n",
" </tr>\n",
" <tr>\n",
" <th>curb-weight</th>\n",
" <td>-0.233118</td>\n",
" <td>0.099404</td>\n",
" <td>0.782097</td>\n",
" <td>0.880665</td>\n",
" <td>0.866201</td>\n",
" <td>0.307581</td>\n",
" <td>1.000000</td>\n",
" <td>0.849072</td>\n",
" <td>0.644060</td>\n",
" <td>0.167562</td>\n",
" <td>0.156433</td>\n",
" <td>0.757976</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.794889</td>\n",
" <td>0.834415</td>\n",
" <td>0.785353</td>\n",
" <td>0.221046</td>\n",
" <td>-0.221046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>-0.110581</td>\n",
" <td>0.112360</td>\n",
" <td>0.572027</td>\n",
" <td>0.685025</td>\n",
" <td>0.729436</td>\n",
" <td>0.074694</td>\n",
" <td>0.849072</td>\n",
" <td>1.000000</td>\n",
" <td>0.572609</td>\n",
" <td>0.209523</td>\n",
" <td>0.028889</td>\n",
" <td>0.822676</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.679571</td>\n",
" <td>0.872335</td>\n",
" <td>0.745059</td>\n",
" <td>0.070779</td>\n",
" <td>-0.070779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>-0.140019</td>\n",
" <td>-0.029862</td>\n",
" <td>0.493244</td>\n",
" <td>0.608971</td>\n",
" <td>0.544885</td>\n",
" <td>0.180449</td>\n",
" <td>0.644060</td>\n",
" <td>0.572609</td>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.591309</td>\n",
" <td>0.543155</td>\n",
" <td>0.554610</td>\n",
" <td>0.054458</td>\n",
" <td>-0.054458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.008245</td>\n",
" <td>0.055563</td>\n",
" <td>0.158502</td>\n",
" <td>0.124139</td>\n",
" <td>0.188829</td>\n",
" <td>-0.062704</td>\n",
" <td>0.167562</td>\n",
" <td>0.209523</td>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.034696</td>\n",
" <td>-0.035201</td>\n",
" <td>0.082310</td>\n",
" <td>0.037300</td>\n",
" <td>0.241303</td>\n",
" <td>-0.241303</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>-0.182196</td>\n",
" <td>-0.114713</td>\n",
" <td>0.250313</td>\n",
" <td>0.159733</td>\n",
" <td>0.189867</td>\n",
" <td>0.259737</td>\n",
" <td>0.156433</td>\n",
" <td>0.028889</td>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" <td>-0.435780</td>\n",
" <td>0.331425</td>\n",
" <td>0.268465</td>\n",
" <td>0.071107</td>\n",
" <td>-0.299372</td>\n",
" <td>0.985231</td>\n",
" <td>-0.985231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.075819</td>\n",
" <td>0.217299</td>\n",
" <td>0.371147</td>\n",
" <td>0.579821</td>\n",
" <td>0.615077</td>\n",
" <td>-0.087027</td>\n",
" <td>0.757976</td>\n",
" <td>0.822676</td>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" <td>0.107885</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.804575</td>\n",
" <td>0.809575</td>\n",
" <td>0.889488</td>\n",
" <td>-0.169053</td>\n",
" <td>0.169053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>0.279740</td>\n",
" <td>0.239543</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.435780</td>\n",
" <td>0.107885</td>\n",
" <td>1.000000</td>\n",
" <td>-0.115413</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" <td>0.115830</td>\n",
" <td>-0.475812</td>\n",
" <td>0.475812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-mpg</th>\n",
" <td>-0.035527</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.034696</td>\n",
" <td>0.331425</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.115413</td>\n",
" <td>1.000000</td>\n",
" <td>0.972044</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.949713</td>\n",
" <td>0.265676</td>\n",
" <td>-0.265676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>0.036233</td>\n",
" <td>-0.181877</td>\n",
" <td>-0.543304</td>\n",
" <td>-0.698142</td>\n",
" <td>-0.680635</td>\n",
" <td>-0.104812</td>\n",
" <td>-0.794889</td>\n",
" <td>-0.679571</td>\n",
" <td>-0.591309</td>\n",
" <td>-0.035201</td>\n",
" <td>0.268465</td>\n",
" <td>-0.804575</td>\n",
" <td>-0.058598</td>\n",
" <td>0.972044</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" <td>-0.930028</td>\n",
" <td>0.198690</td>\n",
" <td>-0.198690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.082391</td>\n",
" <td>0.133999</td>\n",
" <td>0.584642</td>\n",
" <td>0.690628</td>\n",
" <td>0.751265</td>\n",
" <td>0.135486</td>\n",
" <td>0.834415</td>\n",
" <td>0.872335</td>\n",
" <td>0.543155</td>\n",
" <td>0.082310</td>\n",
" <td>0.071107</td>\n",
" <td>0.809575</td>\n",
" <td>-0.101616</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" <td>0.789898</td>\n",
" <td>0.110326</td>\n",
" <td>-0.110326</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-L/100km</th>\n",
" <td>0.066171</td>\n",
" <td>0.238567</td>\n",
" <td>0.476153</td>\n",
" <td>0.657373</td>\n",
" <td>0.673363</td>\n",
" <td>0.003811</td>\n",
" <td>0.785353</td>\n",
" <td>0.745059</td>\n",
" <td>0.554610</td>\n",
" <td>0.037300</td>\n",
" <td>-0.299372</td>\n",
" <td>0.889488</td>\n",
" <td>0.115830</td>\n",
" <td>-0.949713</td>\n",
" <td>-0.930028</td>\n",
" <td>0.789898</td>\n",
" <td>1.000000</td>\n",
" <td>-0.241282</td>\n",
" <td>0.241282</td>\n",
" </tr>\n",
" <tr>\n",
" <th>diesel</th>\n",
" <td>-0.196735</td>\n",
" <td>-0.101546</td>\n",
" <td>0.307237</td>\n",
" <td>0.211187</td>\n",
" <td>0.244356</td>\n",
" <td>0.281578</td>\n",
" <td>0.221046</td>\n",
" <td>0.070779</td>\n",
" <td>0.054458</td>\n",
" <td>0.241303</td>\n",
" <td>0.985231</td>\n",
" <td>-0.169053</td>\n",
" <td>-0.475812</td>\n",
" <td>0.265676</td>\n",
" <td>0.198690</td>\n",
" <td>0.110326</td>\n",
" <td>-0.241282</td>\n",
" <td>1.000000</td>\n",
" <td>-1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>gas</th>\n",
" <td>0.196735</td>\n",
" <td>0.101546</td>\n",
" <td>-0.307237</td>\n",
" <td>-0.211187</td>\n",
" <td>-0.244356</td>\n",
" <td>-0.281578</td>\n",
" <td>-0.221046</td>\n",
" <td>-0.070779</td>\n",
" <td>-0.054458</td>\n",
" <td>-0.241303</td>\n",
" <td>-0.985231</td>\n",
" <td>0.169053</td>\n",
" <td>0.475812</td>\n",
" <td>-0.265676</td>\n",
" <td>-0.198690</td>\n",
" <td>-0.110326</td>\n",
" <td>0.241282</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 \\\n",
"symboling 1.000000 0.466264 -0.535987 -0.365404 \n",
"normalized-losses 0.466264 1.000000 -0.056661 0.019424 \n",
"wheel-base -0.535987 -0.056661 1.000000 0.876024 \n",
"length -0.365404 0.019424 0.876024 1.000000 \n",
"width -0.242423 0.086802 0.814507 0.857170 \n",
"height -0.550160 -0.373737 0.590742 0.492063 \n",
"curb-weight -0.233118 0.099404 0.782097 0.880665 \n",
"engine-size -0.110581 0.112360 0.572027 0.685025 \n",
"bore -0.140019 -0.029862 0.493244 0.608971 \n",
"stroke -0.008245 0.055563 0.158502 0.124139 \n",
"compression-ratio -0.182196 -0.114713 0.250313 0.159733 \n",
"horsepower 0.075819 0.217299 0.371147 0.579821 \n",
"peak-rpm 0.279740 0.239543 -0.360305 -0.285970 \n",
"city-mpg -0.035527 -0.225016 -0.470606 -0.665192 \n",
"highway-mpg 0.036233 -0.181877 -0.543304 -0.698142 \n",
"price -0.082391 0.133999 0.584642 0.690628 \n",
"city-L/100km 0.066171 0.238567 0.476153 0.657373 \n",
"diesel -0.196735 -0.101546 0.307237 0.211187 \n",
"gas 0.196735 0.101546 -0.307237 -0.211187 \n",
"\n",
" width height curb-weight engine-size bore \\\n",
"symboling -0.242423 -0.550160 -0.233118 -0.110581 -0.140019 \n",
"normalized-losses 0.086802 -0.373737 0.099404 0.112360 -0.029862 \n",
"wheel-base 0.814507 0.590742 0.782097 0.572027 0.493244 \n",
"length 0.857170 0.492063 0.880665 0.685025 0.608971 \n",
"width 1.000000 0.306002 0.866201 0.729436 0.544885 \n",
"height 0.306002 1.000000 0.307581 0.074694 0.180449 \n",
"curb-weight 0.866201 0.307581 1.000000 0.849072 0.644060 \n",
"engine-size 0.729436 0.074694 0.849072 1.000000 0.572609 \n",
"bore 0.544885 0.180449 0.644060 0.572609 1.000000 \n",
"stroke 0.188829 -0.062704 0.167562 0.209523 -0.055390 \n",
"compression-ratio 0.189867 0.259737 0.156433 0.028889 0.001263 \n",
"horsepower 0.615077 -0.087027 0.757976 0.822676 0.566936 \n",
"peak-rpm -0.245800 -0.309974 -0.279361 -0.256733 -0.267392 \n",
"city-mpg -0.633531 -0.049800 -0.749543 -0.650546 -0.582027 \n",
"highway-mpg -0.680635 -0.104812 -0.794889 -0.679571 -0.591309 \n",
"price 0.751265 0.135486 0.834415 0.872335 0.543155 \n",
"city-L/100km 0.673363 0.003811 0.785353 0.745059 0.554610 \n",
"diesel 0.244356 0.281578 0.221046 0.070779 0.054458 \n",
"gas -0.244356 -0.281578 -0.221046 -0.070779 -0.054458 \n",
"\n",
" stroke compression-ratio horsepower peak-rpm \\\n",
"symboling -0.008245 -0.182196 0.075819 0.279740 \n",
"normalized-losses 0.055563 -0.114713 0.217299 0.239543 \n",
"wheel-base 0.158502 0.250313 0.371147 -0.360305 \n",
"length 0.124139 0.159733 0.579821 -0.285970 \n",
"width 0.188829 0.189867 0.615077 -0.245800 \n",
"height -0.062704 0.259737 -0.087027 -0.309974 \n",
"curb-weight 0.167562 0.156433 0.757976 -0.279361 \n",
"engine-size 0.209523 0.028889 0.822676 -0.256733 \n",
"bore -0.055390 0.001263 0.566936 -0.267392 \n",
"stroke 1.000000 0.187923 0.098462 -0.065713 \n",
"compression-ratio 0.187923 1.000000 -0.214514 -0.435780 \n",
"horsepower 0.098462 -0.214514 1.000000 0.107885 \n",
"peak-rpm -0.065713 -0.435780 0.107885 1.000000 \n",
"city-mpg -0.034696 0.331425 -0.822214 -0.115413 \n",
"highway-mpg -0.035201 0.268465 -0.804575 -0.058598 \n",
"price 0.082310 0.071107 0.809575 -0.101616 \n",
"city-L/100km 0.037300 -0.299372 0.889488 0.115830 \n",
"diesel 0.241303 0.985231 -0.169053 -0.475812 \n",
"gas -0.241303 -0.985231 0.169053 0.475812 \n",
"\n",
" city-mpg highway-mpg price city-L/100km diesel \\\n",
"symboling -0.035527 0.036233 -0.082391 0.066171 -0.196735 \n",
"normalized-losses -0.225016 -0.181877 0.133999 0.238567 -0.101546 \n",
"wheel-base -0.470606 -0.543304 0.584642 0.476153 0.307237 \n",
"length -0.665192 -0.698142 0.690628 0.657373 0.211187 \n",
"width -0.633531 -0.680635 0.751265 0.673363 0.244356 \n",
"height -0.049800 -0.104812 0.135486 0.003811 0.281578 \n",
"curb-weight -0.749543 -0.794889 0.834415 0.785353 0.221046 \n",
"engine-size -0.650546 -0.679571 0.872335 0.745059 0.070779 \n",
"bore -0.582027 -0.591309 0.543155 0.554610 0.054458 \n",
"stroke -0.034696 -0.035201 0.082310 0.037300 0.241303 \n",
"compression-ratio 0.331425 0.268465 0.071107 -0.299372 0.985231 \n",
"horsepower -0.822214 -0.804575 0.809575 0.889488 -0.169053 \n",
"peak-rpm -0.115413 -0.058598 -0.101616 0.115830 -0.475812 \n",
"city-mpg 1.000000 0.972044 -0.686571 -0.949713 0.265676 \n",
"highway-mpg 0.972044 1.000000 -0.704692 -0.930028 0.198690 \n",
"price -0.686571 -0.704692 1.000000 0.789898 0.110326 \n",
"city-L/100km -0.949713 -0.930028 0.789898 1.000000 -0.241282 \n",
"diesel 0.265676 0.198690 0.110326 -0.241282 1.000000 \n",
"gas -0.265676 -0.198690 -0.110326 0.241282 -1.000000 \n",
"\n",
" gas \n",
"symboling 0.196735 \n",
"normalized-losses 0.101546 \n",
"wheel-base -0.307237 \n",
"length -0.211187 \n",
"width -0.244356 \n",
"height -0.281578 \n",
"curb-weight -0.221046 \n",
"engine-size -0.070779 \n",
"bore -0.054458 \n",
"stroke -0.241303 \n",
"compression-ratio -0.985231 \n",
"horsepower 0.169053 \n",
"peak-rpm 0.475812 \n",
"city-mpg -0.265676 \n",
"highway-mpg -0.198690 \n",
"price -0.110326 \n",
"city-L/100km 0.241282 \n",
"diesel -1.000000 \n",
"gas 1.000000 "
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"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": 45,
"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": 46,
"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": 47,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8095745670036559 with a P-value of P = 6.369057428260101e-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": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.6906283804483638 with a P-value of P = 8.016477466159556e-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": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.7512653440522673 with a P-value of P = 9.200335510481646e-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": 50,
"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": null,
"metadata": {},
"outputs": [],
"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": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.5431553832626602 with a P-value of P = 8.049189483935489e-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": 52,
"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": 53,
"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": 54,
"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": 54,
"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": 55,
"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": 55,
"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": 56,
"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": 56,
"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": null,
"metadata": {},
"outputs": [],
"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": null,
"metadata": {},
"outputs": [],
"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": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"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": null,
"metadata": {},
"outputs": [],
"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.11"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment