Skip to content

Instantly share code, notes, and snippets.

@bazsapeter
Created March 7, 2020 11:27
Show Gist options
  • Save bazsapeter/8f70feb81a21b14df55cd1f582801bb7 to your computer and use it in GitHub Desktop.
Save bazsapeter/8f70feb81a21b14df55cd1f582801bb7 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/corsera_da0101en_notebook_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size = 5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Exploratory Data Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Welcome!</h3>\n",
"In this section, we will explore several methods to see if certain characteristics or features can be used to predict car price. "
]
},
{
"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",
"Estimated Time Needed: <strong>30 min</strong>\n",
"</div>\n",
" \n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What are the main characteristics which have the most impact on the car price?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"import_data\">1. Import Data from Module 2</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries "
]
},
{
"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:"
]
},
{
"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"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To install seaborn we use the pip which is the python package manager."
]
},
{
"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."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"float64\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\":"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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."
]
},
{
"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>"
]
},
{
"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_motordiag = df[['bore','stroke','compression-ratio','horsepower']]\n",
"df_motordiag.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",
"-->"
]
},
{
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's see several examples of different linear relationships:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Positive linear relationship</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's find the scatterplot of \"engine-size\" and \"price\" "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 56290.300377847925)"
]
},
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can examine the correlation between 'engine-size' and 'price' and see it's approximately 0.87"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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 "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc198dc09e8>"
]
},
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'highway-mpg' and 'price' and see it's approximately -0.704"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see if \"Peak-rpm\" as a predictor variable of \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc198d36ac8>"
]
},
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'peak-rpm' and 'price' and see it's approximately -0.101616 "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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>"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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_strokeprice = df[['stroke','price']]\n",
"df_strokeprice.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",
"-->"
]
},
{
"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>"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc198cf50b8>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEGCAYAAABPdROvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO29eZxc9XXo+T219N6ttYWEWliSERGImE0mJDCKYvtNwHbAnifb4jMxzHs40hD8wC+bIfNCHDKesWLHBOJngryMgcTBRMmLFQfs2Mh62IkECAzGAhkUSaAGodbSUu9dVfee+eP+bnV1dXV3VXetXef7+ZTq1rlL/e7t0j33LL9zRFUxDMMwjJkSqfQADMMwjNrGFIlhGIYxK0yRGIZhGLPCFIlhGIYxK0yRGIZhGLMiVukBlJvFixfrypUrKz0MwzCMmuK55547qaqdudbVnSJZuXIl+/btq/QwDMMwagoReX2ydebaMgzDMGaFKRLDMAxjVpgiMQzDMGaFKRLDMAxjVpgiMQzDMGZF3WVtGYaRm90HenjwqUMc7R1ixYIWtm5Yzca1Syo9LKMGMIvEMAx2H+jh7p376ekfYX5znJ7+Ee7euZ/dB3oqPTSjBii5IhGRqIj8RES+4z5/RkTeFJEX3Ov9GdveJSIHReTnIvLrGfIrROQlt+5+EREnbxSRbzn50yKystTnYxhzkQefOkQ8KrQ0xBAJ3uNR4cGnDlV6aEYNUA6L5A7glSzZvap6qXs9DiAiFwGbgXXAtcCXRSTqtn8A2AKsca9rnfwWoFdVzwfuBbaV9EwMY45ytHeI5nh0nKw5HqW7d6hCIzJqiZIqEhHpAj4AfDWPzW8AHlXVUVU9DBwErhSRZUCHqu7RoAvXw8CHMvZ5yC3vAN4bWiuGYeTPigUtDCe9cbLhpEfXgpYKjcioJUptkfwF8AeAnyX/pIj8VES+LiILnGw5cDRjm24nW+6Ws+Xj9lHVFHAWWJQ9CBHZIiL7RGTfiRMnZnlKhjH32LphNUlPGUqkUA3ek56ydcPqSg/NqAFKpkhE5INAj6o+l7XqAeCdwKXAMeDPw11yHEankE+1z3iB6nZVXa+q6zs7c9YcM4y6ZuPaJdxz/TqWtDdxdjjJkvYm7rl+nWVtGXlRyvTfq4HrXTC9CegQkb9W1d8MNxCRrwDfcR+7gRUZ+3cBbzl5Vw555j7dIhID5gGnS3AuhjHn2bh2iSkOY0aUzCJR1btUtUtVVxIE0Xep6m+6mEfIh4GfueWdwGaXibWKIKj+jKoeA/pF5CoX/7gJ+HbGPje75U3uOyZYJIZhGEbpqMSExD8TkUsJXFBHgK0AqrpfRB4DXgZSwG2qGkb/bgW+ATQDT7gXwNeAR0TkIIElsrlM52AYhmE4pN4e4NevX6/Wj8QwDKMwROQ5VV2fa53NbDcMwzBmhSkSwzAMY1aYIjEMwzBmhSkSwzAMY1aYIjEMwzBmhSkSwzAMY1aYIjEMwzBmhSkSwzAMY1aYIjEMwzBmhfVsNwxjUqyPu5EPZpEYhpET6+Nu5ItZJIZhABOtj97B0XQfd4CWhhhDiRQPPnXIrBJjHGaRGIaR0/p47cQAKW98c1Pr427kwhSJYRg8+NShtPUhErzHIxGO94+O2876uBu5MEViGAZHe4dojkfHyc7paLQ+7kZemCIxDIMVC1oYTnrjZLFohAuWtFkfd2NaSh5sF5EosA94U1U/KCILgW8BKwk6JH5UVXvdtncBtwAecLuqfs/Jr2CsQ+LjwB2qqiLSCDwMXAGcAj6mqkdKfU6GMdfYumE1d+/cz1AiRXM8ynDSI+kpf/SBtaY4jGkph0VyB/BKxuc7gSdVdQ3wpPuMiFxE0Cp3HXAt8GWnhAAeALYQ9HFf49ZDoHR6VfV84F5gW2lPxTDmJhvXLuGe69eZ9WHMiJJaJCLSBXwA+CzwO058A7DRLT8E7AY+7eSPquoocNj1Yb9SRI4AHaq6xx3zYeBDBH3bbwA+4461A/iSiIjWW/9gwygCG9cuMcVhzIhSWyR/AfwBkJlDeI6qHgNw7+EvdzlwNGO7bidb7paz5eP2UdUUcBZYlD0IEdkiIvtEZN+JEydme06GYRhGBiVTJCLyQaBHVZ/Ld5ccMp1CPtU+4wWq21V1vaqu7+zszHM4hmEYRj6U0rV1NXC9iLwfaAI6ROSvgeMiskxVj4nIMiCst9ANrMjYvwt4y8m7csgz9+kWkRgwDzhdqhMyDMMwJlIyi0RV71LVLlVdSRBE36WqvwnsBG52m90MfNst7wQ2i0ijiKwiCKo/49xf/SJylYgIcFPWPuGxNrnvsPiIYRhGGalEra3PAY+JyC3AG8BHAFR1v4g8BrwMpIDbVDVMbL+VsfTfJ9wL4GvAIy4wf5pAYRmGYRhlROrtAX79+vW6b9++Sg/DMAyjphCR51R1fa51NrPdMAzDmBWmSAzDMIxZYYrEMAzDmBWmSAzDMIxZYYrEMAzDmBXWatcwmNhmduuG1VZ3yjDyxBSJUfeEbWbjUUm3mb17537ugbpXJqZgjXww15ZR9+RsMxsVHnzqUKWHVlFy9XG/e+d+dh/omX5no64wRWLUPbnazDbHo3T3DlVoRNWBKVgjX0yRGHVPrjazw0mPrgUtFRpRdWAK1sgXUyRGzbH7QA83bt/LNdt2ceP2vbN2tWzdsJqkpwwlUqgG70lP2bphdZFGXJuYgjXyxRSJUVOUwm9vbWZzYwrWyBfL2jJqiky/PUBLQ4yhRIoHnzo0qxu/tZmdyMa1S7iH4Jp39w7RZVlbxiSYIjFqiqO9Q8xvjo+Tmd++dJiCrX3KkcJtri2jpjC/vWHkT7lSuEvZs71JRJ4RkRdFZL+I/ImTf0ZE3hSRF9zr/Rn73CUiB0Xk5yLy6xnyK0TkJbfuftcpEddN8VtO/rSIrCzV+RjVwVzy2xc7acAwsilXCncpLZJR4D2qeglwKXCtiFzl1t2rqpe61+MAInIRQYfDdcC1wJdFJMw9fADYQtB+d41bD3AL0Kuq5wP3AttKeD5GFTBXAuM22c8oB+VK4S5ZjMT1Th9wH+PuNVU7xhuAR1V1FDjs2udeKSJHgA5V3QMgIg8DHyJot3sD8Bm3/w7gSyIi1rd9bjMX/PalShowjExWLGihp38k/TuD0riCSxojEZGoiLwA9ADfV9Wn3apPishPReTrIrLAyZYDRzN273ay5W45Wz5uH1VNAWeBRTnGsUVE9onIvhMnThTp7Axj5thkP6MclMsVXFJFoqqeql4KdBFYFxcTuKneSeDuOgb8udtcch1iCvlU+2SPY7uqrlfV9Z2dnQWehWEUnxULWjg1OMqhEwMceLuPQycGODU4akkDRlEplyu4LOm/qnpGRHYD16rqF0K5iHwF+I772A2syNitC3jLybtyyDP36RaRGDAPOF2KczDmNuWucvvLqxfyzJHTRAQiAgnPp6c/wY3vXliy7zTqk3K4gkuZtdUpIvPdcjPwPuCAiCzL2OzDwM/c8k5gs8vEWkUQVH9GVY8B/SJylcvWugn4dsY+N7vlTcAui48YhVKJwPeeQ6fpbGugIRrBV2iIRuhsa2DPIXsOMmqPUloky4CHXOZVBHhMVb8jIo+IyKUELqgjwFYAVd0vIo8BLwMp4DZVDScM3Ap8A2gmCLI/4eRfAx5xgfnTBFlfhlEQlQh8H+0dYnFbI53tTWmZqlqMxKhJSpm19VPgshzyj0+xz2eBz+aQ7wMuziEfAT4yu5Ea9U4lZsuXK5vGMMqBzWw36p5KzJafSxMrDcMUiVH3VOKmPlcmVhoGWNFGw6hYldu5MLHSMMAsEsMYh6X8GUbhmCIx6h6re2UYs8NcW0bdY3WvjLmM9SMxjDJgda+MuUrN9yMxjFrBmmUZc5W50I/EMGoCm9NRW1hDsPwpl7VtisSoe2xOR+1giRGFUS5r24LthoHN6agVLDGiMLZuWM3dO/czlEjRHI8ynPRqrx+JYRhGMbHEiMKYU/1IDMOoTcrdp2U6rNhl4dR0PxLDMGqbaoxHWGJEdWKKxDCMnJQrdbQQLDGiOjHXlmEYOalEn5Z8sMSI6qOUrXabROQZEXlRRPaLyJ84+UIR+b6IvObeF2Tsc5eIHBSRn4vIr2fIrxCRl9y6+13LXVxb3m85+dMisrJU52MY9YZN1DTypZSurVHgPap6CXApcK2IXAXcCTypqmuAJ91nROQigla564BrgS+7Nr0ADwBbCPq4r3HrAW4BelX1fOBeYFsJz8cw6gqLRxj5UjJFogED7mPcvRS4AXjIyR8CPuSWbwAeVdVRVT0MHASuFJFlQIeq7lFVBR7O2ic81g7gvaG1YhjG7LB4hJEvJY2ROIviOeB84L+r6tMico6qHgNQ1WMiEv4qlwN7M3bvdrKkW86Wh/scdcdKichZYBFwMmscWwgsGs4777zinaBhzHEsHmHkQ0mztlTVU9VLgS4C6+LiKTbPZUnoFPKp9skex3ZVXa+q6zs7O6cbtmEYhlEAZUn/VdUzwG6C2MZx567CvYdJ6d3AiozduoC3nLwrh3zcPiISA+YBp0tyEoZhGEZOSpm11Ski891yM/A+4ACwE7jZbXYz8G23vBPY7DKxVhEE1Z9xbrB+EbnKxT9uytonPNYmYJeLoxiGYRhlopQxkmXAQy5OEgEeU9XviMge4DERuQV4A/gIgKruF5HHgJeBFHCbqoa5h7cC3wCagSfcC+BrwCMicpDAEtlcwvMxDMMwciD19gC/fv163bdvX6WHYRjGDKm2+l/1gog8p6rrc62zEimGYdQMuw/08Hs7XuQnR3s53jfCT4728ns7XrR+JBXGFIlhGDXD5554hTNDSdSHqAjqw5mhJJ974pVKD62usVpbhmHUDIdPDRERiESCzH8RUF85fMr6kVQSs0gMwzCMWWGKxDCMmmH14lZ8BV8VRfFV8TWQG5XDFIlhGDXDp69dy4KWOAKkPB8BFrTE+fS1ays9tLrGFIlhGDXDxrVL+PymS7jsvAUsm9fMZect4PObLrH03wqTd7BdRN4BrFHVH7iZ6jFV7S/d0AzDMCZihSSrj7wsEhH5LYIy7Q86URfwj6UalGEYhlE75Ovaug24GugDUNXXAHskMAzDMPJWJKOqmgg/uEq79VVbxTAMw8hJvorkf4rIHwLNIvIfgL8D/ql0wzIMwzBqhXwVyZ3ACeAlYCvwOPDfSjUowzAMo3bIN2urGfi6qn4F0i10mwGrS2AYRlmx6r/VR74WyZMEiiOkGfhB8YdjGIYxObsP9HD3zv309I8wvzlOT/8Id+/cb9V/K0y+iqRJVQfCD265ZaodRGSFiPxQRF4Rkf0icoeTf0ZE3hSRF9zr/Rn73CUiB0Xk5yLy6xnyK0TkJbfuftcpEddN8VtO/rSIrMz/1A3DqDUefOoQ8ajQ0hBDJHiPR4UHnzpU6aHVNfkqkkERuTz8ICJXAMPT7JMCfldVLwSuAm4TkYvcuntV9VL3etwd8yKCDofrCHq7f9m50AAeALYQtN9d49YD3AL0qur5wL3AtjzPxzCMGuRo7xDN8eg4WXM8SnevedkrSb4xkk8Bfycib7nPy4CPTbWD67V+zC33i8grwPIpdrkBeFRVR4HDrn3ulSJyBOhQ1T0AIvIw8CGCdrs3AJ9x++8AviQiYn3bjblKvccHVixooad/hJaGsVvXcNKja8GUDhKjxORlkajqs8Bagt7pvw1cqKrP5fslzuV0GfC0E31SRH4qIl8XkQVOthw4mrFbt5Mtd8vZ8nH7qGoKOAssyvH9W0Rkn4jsO3HiRL7DNoyqwuIDsHXDapKeMpRIoRq8Jz1l64bVlR5aXTOlIhGR97j3/w34DeACAtfSbzjZtIhIG/D3wKdUtY/ATfVO4FICi+XPw01z7K5TyKfaZ7xAdbuqrlfV9Z2dnfkM2zCqDosPBHW27rl+HUvamzg7nGRJexP3XL+urqyyamQ619avArsIlEg2CvzDVDuLSJxAifyNqv4DgKoez1j/FeA77mM3sCJj9y7gLSfvyiHP3KfbzbafB5ye5pwMoyY52jvE/Ob4OFk9xgesaGP1MaUiUdU/FpEI8ISqPlbIgV1m1deAV1T1ixnyZS5+AvBh4GdueSfwTRH5InAugeXzjKp6ItIvIlcRuMZuAv4yY5+bgT3AJmCXxUeMuUol4wP1HpsxpmbaGImq+sAnZ3Dsq4GPA+/JSvX9M5fK+1Pg14D/6r5nP/AY8DLwXeA2VfXcsW4FvgocBP6dINAOgaJa5ALzv0MwA98w5iSVig9YbMaYDsnnAV5E/ogg3fdbwGAoV9WacyOtX79e9+3bV+lhGMaMCC2D7t4huspkGdy4fe8ES2gokWJJexN/u+Wqkn63UT2IyHOquj7XunzTf/8zQUzkt7PkliphGGWkEvEBi80Y05HvhMSLgP8OvAi8QBCjWFeqQRmGUT2sWNDCcNIbJ7O5G0Ym+SqSh4ALgfsJlMiFTmYYxhzH5m4Y05Gva+sXVPWSjM8/FJEXSzEgwzCqK0tq49ol3ANlj80YtUO+FslPXPotACLyS8C/lmZIhlHfVHOWlOXWG7nIV5H8EvBvInLE1b7aA/xqRhqvYRhFotpmsFezYjOqg3xdW9dOv4lhGIWSy4VVbVlSmYoNoKUhxlAixYNPHTL3lgHkqUhU9fVSD8Qw6o3wST8elXFP+u2NMYaTXtVUuK02xWZUH/m6tgzDKDKTubBUtaqypCz915gOUyRG3bH7QA83bt/LNdt2ceP2vRXz9U/WpGkw4VVVhVtL/zWmI98YiWHMCSZzJ90DZb9RT1WEcbIZ7JVIC7b0X2M6TJEYdUU1BY63bljN3Tv3M5RI0RyPMpz0pnzS332gh9/f8SL9IylSvs/J/lF+f8eLfH7TJWVRJqY4jMkw15ZRV1RTz+9CmzRt++4BeoeSKBCLRlCgdyjJtu8eKOu4DSMbs0iMuqLaen4X8qR/6OQgEYGIBI1BRUBFOXRycJo9DaO0mEVi1BUWODaM4mOKxKgrarnn96pFLfgKvq+oKr6v+BrIDaOSlMy1JSIrgIeBpYAPbFfV+0RkIUGDrJXAEeCjqtrr9rkLuAXwgNtV9XtOfgXwDaAZeBy4Q1VVRBrdd1wBnAI+pqpHSnVOxtygVgPHd153Ib+340UGRlN4vhKNCPMb49x53YWVHppR55TSIkkBv6uqFwJXAbeJyEUE7XCfVNU1wJPuM27dZoI+J9cCXxaRMCr6ALCFoI/7GsZKttwC9Krq+cC9wLYSno9hVJSNa5fwhU2XcNmKBSztaOKyFQv4whQZW9UyX8aY+5TMIlHVY8Axt9wvIq8Ay4EbgI1us4eA3cCnnfxRVR0FDrs+7Fe6IpEdqroHQEQeBj5E0Lf9BuAz7lg7gC+JiGg+/YMNowbJ15qqpvkyxtynLDESEVkJXAY8DZzjlEyobMJf9XLgaMZu3U623C1ny8fto6op4CywKMf3bxGRfSKy78SJE8U5KcOoYqqtgrAxtym5IhGRNuDvgU+pat9Um+aQ6RTyqfYZL1DdrqrrVXV9Z2fndEM2jJqnmubLGHOfks4jEZE4gRL5G1X9Byc+LiLLVPWYiCwDQsdtN7AiY/cu4C0n78ohz9ynW0RiwDzgdElOxjDKyP0/eJWv/vgwgwmP1oYon7hmFbe/74K89y/2fJlq6thoVB8ls0hERICvAa+o6hczVu0EbnbLNwPfzpBvFpFGEVlFEFR/xrm/+kXkKnfMm7L2CY+1Cdhl8RGj1rn/B69y366DDCc9YpFAAdy36yD3/+DVvI9RzPky1tjKmI5SWiRXAx8HXhKRF5zsD4HPAY+JyC3AG8BHAFR1v4g8BrxMkPF1m6qGtatvZSz99wn3gkBRPeIC86cJsr4Mo+oo5In+qz8+TEQgFgme8yICKd/nqz8+nLdVUsxCi9VUn8woPapKwvNJpHySnpJI+fjTPJ+XMmvrx+SOYQC8d5J9Pgt8Nod8H3BxDvkIThEZRrVSaAbVYMIjgjKS9MYF/Dw/NaPvn62JXm2NrczNVhxChREqi2RaefgTto1Hp3ZeWa0twygxDz51iKTncWogRcLzaYhG6GiOTfpE3xiLMJTwJshVg5voxrVLpr2ZFjP9t5rqk1la88wIlUQi5WdYGxMVxkwxRWIYJea1nn7ODiWJRIRoREj5ysn+BEmvP+f2C5tjORWJQDp9d7qbaTHdUYWWu5+MYlgS5mabnqTnM5ryGU16JDyf0eT0rqnZYorEMEpMIuVDVtVeXwJ3Qk4iE90IESAaFbp7h/K6mRbTHbVx7RI2dZ+ZkEWW78TIB586xGs9/fSPpFjQEmdxW+OMLYlqc7NVmtDCKKfSyIUVbTSMEhOPBgoks9giQEM0dwhxxYIWmmIRGmMRmuNRmuNR4tEI0YjQtaAlrzkixeyzvvtAD4/sfZ1EykcIFOAje1+fNmsrM9traDSFr8qpwQT9I6kZT5Cs5/7xiZTPwGiKUwOjHDs7zJGTg3T3DtHTN8LZ4STDCa8iSgRMkRhGybngnA4WtTYQiwqeKrGosKi1gTXndOTcfuuG1bQ3xfB8xfP94KVKW2OMrRtW53UzLWb670wbamVaTklXZDKCcHJgFJiZJVEPbQA8XxlOeJwdStLTP0J37xCHq0hp5MIUiWGUmK0bVtMQi7J0XhO/cE47S+c10RCLTnrz27h2CZ/fdAlrlrQhIogI53e2pgs05nMz3bh2CZsuX86J/lFeebufE/2jbLp8+YziCJkNtQQhIkJEmLahVqbl1BCN4PlBltBgwuPQiQFODY4WbEnUchuAbFSV0ZRH/0iS04MJ3j47whunhnj91CDHzg5zanCUgZEUiZRPtU+PsxiJMWeo1rTQmc7pmN/SQGd7asK55HO83Qd62PH8m3S2N3KeC5DveP5N3tU1v2zXJDPbq60xxvH+0fS6wYTHcNLjxnefV/Bxa7ENQCLlk/LHZ04lPa16BZEvpkjKSLXe6OYC1Z4WWsjNb6pzAcb9hv70hotzHreY2U2rFrVw8MQg4mvQ3lfBVzh/8dTWRGa215mhxLh1IoDCEz97u6DSL9WM52uQZuv5JFM+KV+dApk7CmMyTJGUiWq/0VWa2SrZQudqVBPZ535mKJHzXLZ99wCDCS+v39BMspsm+xsU0lAr+xibLl/OnkOn+fcTgwgQiwgxN7nN8/2a7DcfKoxRNxcj6fkkU0rKL968jFrDYiRlwsp6T04xajm91tPPyf4EKXejC+dqvNaTe65GtZDr3H9+vJ+evtEJ53KwZyDv31Ch2U1T/Q3ybaiV6xg7nn+TrRtW0xiLEI+OKZFaIen5DI6m6M2KYbx1ZphTA6P0ucB3PSsRMIukbFj+++QUww1T8FyNKiHXuQN4Cg1Z55LyNe/S8IVOInzwqUMkUuOtoPamMYsuH9fcVH/HmbrHykVmfanR1Fgso5oyo6qZ2no8qGHqOf99OorRO6PQuRrVQq5zDxlJBgHpkWSQ6hkV8v4NFZrd9OrxPk4NJkh5SlSElBfM+Xjt+FQthKY/l/DveOd1FzK/JY5EwFNFIjC/pTL95lWDOmZ9I0lODozy5plhjpwa4s3eYU70B1ZGeM2N/DCLpEwUq8zEXKQYtZwuOKeDwycH6B/JfKKOs2pxWymGXDRynXssIiQ8DWqiuNZu6sO5C5rTab/5/IYKCfAnPSXpKdklHhNe/jfTqf6OoXusGNWICyGzGGEpakwZAaZIysRsykzMdYqhZMNjLJ0Xq0pFPVkgO9e5h9ZHLBJJu4E8VVobotx53YUluRknUhNre00lz8V0f8dSpe1mVrFNhopjjqXXVjumSMpENeT1VyvF6J1RzP4bxWa6jL3scZ8dTtLaEOXkQCJtXS1ta2Qw4ZXsZpyc5CE9lOeTVVeOv0EqLEiYGrMuzMKoPCVTJCLydeCDQI+qXuxknwF+CzjhNvtDVX3crbsLuAXwgNtV9XtOfgVjTa0eB+5QVRWRRuBh4ArgFPAxVT1SqvMpRnqqVS2dnGLcIKt1otp0f/vscd+4fS89/SOs7hxzyw0lUixpbyrZGMMndwn/0cDJpaoFpa4X62+QGfzOdEt5vlkYpSaYce/TP5KibyRJ/0gqZzXqTEppkXwD+BLBzT6Te1X1C5kCEbmIoLvhOuBc4AcicoHrkPgAsAXYS6BIriXokHgL0Kuq54vIZmAb8LHpBpXwfI6eHkKEoPwEQVZMxC0jIEiwnkD+rwdP8rknDhCPCh2NMd7uG+aPvv0z/kTX8Z4Lz8nrYljWVv1S6N++EvG0tsYYg4kUqoErLfg/Aa0NsZI+BKmqi8+MuaTCznzV6JZ65tBpHn32KMf6hlnW0czmd6/gytULKz2snKgqg4mgBEv/SIq+4eC9fzRF/0iSvuFU8HkkSZ97D5VHsoDYGJS2Q+JTIrIyz81vAB5V1VHgsGude6WIHAE6VHUPgIg8DHyIQJHcAHzG7b8D+JKIyLQ925WCTeGv/ugwIkGXsJSvxCMRUp7H/U8eZFVnG1ERIhGIRoSoq40ULofy5fOaOTEwkp4DAJa1VS8UmkxQCTfdJ65ZxX27DhKNBArEd+m5n7hmFY891z3rh6BUGMPwa3fW9zOHTnPfrteIRYSOphinBke5b9dr3MGakioTz1cGRsff6APFMF42MDpRViwDrq1xalVRiRjJJ0XkJmAf8Luq2gssJ7A4QrqdLOmWs+W496MAqpoSkbPAIuBk9heKyBYCq4blXSsKHvCxvmE6msZfqqZ4hLf7hlFVUqowjW768GXLuW/XayS9JE3xCKMpn5Sn/MfLl/PWmeF0IbygSB9jnwMTKW0hSYZcZMyaCpRWdae61iszsTCK4SIqxB0blinJTga5/X0XsOfQ6bwUYTjjO+UrqYyAd3KOzMd49NmjJFMeZxIeSc8nHo3Q2hDl0WeP5qVIkp6ftgDGKYRQNjwmy1w/MDqzFsvZRATam+K0N8Vob4rR4ZY7MmXNY7K2xpiTx2mKRznvnsmPXW5F8gDwpwTu1z8F/hz4z+Tu7a5TyJlm3Xih6nZgO8C7Lr284F/0so5mTg2OjsuRH0n6LO1ozvsYV65eyB2s4dFnj/J23zBLnVl8+TsWMP2vW4MAACAASURBVJLMPzNmOiLOGkormEimYhpTVpnvkQzlFbrzTCkVj0pYGDMpyXP7+y7IWfcqVISDo0kaY2OK8KPru3jrzDCerzVlWcyUI6eC9PLQHZ5M+ZxO+Qwn+/jnnx7LcBGNuYsGMhRC9hygmRKPyphCaBy7+Y8phTgdWYqhvTFOS2M0PWG32JRVkajq8XBZRL4CfMd97AYyTYUu4C0n78ohz9ynW0RiwDzgdCnGvfndK7hv12sMJz2a4hFGksFT1+Z3F2bdXLl6Ycn9qb4qfoH+zcnIjCGFFhDh5xzrQospUyml9yG9MG5bJ8r4zoxlxmZ251KCtUS5EwFmEtcI4xUpP/h9hy6ody5p47c3vpNHnxn/EHTJivlFfQgqJ9nxg/Dmf3Z4osUQKoWzw6mxJ9WM/2KDCZ8///6rBY+hKRYZpwQCBRBaBMHn9uYxZRGua4xFqu73X1ZFIiLLVPWY+/hh4GdueSfwTRH5IkGwfQ3wjKp6ItIvIlcBTwM3AX+Zsc/NwB5gE7Br2vjIDJnMmqjWIFuxUNXg/8vYP1VDLhffZMoNyW2RhbJMF+FcscjeOD3I/Ob4mEtJg54gb5we5MxQUJMstCT8PCyKnx/r47WefoaTHv0jKX7+dl/Bv/9SBKrzjR+MDyoHy8WKHwiwdF5TloWQ24XU1hRjXnPgNmqIzZ3CIqVM//1bYCOwWES6gT8GNorIpQR3pSPAVgBV3S8ijwEvAyngNpexBXArY+m/T7gXwNeAR1xg/jRB1lfJKIc1YeSPquKVScFlW04TrKwJ249/zz5WJIeiG7fNJMfNRXAdNAiO+xpYpAqdbU0T3LHDSY/OtiZODyamOOJEHvm3Izy093UiAtEIjKY8Htr7OgAf/5WVeR1jukB1GD/oy4gVDIyWN37Qln7yj2UogjELYecLxzgzPMqo80jEo0JbY5SuBW188WOXFGUctYrMdb9mNu+69HL9x+8/VelhGFnUUlplOZjt9Xjm0Gn+9Dv7GUr66WBjSzzCH31wXcHX9Tf+8seMpjyikbEnaM/3aYxF+af/ck1almv+QagYvvnMGwyMpIhIMEvf80lXzI1FIkWNH4RP/uMVwlj8IFQMY26lOC0N08cPMpVhpov7jveUNmurGohHI5y3qPU5VV2fa73NbDcqTqXSKquVYlyPn7/dl1YiENhtQ0k/L5dU0L7XSyuCoYSHwLhS6ULQ5fCOR1+Y1fwDgKQ3UYmE8YNQIWQrgfRyc5z2MLuoOU5TCeMH9erizgdTJEbFefTZo8QiknbDhCmy+aZVzjUeffYoKc/jzNBYmmlbY/5ppgCPPdftXFGSViaer3zzmTdobYrniB9MPf8gWz2En1968+yU42htjNLRFOfUYIJEyh9z5xFMfFzc1sDt712TVgr/fnyAf/rpMY73j1SlZTqZi7veLWpTJEbFmWqeTj3y+ulB+oeTSCQI+ic9n9MDPqOpAX725tm85h8MupIWXpaFMOopX/rhwaKMszke4aPrVwTZRs2xdJppsBwElKMuaeET33iW108PpZMbgqlXSntjjKvPXwwEN+Ov/9uRqrZMcykMoO4talMkRsUpxjydameq+EF6zsFoIDs77CyCLCXQN5Li9kdfmNU4BDhvUct491BTdgrq+PjBJx56lqTnc2YolY63zG+J0RiLcnOewfbBpMc5HY30DiXTVtaClgaGMmIj1W6ZPnPoNNu+d4BB13K4dzDBtu8NsqA5XtXjLgemSIyKU6x5OuUgO36QXasou35RULYiOeP4QS5C91BDLMK585pZvqA5SyHE+cnrp9n96kmX7jzWkfD/+OV35J1pFXLuvBZODY7S2TZWNHI46bGotTHvY4QPCysyZsMPJz2WZByj2i3T7T86RN9wkkhEiEYFVYK/7XCS1Z2t47atpnGXA1MkRsWpRBCzsPkHpalfFMYPstNOnz50ioHRJAkvmOsRiwgtDVE6muMkUsHTfKhwh5MeH7h42YRr9cF3LWPlvx3hsee6GU56NMejfPSKroKVCASKftv3DnC8fwTfVyIRobUhxm0bzy/oGNM9LFS7ZXq0dyg9/whcercoST8YZ7WOuxyYIjGqgpnO06mG+kVtmWUqMmYhtzkr4UT/CP/y8nHi0QjN8QhJL5jv8an3XjBJ4HZRzjTTmAgajeTtQvn4r6yckeKYFFcZeCZTd/J5WKglyzSTWARSvtbcuIuJKRKj4uSKH+R2GZWuflEsIunMoY6mGG0uaNyRY4ZyZmwhn/pFv/OtF4lFoH8kyenB6bOwJrvp3vvkq0QFjvaOZsQZ4gW5UDJn80ciuWutwViVAIAdz3czrznO0nkZrq2Ex98/381171o2+Ze5gEp4eT5wyTLef0mwfaiQFE1beP9h3Tm0NEZ5eM/rvHVmmHPnN/OffmUlV69Z7KoRBwo4LHUffvb9seVSsmJ+M6+fHgJfx7kL37GwhS0b3lnXacGmSIyikU/84NCJwXSpjagI8ViEEVcEsBg0xSPjrIF0EDmrdEVH5voSzz/IzsJK+UrvYJKUPzjpPrkstNYfxXj91CBRdxzPV473jbJqcSsdzfFxJV4kMlYVWiRQlEEBz8LP8e2+EaICb5waSndsXNzWwNt9I8zLKi+fTaEN4a6/dDnXX7p80vX5Ek60zqgQk5YrgWszrAKQOSlbGVNyvroSMu791o3n8/888QqDiVTaxdfREGfLhnfWfeULUyTGBDxfGRwdcwXlih+Mb44zs/hBEmUklbv+/mTxgwkT0pzSCJersX5RIuWn631B8ITuSdCPIxsRIeYURSx8RSPEo0LcnZq4IirqjhWLCIvb8g98F0p7Y4zXegaCHjtOEb55ZoQ1S9qm3G8mFYiLhWTGMcavASAjnJE3H3n3CjrbGwPFeHqQrgUtfOKaVVxzQWdaKQUW0vhlT5WUi3fNhXL6uTBFMoeZafxgcDRVlApWmfGDtsYYb54ZJpHyXKFA0jGAzrYm/uv/uoaOprHYQjj/YC4QjwqjqaAWVugSAWiMCotaG2mIRYhFp+8pM5j06VrQnLOXe6nYfaCHI6cG00UeYxFJK8Tpyis9+NQhkp7HqYFUerwdzUHHxXD9TFtXV4rZVnFWDa6j51x0mVZRtjWUuS5UTJ4f7BfsXz1KyRRJlZMZP+jPUgTZ7TH7R1LjlEMx4wdjDW/Gxw9CF1JH5jyE5tz9D/7jA//GsBe4BKKx4D/NcMKjdzjBunPnFWWs1UJoWcSjEc5f0s4bpwcZGAluqI2xKO1NMVYtbmNey9SuoUzCTovZvdwbohFu3L636Dfl0KJIekosEkxrSfpKU0xYPq9pWgX2Wk8/Z4dcuqyzZE72JxgYOcPv73iR/pEUKd/nZP8ov7/jRT6/6ZKaUCazQUSIRaUoN95QwYy56SZaRZ6r6pyrsGcxFZEpkjJR6PyD2dYvykVTLJJRoyj3hLQJXdOKGD8oxMVTC4gI8ajQEI0QiwZWRTzi3qNjLrZP/tr53L1zP+1N8Vn1YM/VabFvOIkCCc+ftfsoO57ROzhK0vPSN56IEFhOzt22pL1pyuPl+nv7EvQBGU766eOoQu9Qkm3fPTDnFUkxERGirgzOTAjdbn6GdeT54xVOaDlN9w2mSAoke/7BBIWQKStR/+TWxui4UhRTxQ/CxjjtVRA/mMzF0xCtbjeWiNAQi6SVRty98r2exeqQmOs48YiQ9LWgBla5yBXPOHxyMMiQctv4Cr6n+H5+ijAeFYaTE//evgYps5kKRkU5dHLy5AOj+EQiQqSAlgVTUbeKJJ/4QWZAuZTzDzIDyrmDy+MDy7UaP1i5qI3u3kEGx/W8jtG1oHX6nctELBIoiPSrAIUxFcXqkJh9nGu27WJ+VuZUczxKd+9QQcfN1VExVCJhYD9EgXuuXzft+VxwTgeHTwbtacMYSXtTnOP9o5Puc/8PXs3ZN96obupOkfz7iQE+cP+PSxI/CJ/80wXsmrKb5IwphdbGWMn6J1cr4Qxpzz2aeq45VSUmbqXdUrEIjdFoWnHUmpIO4yahAoCg9EhXRimSfDjaOzRBIWnWe0hE8nObha64pfNi41x6y+c18XbfKJI1H2N+U5T7dh0MXGiR4Dzu2xUUmDRlUt2UskPi14EPAj2qerGTLQS+Bawk6JD4UVXtdevuAm4BPOB2Vf2ek1/BWIfEx4E7VFVFpBF4GLgCOAV8TFWPTDeucAZqNk2xSBA4nsQayJ6Q1lGG+QdzkaTnk0iN+TgaoqWNj4RB78A1FUkrj4bo3Pi75YqbzCT+kkshTUbKDyyH7Jt7rjkjmy5fPsHCeFfXfG7/2+cZSHjp2EtbQ5TBhOeUSGABRiTogfLVHx+uekVS6HyZuUYpLZJvAF8iuNmH3Ak8qaqfE5E73edPi8hFBK1y1xH0bP+BiFzg2u0+AGwB9hIokmsJ2u3eAvSq6vkishnYBnxsukEt7WjiT29YN6GLWqXjB/XA9h8dYjjhEY+OlRIfTnhs/9GhokzmynZLhTGNuaAwJqNY8ZdcCmkqsi2FXDGW39vxIgJ0tjdynjvmjuffBKAhHqXBpRRHI0JDPEr/QIKG2Pi/VUQoaXpzMajkfJlqoWSKRFWfEpGVWeIbCPq4AzwE7AY+7eSPquoocNj1Yb9SRI4AHaq6B0BEHgY+RKBIbgA+4461A/iSiIhOk9M2rzme7n9glJfJit4dLdCfHwa/w/hF+F4LbqlSPLkWI/6SSyH19I0wOOqR22bUcZZCGGNJecrhs4MkPB/Pua6GEt64eSRf/fFhOtsbWTZvrKjhUCJF71AybaGE+AqtDTOYPVhGcsWXZpLwUMuUO0ZyjqoeA1DVYyISXuXlBBZHSLeTJd1ytjzc56g7VkpEzgKLgJPZXyoiWwisGpZ31U8htblAZoZUMYPflWD3gZ6qnj+RrZBu3L6XI6cGOHZ2YnDc8xmXeHK0d4i+oVH6RrPUjgapyZnzSDxVzls4PobTHI/S6txbKd8nIi5LTOET16wq7okWmaO9Q0QFDp0YGFdCptCEh1qmWv5H5nqU1CnkU+0zUai6XVXXq+r6hYvMGqkUK+Y34/kwmvLTL88P5BERGuNR2pviLGpr5Nz5zaxc1MqKhS0sndfEwtYG2hpjVa9Edh/o4cbte7lm2y5u3L6X3Qd60uu2ffcAvUPBvI9YNIIyNn+iGtm6YTXx6ERrILOwYxrfn6hEHJ6vCG5GvAT7ZbvOhpMe686dx/XvWoqvMJoK5jNc/66lVR8faW+M8eaZEVLOTReWkGlrrJ9cpnL/rzwuIssA3Hv4v6wbyDQVuoC3nLwrh3zcPiISA+YBp0s2cmPW/OoFnRPcJD7wG5ecy8rFrSyf30xneyPzmuM0xaNTlgupRkJfeU//yDhfeahMDp0cHKu2626sEaFq509sXLuEe65fN+EmET6ttcTH/j6nhydPi0+X+XATqVriQt9wkteO9/PKsbO8dryfvuEkv7x6Ic+9cZaVi1q4+NwOVi5q4bk3zo5TxtVI2puuGS+KO3O82im3ItkJ3OyWbwa+nSHfLCKNIrIKWAM849xg/SJylQSPPzdl7RMeaxOwa7r4iFFeohGhuSHKvOY4ne2NvHysn6UdDbQ2RIlHhdaGKMvmNfLMkd5KD7UohLWl3j47ws+P9/P22RGSnpeuLVWrtGV1LYwIzG+OcfHyBWnZ0BQB8YgEqd6xqLCotYHl81uCe62zTpDg3vv4S8dIpMZfv0Sq+q/fQMJj+fwmYlFJn+fy+dOXkJlLlDL9928JAuuLRaQb+GPgc8BjInIL8AbwEQBV3S8ijwEvAyngNpexBXArY+m/T7gXwNeAR1xg/jRB1pdRASKuHHxDNCMAniP4/ebZYRa3NdHZPiZX1TnjS56stlTS6wdg1aIWDp4YnDB/4vzFhc35KBe7D/Rw+98+T9/o+BtiWEMs3xRj1Yxihb4iIsxrjk8Ith88MRj0RSEoYJnylFODCVJeX1HPq9hMVgNtuhIyc4lSZm3dOMmq906y/WeBz+aQ7wMuziEfwSkio3xE3ZyMxli04OB3sSbPVSuJlB/UJ/JcfSLXWz2sJXbndRfyezteZGA0lU57nd8Y587rLiz52GaSLfbf/vGlCUoEIOFpQdWhg3L3Y5bHiYFRlnaMv8k2x6NBdeHoWAVkkaC8SqJIteZKRbHm8tQy1R25NCqKiNAUjzK/pYElHU2sWNjCOxa1smxe84yC31s3rCbpKUOJlCtimZpT/+F89fGclaEE756CaqBINq5dwhc2XcJlKxawtKOJy1Ys4AtlyNiaLnYzGW+eHZl0XTwq41xOU6VetzZEWbu0gzVL2pnn+s7nCrbHopIuoR50TgwuZLUnWISxpCXtTZwdTrKkvSmvEjJzifpJKzCmJR6N0BgPrI2mePFnf29cu4RN3WcmzHSeK//hRpO5s5ZGMuTFqrlVCFP1BckcS7bVMlXE8fjZ0XFVqeORICU4F53tY023muNRGqKSfqDIfIJ/5+JWevpHOTM8Np9kfnOcNUvaZ30NSk0l/q7VhCmSOiTqfNxh2ZBG56IqdZbU7gM9PLL3dRIpHyEoH//I3td5V9f8OfGfcBI9Mqm8XLzW00/vYCJtKaU8b0J7490Hesa53U4OTF5YEYJsu/6RsUythliU0VTuhmjtTWM1vIaTHmvO6WDrhtUTZuP/tPsM9+06GPw+3TySsyMpfrmOW9jWCqZI5jDRcTWmKj8DfNt3D3ByIJG+2aR8n9GBhPWhmCXTVcwdSnhkhhmUwOWWmWn1uSde4cxQkqjr8655KL/RjD4yDbFIukVwmEiQdP1IcsUOcj3BP/jUITrbGrKqBcfYc+g0t8/46hjlwBTJHCEWCd1SY4HwaisZ8urx/glPrOrkxnjyDY7f/4NXp62YOzJJGmqm/PApV74mI9BNAdmra5a0c+TUAH3DY0pg4bxG5jXFWdDamFcdsKO9Qyxua6QzI9tpLmX1zWVMkdQoDbEITfFo8IoFHfqqncmSb6o8KSdvIpCzLlWhf5lCigB+9ceHp62YO5lxUQyPW1gFOMxcam8KXF6jKZ/Tg0lufPd5ec9Mn+tZfXOZ6r/7GMQiEVoaYixoaWDpvCZWLmqla0ELi9saaWuM1YQSqQeWL2guSD4ZmUUARYL37CypkLD0eiYzqZi7enFrut93OmMqD/7KjWnj2iVccd48jveNMpjw8HyltSHKjuffzHtm+lzP6pvLmEVSRcyVZkv1ynAid5mQyeSTcbR3iETS4/DJwXT20uLWhpy97VsbovSNpMj2Q3U0FfZf+9PXrh0rKOn5xCIR5jXHSCQ9hlOTK5UwzrL7QA+P/+x4uqe7KgyMejTGI3lXwS1WSXyj/JgiqRCRsBS6e4WZU3O5d8Zc59RgsiA55I6FCNAzkEBwbW41+Lwih2XT0RgqkonyQti4dgmf33TJhJs4BDf2PYdOTbn/g08dCiYURoI6YiLgo5wdStIdyT/GUe9ptLWKKZIyEAbCM8uHxOvQHdXRFKN/ZHyKqADtBT49VyuTPbdPJp+srPzZ4WTO/XKl5HbnKPGeLc83djPZTXzj2iWsvPOfJzmLgKO9QzTGIqS8oPwLBAH7Uc+3GEcdMDf+B1cJ5pqamk9csyqdYVRL/SZKRVhWPhqRoKy8BmXlU75OuPlHYMalQuKxCImUP0GBxwuYMS7kVojhL3vFghZSns+pwQT4gRLxVIlF8q/JZdQupkhmSDhHoyGr6ZK5piYnzN6Zas5DLVNo1lZmWXkIbr4qwe3ax92k3R3cB1pmWCokLBYZlbE5Hp4qqxblbymE++WSw1i9qUWtDemsrWhEuG3jO81VVQeYIsmDeFZL13p1TRWD2993wZxRHNkU48k/E03/E7CweWb/XYtRLLKtMcbgaOCWzCxI2eqaN1mgvL4xRZJBtmsqjGvUWoMlozJM9eSfK6g+WVn5eESY3xLj1OBYzalFrXEkMjOFtHHtEm666h2BJeh5NEcj3HTVOwq6yYduyegUbkkLlNcvdftYnd10afmCZlYuaqFrQQtL2puY11KbXfqMynHndRfSEo+Q9H1GUj5J36clHuH9v7gsZ/Xd9//iMua3xJFIoHAkAvNb4py/pI1YNEJzPGgA1hyPEotGcgat45P8D86U7z7Qw47n36SzvZELl7bT2d5Y0PwOCCzJO95zPs3xKCk/KL54x3vOn7PWpVEYFbFIROQI0E+Q/J5S1fUishD4FrASOAJ8VFV73fZ3Abe47W9X1e85+RWMNb16HLhjui6JsaiwYmHLnHVNzaTvhFFaHn/pWHqCIUBLQ4yhRIo9h07zhRwpt2HxwjApIeH59PQnuPHdE4sX5lMtIHOCY+b35zu/I2QuuyWN2VFJ19avqerJjM93Ak+q6udE5E73+dMichFB98N1wLnAD0TkAtdB8QFgC7CXQJFcy1gHxZxEROa0Esm3tIZRfLZ99wBDSZ94NJJ2VQ0lff795CC/cM74UujN8SjdvUOzLl7oT6JIMuVHe4eY3xwftz78fsMoBtV0R70BeMgtPwR8KEP+qKqOquph4CBwpYgsAzpUdY+zQh7O2KcuKaS0hlF8MrOwBCEiEtS+8jRnI6fJ5leExQtXd7axdmkHqzvbWNzWmPPGH80oshi+MuUQpOYW8v2GUSiVUiQK/IuIPCciW5zsHFU9BuDew8e05cDRjH27nWy5W86WT0BEtojIPhHZd+LEiSKeRnVxtHeI5vj4Gc325Fl5YhEpqIZUITf+69+1FAj7oo+l6IZysBpWRumplCK5WlUvB64DbhORDVNsmyvarVPIJwpVt6vqelVd39nZWfhoawR78qwsqxa1BNlMvqKq+L7iK7yzs7WgVqyF3Pjv3Xw5H750WdoCiUaED1+6jHs3X57exlrBGqWmIjESVX3LvfeIyP8ArgSOi8gyVT3m3FZhSkk3sCJj9y7gLSfvyiGvW8JJYbkaCRmlZ6r5GoWkxhY6J+PezZdz7+bpj2mKwygVMk2SU/G/UKQViKhqv1v+PnAP8F7gVEawfaGq/oGIrAO+SaBszgWeBNaoqicizwL/BXiaINj+l6r6+FTfv379et23b1/Jzq/ShFlbNimsMtj1N+YqIvKcqq7Pta4SFsk5wP9wpURiwDdV9btOKTwmIrcAbwAfAVDV/SLyGPAykAJucxlbALcylv77BNNkbNUD9uRZWez6G/VI2S2SSjPXLRLDMIxSMJVFUk3pv4ZhGEYNYorEMAzDmBWmSAzDMIxZYYrEMAzDmBV1F2wXkRPA6zlWLQZO5pAbAXZ9psauz9TY9Zmear9G71DVnDO6606RTIaI7JssI8Gw6zMddn2mxq7P9NTyNTLXlmEYhjErTJEYhmEYs8IUyRjbKz2AKseuz9TY9Zkauz7TU7PXyGIkhmEYxqwwi8QwDMOYFaZIDMMwjFlRN4pERFaIyA9F5BUR2S8id+TYRkTkfhE5KCI/FZHLcx1rrpLnNdooImdF5AX3ursSY60EItIkIs+IyIvu+vxJjm3q9jeU5/Wp299PiIhEReQnIvKdHOtq8vdTkcZWFSIF/K6qPi8i7cBzIvJ9VX05Y5vrgDXu9UvAA+69XsjnGgH8SFU/WIHxVZpR4D2qOiAiceDHIvKEqu7N2Kaef0P5XB+o399PyB3AK0BHjnU1+fupG4tEVY+p6vNuuZ/gD5nd4/0G4GEN2AvMd90a64I8r1Hd4n4XA+5j3L2ys1Xq9jeU5/Wpa0SkC/gA8NVJNqnJ30/dKJJMRGQlcBlBZ8VMlgNHMz53U6c30imuEcAvO/fFE66DZd3g3BIvELSC/r6q2m8ogzyuD9Tx7wf4C+APAH+S9TX5+6k7RSIibcDfA59S1b7s1Tl2qbsnqmmu0fMENXcuAf4S+Mdyj6+SqKqnqpcCXcCVInJx1iZ1/RvK4/rU7e9HRD4I9Kjqc1NtlkNW9b+fulIkzm/798DfqOo/5NikG1iR8bkLeKscY6sWprtGqtoXui9U9XEgLiKLyzzMiqOqZ4DdwLVZq+r+NwSTX586//1cDVwvIkeAR4H3iMhfZ21Tk7+fulEkEjSJ/xrwiqp+cZLNdgI3ucyJq4CzqnqsbIOsMPlcIxFZ6rZDRK4k+A2dKt8oK4eIdIrIfLfcDLwPOJC1Wd3+hvK5PvX8+1HVu1S1S1VXApuBXar6m1mb1eTvp56ytq4GPg685Hy4AH8InAegqn8FPA68HzgIDAH/qQLjrCT5XKNNwK0ikgKGgc1aP+URlgEPiUiU4Ab4mKp+R0T+T7DfEPldn3r+/eRkLvx+rESKYRiGMSvqxrVlGIZhlAZTJIZhGMasMEViGIZhzApTJIZhGMasMEViGIZhzApTJIZRBkTkUyLSMoP9jtTRhD2jRjFFYhjl4VNATkXi5l0YRs1iisQwioyItIrIP7vChD8TkT8GzgV+KCI/dNsMiMg9IvI0QRHD97oeFS+JyNdFpDHrmM0i8l0R+S33+Tdd748XRORBU0ZGJTFFYhjF51rgLVW9RFUvJqj4+hbwa6r6a26bVuBnqvpLwD7gG8DHVPUXCSpO3JpxvDbgn4BvqupXRORC4GPA1a5Aogf872U4L8PIiSkSwyg+LwHvE5FtIvK/qOrZHNt4BMUxAX4BOKyqr7rPDwEbMrb9NvD/qerD7vN7gSuAZ10pm/cCq4t9EoaRL/VUa8swyoKqvioiVxDUTPp/ReRfcmw2oqqeW85VOjyTfwWuE5FvurpUAjykqncVb9SGMXPMIjGMIiMi5wJDqvrXwBeAy4F+oH2SXQ4AK0XkfPf548D/zFh/N0GF3C+7z08Cm0Rkifu+hSLyjuKehWHkjykSwyg+vwg849xO/xfwfwPbgSfCYHsmqjpCUOX170TkJYLueX+VtdmngCYR+TNVfRn4b8C/iMhPge8TVN41jIpg1X8NwzCMWWEWiWEYhjErTJEYhmEYs8IUiWEYhjErTJEY2cLWTAAAACFJREFUhmEYs8IUiWEYhjErTJEYhmEYs8IUiWEYhjEr/n98T2k/FyIHzQAAAABJRU5ErkJggg==\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",
"#Yes, there should be a weak linear relationship\n",
"\n",
"sns.regplot(x='stroke', y='price', data=df_strokeprice)"
]
},
{
"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",
"-->"
]
},
{
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look at the relationship between \"body-style\" and \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc198c119e8>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEGCAYAAABPdROvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5hddX3v8fcnyTSEUm6ZAcMMGkpiMVCNTUrxeCkSEwhewAoSH5XxNMd4KBJaWj1iPRXP0zyVthqfiQUFwQyghIC3iBlJDCDYxsRBYiABm1GijInJTLgYzMVcvueP9dvOnsnO3PasvWeSz+t59jNrf9f6rfVba/be3/1ba+3fTxGBmZnZYI2qdgXMzGxkcyIxM7OyOJGYmVlZnEjMzKwsTiRmZlaWMdWuQKXV1tbGxIkTq10NM7MR5bHHHuuMiLpS8466RDJx4kRaW1urXQ0zsxFF0i8ON8+ntszMrCxOJGZmVhYnEjMzK4sTiZmZlcWJxMzMyuJEYmZmZXEiMTOzsuT+OxJJo4FW4FcR8TZJNwAfBDrSIh+PiOVp2euBucABYH5EPJDi04DFwDhgOXBtRISkscAdwDRgB3BFRGzOe5/MzAaqqamJtra2AZVpb28HoKGhYcDbmzRpEvPnzx9wucGoRIvkWuCpHrGFETE1PQpJZAowBzgbuAi4KSUhgJuBecDk9LgoxecCz0fEJGAhcGOue2JmVkG7d+9m9+7d1a5Gn3JtkUhqAN4KLACu62PxS4AlEbEXeEZSG3CupM3A8RGxOq3zDuBSoCWVuSGVvw/4vCSFR+sys2FmMK2DQpmmpqahrs6QyrtF8jngo8DBHvEPS1ov6XZJJ6VYPfBs0TLtKVafpnvGu5WJiP3Ai8D4npWQNE9Sq6TWjo6OnrPNzKwMuSUSSW8DtkfEYz1m3QycCUwFtgKfKRQpsZroJd5bme6BiFsiYnpETK+rK9nnmJmZDVKeLZLXA+9Ip6aWABdIuisitkXEgYg4CNwKnJuWbwdOLyrfAGxJ8YYS8W5lJI0BTgCey2d3zMyslNwSSURcHxENETGR7CL6gxHxPkkTihZ7J/Bkml4GzJE0VtIZZBfV10bEVmCnpPMkCbgS+FZRmcY0fVnahq+PmJlVUDW6kf9XSVPJTkFtBj4EEBEbJC0FNgL7gasj4kAqcxVdt/+2pAfAbcCd6cL8c2QJy8zMKqgiiSQiHgYeTtPv72W5BWR3ePWMtwLnlIjvAS4fqnqamdnA+ZftZmZWFicSMzMrixOJmZmVxYnEzMzK4kRiZmZlcSIxM7OyOJGYmVlZnEjMzKwsTiRmw0BnZyfXXHMNO3bsqHZVzAbMicRsGGhubmb9+vU0NzdXuypmA+ZEYlZlnZ2dLF++nIhg+fLlbpXYiONEYlZlzc3N7N+/H4B9+/a5VWIjjhOJWZWtWLGCwugHEcEDDzxQ5RqZDYwTiVmVnXrqqb0+NxvunEjMqmzbtm29Pjcb7pxIzKps1qxZZIN/giQuvPDCKtfIbGByTySSRkt6XNL96fnJklZK2pT+nlS07PWS2iT9VNKFRfFpkp5I85rSkLukYXnvSfE1kibmvT9mQ62xsZGamhoAampqaGxs7KOE2fBSiRbJtcBTRc8/BqyKiMnAqvQcSVPIhso9G7gIuEnS6FTmZmAe2Tjuk9N8gLnA8xExCVgI3JjvrpgNvdraWmbPno0kLr74YsaPH1/tKpkNSK6JRFID8FbgS0XhS4DC/Y3NwKVF8SURsTcingHagHMlTQCOj4jVkd3ackePMoV13QfMKLRWzEaSxsZGXv3qV7s1YiNS3i2SzwEfBQ4WxU6NiK0A6e8pKV4PPFu0XHuK1afpnvFuZSJiP/AicMjXOUnzJLVKau3o6Ch3n8yGXG1tLYsWLXJrxEak3BKJpLcB2yPisf4WKRGLXuK9lekeiLglIqZHxPS6urp+VsfMzPpjTI7rfj3wDkkXA8cAx0u6C9gmaUJEbE2nrban5duB04vKNwBbUryhRLy4TLukMcAJwHN57ZCZmR0qtxZJRFwfEQ0RMZHsIvqDEfE+YBlQOBHcCHwrTS8D5qQ7sc4gu6i+Np3+2inpvHT948oeZQrruixt45AWiZmZ5SfPFsnhfBpYKmku8EvgcoCI2CBpKbAR2A9cHREHUpmrgMXAOKAlPQBuA+6U1EbWEplTqZ0wM7NMRRJJRDwMPJymdwAzDrPcAmBBiXgrcE6J+B5SIjIzs+rwL9vNzKwsTiRmZlYWJxIzMyuLE4mZmZXFicTMzMriRGI2DHR2dnLNNdd4vHYbkZxIzIaB5uZm1q9f7/HabUSqxg8SjxhNTU20tbUNuFx7e9YHZUNDQx9Ldjdp0iTmz58/4O3Z8NbZ2UlLSwsRQUtLC42Nje680UYUt0iqYPfu3ezevbva1bBhorm5mULPPgcPHnSrxEYct0jKMNjWQaFcU1PTUFbHRqiVK1eyb98+APbt28eKFSu47rrrqlwrs/5zi8SsymbOnNltzPZZs2ZVuUZmA+NEYlZlb3/7239/aisieMc73lHlGpkNjBOJWZV9+9vf7tYiWbZsWZVrZDYwTiRmVbZy5cpuLZIVK1ZUuUZmA+NEYlZlb3zjG7s9f9Ob3lSlmpgNTp5jth8jaa2kn0jaIOlTKX6DpF9JWpceFxeVuV5Sm6SfSrqwKD5N0hNpXlMaKZE0muI9Kb5G0sS89sfMzErLs0WyF7ggIl4DTAUuknRemrcwIqamx3IASVPIRjg8G7gIuEnS6LT8zcA8suF3J6f5AHOB5yNiErAQuDHH/THLxaOPPtrt+SOPPFKlmpgNTp5jtkdEvJSe1qRHb+OpXwIsiYi9EfEM0AacK2kCcHxErE7jsd8BXFpUpvDrrfuAGYXWitlIMXPmTMaMyX7SNWbMGN/+ayNOrtdIJI2WtA7YDqyMiDVp1oclrZd0u6STUqweeLaoeHuK1afpnvFuZSJiP/AicEjfEpLmSWqV1NrR0TFEe2c2NBobG39/19aoUaNobGysco3MBibXRBIRByJiKtBA1ro4h+w01Zlkp7u2Ap9Ji5dqSUQv8d7K9KzHLRExPSKm19XVDXAvzPJVW1tLfX323ei0005zP1s24lTkrq2IeAF4GLgoIralBHMQuBU4Ny3WDpxeVKwB2JLiDSXi3cpIGgOcADyX026Y5aKzs5MtW7KX9JYtW9yVvI04ed61VSfpxDQ9DngL8HS65lHwTuDJNL0MmJPuxDqD7KL62ojYCuyUdF66/nEl8K2iMoXzAJcBD0bhhnyzEaK408aIcKeNNuLk2SKZADwkaT3wI7JrJPcD/5pu5V0PvBn4O4CI2AAsBTYC3wWujogDaV1XAV8iuwD/M6AlxW8DxktqA64DPpbj/pjlolSnjWYjSW69/0bEeuC1JeLv76XMAmBBiXgrcE6J+B7g8vJqalZdM2fOZPny5ezbt4+amhrftWUjjn/ZblZlvmvLRjonErMqq62tZfbs2Uhi9uzZvmvLRhwPbGU2DDQ2NrJ582a3RmxEciIxGwZqa2tZtGhRtathNihOJGZmA9TU1ERbW1vu29m0aRMw+GG9B2rSpEmD2pYTiZnZALW1tbHhiac48dhTct3Owd9lN2H86mf5/0j1hV3bB13WicTMbBBOPPYU3nzWnGpXY8g89PSSQZd1IjEbYoM57dHenvVL2tDQ0MeShxrs6QizoeJEYjYM7N69u9pVMBs0JxKzITaY1kGhTFNT01BXxyx3/kGimZmVxYnEzMzK4kRiZmZlcSIxM7Oy+GJ7UqlfqkJlf63qW0PNLG9OJElbWxuPP7GRg8eenPu29LtsNLzHfvbrXLczapdHHTaz/OWWSCQdAzwCjE3buS8iPinpZOAeYCKwGXh3RDyfylwPzAUOAPMj4oEUnwYsBsYBy4FrIyIkjQXuAKYBO4ArImLzYOt88NiT2TPlbYMtPuwcs/H+alfBzI4CeV4j2QtcEBGvAaYCF0k6j2w43FURMRlYlZ4jaQowBzgbuAi4SdLotK6bgXlk47hPTvMhSzrPR8QkYCFwY477Y2ZmJeSWSCLzUnpakx4BXAI0p3gzcGmavgRYEhF7I+IZsvHZz5U0ATg+IlZHRJC1QIrLFNZ1HzBDhaHmzMysInK9a0vSaEnrgO3AyohYA5waEVsB0t9C95n1wLNFxdtTrD5N94x3KxMR+4EXgUOGl5M0T1KrpNaOjo6h2j0zMyPnRBIRByJiKtBA1ro4p5fFS7Ukopd4b2V61uOWiJgeEdPr6ur6qraZmQ1ARX5HEhEvAA+TXdvYlk5Xkf4WOsFvB04vKtYAbEnxhhLxbmUkjQFOAHyrkplZBeWWSCTVSToxTY8D3gI8DSwDCgNTNwLfStPLgDmSxko6g+yi+tp0+munpPPS9Y8re5QprOsy4MF0HcXMzCokzxbJBOAhSeuBH5FdI7kf+DQwU9ImYGZ6TkRsAJYCG4HvAldHxIG0rquAL5FdgP8Z0JLitwHjJbUB15HuADOzkauzs5NrrrmGHTvyHxXQhkZuvyOJiPXAa0vEdwAzDlNmAbCgRLwVOOT6SkTsAS4vu7JmNmw0Nzezfv16mpubue6666pdHesH97VlZsNGZ2cnLS0tRAQtLS1ulYwQTiRmNmw0NzdTuMx58OBBmpub+yhhw4ETiZkNGytXrmTfvn0A7Nu3jxUrVlS5RtYfTiRmNmzMnDmTmpoaAGpqapg1a1aVa2T94URiZsNGY2MjhV6ORo0aRWNjYx8lbDhwIjGzYaO2tpbZs2cjidmzZzN+/CE9Htkw5PFIzGxYaWxsZPPmzW6NjCD9TiSSXgFMjojvpV+qj4mInflVzcyORrW1tSxatKja1bAB6NepLUkfJOum/Ysp1AB8M69KmZnZyNHfayRXA68HfgMQEZvo6v7dzMyOYv1NJHsj4neFJ6mnXXeOaGZm/U4k35f0cWCcpJnAvcC386uWmZmNFP1NJB8DOoAngA8By4FP5FUpMzMbOfp719Y44PaIuBWyIXRTbFdeFTMzs5Ghvy2SVWSJo2Ac8L2hr46ZmY00/U0kx0TES4UnafrY3gpIOl3SQ5KekrRB0rUpfoOkX0lalx4XF5W5XlKbpJ9KurAoPk3SE2leUxopkTSa4j0pvkbSxP7vupmZDYX+JpLfSvqzwhNJ04DdfZTZD/x9RLwKOA+4WtKUNG9hRExNj+VpnVOAOcDZZGO735ROoQHcDMwjG353cpoPMBd4PiImAQuBG/u5P2ZmNkT6e43kb4F7JW1JzycAV/RWII21vjVN75T0FFDfS5FLgCURsRd4Jg2fe66kzcDxEbEaQNIdwKVkw+1eAtyQyt8HfF6SPG67mVnl9KtFEhE/As4iGzv9b4BXRcRj/d1IOuX0WmBNCn1Y0npJt0s6KcXqgWeLirWnWH2a7hnvViYi9gMvAof08iZpnqRWSa0dHR39rbaZmfVDr4lE0gXp718BbwdeSXZq6e0p1idJxwFfA/42In5DdprqTGAqWYvlM4VFSxSPXuK9lekeiLglIqZHxPS6urr+VNvMzPqpr1Nbfwk8SJZEegrg670VllRDlkS+EhFfB4iIbUXzbwXuT0/bgdOLijcAW1K8oUS8uEx7+rX9CcBzfeyTmZkNoV4TSUR8UtIooCUilg5kxenOqtuApyLis0XxCen6CcA7gSfT9DLgq5I+C5xG1vJZGxEHJO2UdB7ZqbErgUVFZRqB1cBlwIO+PmJmVll9XmyPiIOSPgwMKJGQdfL4fuAJSetS7OPAeyRNJWvRbCb7pTwRsUHSUmAj2R1fV0fEgVTuKmAx2e9XWtIDskR1Z7ow/xzZXV9mZlZB/b1ra6WkfwDuAX5bCEbEYU8jRcQPKH0NY3kvZRYAC0rEW4FzSsT3AJf3WnMzM8tVfxPJX5O1IP6mR/yPh7Y6ZmY20vQ3kUwhSyJvIEsojwJfyKtSZmY2cvQ3kTSTDWrVlJ6/J8XenUelzMxs5OhvIvmTiHhN0fOHJP0kjwqZmdnI0t++th5Pt98CIOkvgP/Mp0pmZjaS9DeR/AXwX5I2p76vVgN/mXrkXZ9b7eyI19nZyTXXXMOOHTuqXRUzG6T+ntq6qO9FzAauubmZ9evX09zczHXXXVft6pjZIPS308Zf9PbIu5J2ZOrs7KSlpYWIoKWlxa0SsxGqv6e2zIZcc3MzhR5tDh48SHNzc5VrZGaD4URiVbNy5Ur27dsHwL59+1ixYkWVa2Rmg+FEYlUzc+ZMampqAKipqWHWrFlVrpGZDYYTiVVNY2MjWSfRMGrUKBobG6tcIzMbDCcSq5ra2lpmz56NJGbPns348YcMbmlmI0B/b/81y0VjYyObN292a8RsBHMisaqqra1l0aJFfS9oZsOWT22ZmVlZckskkk6X9JCkpyRtkHRtip8saaWkTenvSUVlrpfUJumnki4sik9L3bG0SWpKw/giaayke1J8jaSJee2PmZmVlmeLZD/w9xHxKuA84GpJU4CPAasiYjKwKj0nzZsDnE3WJctNkkandd0MzCMbx30yXV22zAWej4hJwELgxhz3x8zMSsgtkUTE1oj4cZreCTwF1AOXkI1lQvp7aZq+BFgSEXsj4hmgDThX0gTg+IhYHdnPoO/oUaawrvuAGYXWipmZVUZFLranU06vBdYAp0bEVsiSjaRT0mL1wA+LirWn2L403TNeKPNsWtd+SS8C44HOHtufR9ai4eUvf/lQ7ZYVaWpqoq2tbcDl2tuzf21DQ8OAyk2aNIn58+cPeHtmQ6G9vZ0Xd+3koaeXVLsqQ+aFXduJ9t2DKpv7xXZJxwFfA/42In7T26IlYtFLvLcy3QMRt0TE9IiYXldX11eVrYJ2797N7t2De/Ga2fCQa4tEUg1ZEvlKRHw9hbdJmpBaIxOA7SneDpxeVLwB2JLiDSXixWXaJY0BTgCey2VnrFeDbR0UyjU1NfWxpNnw0dDQgPbu4M1nzal2VYbMQ08vob5hcD8KzvOuLQG3AU9FxGeLZi0DCr8+awS+VRSfk+7EOoPsovradBpsp6Tz0jqv7FGmsK7LgAej0J2smZlVRJ4tktcD7weekLQuxT4OfBpYKmku8EvgcoCI2CBpKbCR7I6vqyPiQCp3FbAYGAe0pAdkiepOSW1kLZEj5+uB2RFgMNfOBnvdDHztrFpySyQR8QNKX8MAmHGYMguABSXircA5JeJ7SInIzI4MvmY28riLFDPLzWBaB75uNvK4ixQzMyuLE4mZmZXFp7bMejHYH1oO1KZNm4DB30Y9UL4obUPJicSsF21tbTy+4XE4MecNHcz+PP6rx3PeEPBC/puwo4sTiVlfToSD5x+sdi2GzKiHfUbbhpZfUWZmVha3SJL29nZG7XqRYzbeX+2qDJlRu3bQ3r6/2tUwsyOcWyRmZlYWt0iShoYGtu0dw54pb6t2VYbMMRvvp6HhZdWuhpkd4dwiMTOzsjiRmJlZWZxIzMysLE4kZmZWFl9sN7N+cXcxdji5JRJJtwNvA7ZHxDkpdgPwQaAjLfbxiFie5l0PzAUOAPMj4oEUn0bXoFbLgWsjIiSNBe4ApgE7gCsiYnNe+2N2tGtra+PpdevI+z7AwmmSF9at63W5ofDr3LdwdMizRbIY+DzZh32xhRHx78UBSVPIRjc8GzgN+J6kV6YREm8G5gE/JEskF5GNkDgXeD4iJkmaA9wIXJHf7pjZy4C5hx2vbuS5DY/MPRRyu0YSEY+QDX/bH5cASyJib0Q8A7QB50qaABwfEavTWOx3AJcWlWlO0/cBM9KY7mZmVkHVuNj+YUnrJd0u6aQUqweeLVqmPcXq03TPeLcyEbEfeBEYX2qDkuZJapXU2tHRUWoRMzMbpEonkpuBM4GpwFbgMyleqiURvcR7K3NoMOKWiJgeEdPr6uoGVmMzM+tVRRNJRGyLiAMRcRC4FTg3zWoHTi9atAHYkuINJeLdykgaA5xA/0+lmZnZEKno7b+SJkTE1vT0ncCTaXoZ8FVJnyW72D4ZWBsRByTtlHQesAa4ElhUVKYRWA1cBjyYrqMM2qhdz1Wk91/t+Q0AcczxuW5n1K7nIPd7bMzsaJfn7b93A+cDtZLagU8C50uaSnYKajPwIYCI2CBpKbAR2A9cne7YAriKrtt/W9ID4DbgTkltZC2ROeXUd9KkSeUUH5BNm3YCMPnMvD/kX1bR/TKzo1NuiSQi3lMifFsvyy8AFpSItwLnlIjvAS4vp47FKvmDpMK2mpqaKrZNM7O8uIsUMzMrixOJmZmVxYnEzMzK4kRiZmZlcSIxM7OyOJGYmVlZnEjMzKwsTiRmZlYWj5Boh6jUSHhQ2dHwPBKeWT6cSOwQbW1t/PeTP+blxx3oe+Ey/cG+rFG8Z/OPct3OL18anev6zY5mTiRlGOw398F+C6/kN+qXH3eAT0x/qSLbqoR/bj2u2lUY8drb29nJkTWq4Fbgpfb2Ppez3jmRVMG4ceOqXQUzsyHjRFIGn2+3o0lDQwMvdHYecWO2n9jQ0PeC1isnErNetLe3w4sw6uEj6AbHF6A9fDrHhs4R9O4wM7NqcIvErBcNDQ10qIOD5x+sdlWGzKiHR9FQ79M5NnRya5FIul3SdklPFsVOlrRS0qb096SieddLapP0U0kXFsWnSXoizWuSpBQfK+meFF8jaWJe+2JmZoeX56mtxcBFPWIfA1ZFxGRgVXqOpClkQ+WencrcJKlw4//NwDyycdwnF61zLvB8REwCFgI35rYnZmZ2WLklkoh4hGws9WKXAM1puhm4tCi+JCL2RsQzQBtwrqQJwPERsToiArijR5nCuu4DZhRaK2ZmVjmVvth+akRsBUh/T0nxeuDZouXaU6w+TfeMdysTEfuBF4HxpTYqaZ6kVkmtHR0dQ7QrZmYGw+eurVItiegl3luZQ4MRt0TE9IiYXldXN8gqmplZKZW+a2ubpAkRsTWdttqe4u3A6UXLNQBbUryhRLy4TLukMcAJHHoqzcwsFy/s2s5DTy/JdRsv7XkegOOOOamPJcv3wq7t1Jc+qdOnSieSZUAj8On091tF8a9K+ixwGtlF9bURcUDSTknnAWuAK4FFPda1GrgMeDBdRzEzy9WkSZMqsp1Nm7LvxvVnDu4DfiDqGT/o/cotkUi6GzgfqJXUDnySLIEslTQX+CVwOUBEbJC0FNgI7AeujohC17NXkd0BNg5oSQ+A24A7JbWRtUTm5LUvZmbFKtU9UmE7TU1NFdneYOWWSCLiPYeZNeMwyy8AFpSItwLnlIjvISUiG1rt7e38dufoI6rH3F/sHM0fupdXs1wMl4vtZmY2QrmLFDtEQ0MDe/ZvPeLGIznGvbya5cKJxMysAgYzEF45Q1FXciA8JxKzvrxQgW7kC42/SlyWeoGun/UO0K/Jf4TEHelv/vcpZftzYgW2M1gjZRA8JxKzXlTuNs/sm+fk+sn5b6x+cPtVqWPRkY7FiZPzPxYnUrn9OpIHwnMiMeuFb/Ps4mNhh+O7tszMrCxOJGZmVhaf2jKz3BzJdypZFycSMxtWRsqdStbFicRK+uVLlekiZduu7OzqqcfmOyb6L18azStz3YKV4tbB0cGJxA5RqdshAX6XTmMcMzHfWz1fSWX3y+xo4kRih6jkt0jf6mk28vmuLTMzK4sTiZmZlaUqp7YkbQZ2AgeA/RExXdLJwD3ARGAz8O6IeD4tfz0wNy0/PyIeSPFpdA16tRy41qMkWrX5llc72lSzRfLmiJgaEdPT848BqyJiMrAqPUfSFLLRD88GLgJukjQ6lbkZmEc2NO/kNN9sxBk3bpxve7URazhdbL+EbGhegGbgYeD/pPiSiNgLPJOG1j03tWqOj4jVAJLuAC6layheq6DBfAuHwX8TH87fwodrvczyUq0WSQArJD0maV6KnRoRWwHS31NSvB54tqhse4rVp+me8UNImiepVVJrR0fHEO6GlcvfxM1Gvmq1SF4fEVsknQKslPR0L8uqRCx6iR8ajLgFuAVg+vTpvoaSA38LNzt6VaVFEhFb0t/twDeAc4FtkiYApL/b0+LtwOlFxRuALSneUCJuZmYVVPFEIukPJf1RYRqYBTwJLAMa02KNwLfS9DJgjqSxks4gu6i+Np3+2inpPEkCriwqY2ZmFVKNU1unAt/IPvsZA3w1Ir4r6UfAUklzgV8ClwNExAZJS4GNwH7g6og4kNZ1FV23/7bgC+1mZhWno+1nF9OnT4/W1tZqV8PMbESR9FjRzzW68S/bzcysLE4kZmZWFicSMzMrixOJmZmV5ai72C6pA/hFtesB1AKd1a7EMOFjkfFx6OJj0WW4HItXRERdqRlHXSIZLiS1Hu4OiKONj0XGx6GLj0WXkXAsfGrLzMzK4kRiZmZlcSKpnluqXYFhxMci4+PQxceiy7A/Fr5GYmZmZXGLxMzMyuJEYmZmZXEiGUYknSjpb4qenybpvjT9AUmfP0y5l3Kqz0RJTw5g+UslTeljmfMl3X+YeZsl1Q60niXWk8vxyNtAj7cNb0P9/yy8P3p+TgwHTiTDhKTRwInA718gEbElIi6rXq0G7FKg10RiZn2T1NsQH90+J4YDJ5Iikq6UtF7STyTdKekVklal2CpJL0/LLZbUJOm/JP1c0mUpfo+ki4vWt1jSuySNlvRvkn6U1vWhNP98SQ9J+irwBPBp4ExJ69LyPb/RnC7pu5J+KumTh9mHjxRt51NDcFhGS7pV0gZJKySNk/TBtI2fSPqapGMl/Q/gHcC/pfqfKWmSpO+l5X4s6cy0zuMk3SfpaUlfSQOTFXxE0tr0mJT26e2S1kh6PK3v1BQ/TtKXJT2R9vddPY5FraTVkt46BMeh39Lgbd9J+/2kpCskTZP0fUmPSXpAXaOBTkvLrQauLlrHREmPpuP243R8C6+Zh3s5fsOCpI9Kmp+mF0p6ME3PkHSXpJsltabX1aeKyl2c9usH6T12f4qfLOmb6f/8Q0mvTvEbJN2ejsnPC9scRvr1/oHff158VtJDwI2Sxqcyj0v6Il3Di/f8nFD6+2R6L1yR1ne+pEckfUPSRklfkJTPZ35E+JHduXY28FOgNj0/Gfg20Jie/zXwzTS9GLiXLBFPAdpS/J1Ac5r+A+BZss+vmtoAAAh5SURBVEG35gGfSPGxQCtwBnA+8FvgjDRvIvBkUZ1+/xz4ALAVGJ/W+SQwPc17Kf2dRXaroFLd7gfeVMYxmUg2mNjU9Hwp8D5gfNEy/wxcU3RcLiuatwZ4Z5o+Bjg27fOLZEMjjwJWA29Iy2wG/jFNXwncn6ZPousOw/8FfCZN3wh8rmh7JxWOB9kAamuAmVV4Lb0LuLXo+QnAfwF16fkVwO1pej3wl2n634r+38cCx6TpyUBrmj7s8RtOD+A84N40/SiwFqgBPgl8CDg5zRsNPAy8Or1Gni16P9xd9BpYBHwyTV8ArEvTN6RjO5asK5EdQE2197+M98/9wOj0vAn4pzT9ViDSPk6k++fEu4CV6VieSjYw4IT0WtkD/HGat5Ki9+dQPtwi6XIBcF9EdAJExHPA64Cvpvl3Am8oWv6bEXEwIjaS/fMgG6HxAkljgdnAIxGxm+wD/kpJ68g+3MaTfThANmzwM/2s48qI2JHW+fUe9SFtZxbwOPBj4Kyi7QzWMxGxLk0/RvYiPid9W34CeC9ZEu5G2XDK9RHxDYCI2BMRu9LstRHRHhEHgXVpnQV3F/19XZpuAB5I2/tI0fbeAvxHoWBEPJ8ma4BVwEcjYuWg9ro8TwBvkXSjpDcCpwPnACvTa+ATQIOkE4ATI+L7qdydReuoAW5N+3wv3U8Z9nb8hovHgGnpdbCXLOFNB95IlljeLenHZK/Vs8n27yzg50Xvh7uL1vcG0vGJiAeB8en4AXwnIvam9+52ut6Pw8FA3z/3RtcIsG8C7gKIiO8Az1PaG4C7I+JARGwDvg/8eZq3NiJ+ntZ5N4d+ZgyJagy1O1yJLOP3pnj+3h5liYg9kh4GLiT71nl30fxrIuKBbhuUzidrkfRXz/r1fC7gXyLiiwNYZ1+K9/MAWWtoMXBpRPxE0gfIvvn01Nvplp7rLH4dRonpRcBnI2JZOmY3FG2j1P9sP9mb9kKyN1VFRcR/S5oGXAz8C9k3wQ0R8bri5SSdyOFfc38HbANeQ9by2FM0r7fjNyxExD5Jm4H/SdZiWA+8GTgT2A38A/DnEfG8pMVkrZHeXjOl5hWO3XA+HgN9//T8POjPD/16O259fWYMCbdIuqwi+5Y0HrJzsmRvgDlp/nuBH/RjPUvI3jxvBAqJ4wHgKkk1ad2vlPSHJcruBP6ol3XPTOeKx5Fd2P7PHvMfAP5a0nFpO/WSTulHnQfqj4CtaX/eWxT/ff0j4jdAu6RLU13GFs4F9+GKor+r0/QJwK/SdGPRsiuADxeeSDopTQbZqcizJH2svzs1VCSdBuyKiLuAfwf+AqiT9Lo0v0bS2RHxAvCipMK3xOJjeQKwNbU63k92amKkeYQsYTxC1gr532QtqOPJPjBfVHa9a3Za/mngjyVNTM+v6LGu98Lvv4B1ptfYSHS4909Pxfs8m+wULxz6OfEIcIWya7F1ZC2ZtWneuZLOSNdGrqB/n2EDNpwyd1VFxAZJC4DvSzpA1uSeD9wu6SNAB1mC6MsK4A5gWUT8LsW+RNak/XG6MNpBlgh61mGHpP9UdoG9haLTNskPyJr3k4CvRkRrj/IrJL0KWJ2uv75Edk52ez/qPRD/l+wU3S/ITuMUXtRLyE7HzAcuI/sA/KKk/wfsAy7vx7rHSlpD9iXnPSl2A3CvpF8BPyS7vgTZ+eX/SMfrAPApslN+RMQBSXOAb0v6TUTcVMb+DtSfkt10cJBsv68iayU1pdMxY4DPARvIXlO3S9pF1xcPgJuAr0m6HHiIgbVch4tHgX8EVkfEbyXtAR5N38QfJ9v/n5O+EEXEbmW3tX5XUiddH4aQvQa+LGk9sIvuXyhGmsO9f3r6FHB3OgX4fbJrH6U+Jz5Kdhr4J2Rfoj4aEb+WdBbZl7FPk70mHwG+kccOuYsUMxs2JB0XES+lL1z/AWyKiIXVrtdIlFpu/xARb8t7Wz61ZWbDyQfTDQkbyE7vDeX1PsuJWyRmZlYWt0jMzKwsTiRmZlYWJxIzMyuLE4lZP6iMnlzVS4/HA1zPB9JvVPpabkh6UTbrLycSs5HjA0CficSs0pxIzPpvjKRmZT3Q3qes1+MZqXfWJ5T1QjsWQNJFSr3YAn+VYqMkbUq/Pi48b+vZeki/UF6srt5c/05ZD9PTga8o6/X1rZK+UVRmpqSv96ywpPcp60l5naQvKhuuwGxIOZGY9d+fALdExKuB3wDXkfWbdEVE/CnZL9avknQMcCvwdrKucl4GkLo7uYuubjHeAvyk0FFokalkHV6ek9b75Yi4j6zX6PdGxFRgOfCqQlIi+4X8l4tXkno5uAJ4fSpzgN675DAbFCcSs/57NiIK/ZvdBcwg6931v1Osmayfo7NSfFNkP9S6q2gdt5N1kQ9Zf2DdPvyTn5P1ObVI0kVkSaubtN47gfelzh9fR9ZdRrEZwDTgR+lHfjPIuhQ3G1Lua8us/wby692Sy0bEs5K2SbqArDPH96bTTY+lRZZFxD9Jeg1Z78VXA+8mSzo9fZlszJw9ZN2P7+8xX2Tj41w/gHqbDZhbJGb99/JCD75kHUp+D5ioNJIjWSeV3yfrxfYMdY0I+Z7uq+FLZK2UpWkMiQMRMTU9/ildMxkVEV8j6+Dvz1K5br2+RsQWYAvZ+CaLS9R3FXBZoQfo1HP0Kwa782aH40Ri1n9PAY2pB9qTgYVk1ybuVTZI0UHgCxGxh2xUzO+ki+2/6LGeZcBxlD6tBVAPPJxORy0GCi2KxcAX0oXzcSn2FbJTbht7riTFPgGsSHVeSTZyntmQcl9bZhUmaTqwMCLeOATr+jzweETcVn7NzAbH10jMKigNtHUVQ3D3lKTHyMYp+fty12VWDrdIzMysLL5GYmZmZXEiMTOzsjiRmJlZWZxIzMysLE4kZmZWlv8Pi7JOxTzT6oUAAAAASUVORK5CYII=\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>"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc198b5a748>"
]
},
"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": [
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's examine \"drive-wheels\" and \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fc198ad6d30>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"discriptive_statistics\">3. Descriptive Statistical Analysis</h2>"
]
},
{
"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",
"<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:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 20,
"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:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"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": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe(include=['object'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Value Counts</h3>"
]
},
{
"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>"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"fwd 118\n",
"rwd 75\n",
"4wd 8\n",
"Name: drive-wheels, dtype: int64"
]
},
"execution_count": 22,
"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 :"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 23,
"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'."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 24,
"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':"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 25,
"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'."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 26,
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"basic_grouping\">4. Basics of Grouping</h2>"
]
},
{
"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>"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array(['rwd', 'fwd', '4wd'], dtype=object)"
]
},
"execution_count": 27,
"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>"
]
},
{
"cell_type": "code",
"execution_count": 28,
"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."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 29,
"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>"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 30,
"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>"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 31,
"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>"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"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": 32,
"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>"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df_bodystylegroup = df[['body-style','price']]\n",
"df_bodystyletest = df_bodystylegroup.groupby(['body-style'], as_index = False).mean()\n",
"df_bodystyletest"
]
},
{
"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",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you did not import \"pyplot\" let's do it again. "
]
},
{
"cell_type": "code",
"execution_count": 34,
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's use a heat map to visualize the relationship between Body Style vs Price."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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>"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"correlation_causation\">5. Correlation and Causation</h2>"
]
},
{
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p3>Pearson Correlation</p>\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>"
]
},
{
"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>"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 37,
"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. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>P-value</b>: \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",
"<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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can obtain this information using \"stats\" module in the \"scipy\" library."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"from scipy import stats"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Wheel-base vs Price</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the Pearson Correlation Coefficient and P-value of 'wheel-base' and 'price'. "
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.5846418222655081 with a P-value of P = 8.076488270732955e-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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Horsepower vs Price</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'horsepower' and 'price'."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8095745670036559 with a P-value of P = 6.36905742825998e-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>"
]
},
{
"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'."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.690628380448364 with a P-value of P = 8.016477466159053e-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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Width vs Price</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'width' and 'price':"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.7512653440522674 with a P-value of P = 9.200335510481426e-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)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Curb-weight vs Price"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'curb-weight' and 'price':"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8344145257702846 with a P-value of P = 2.1895772388936997e-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>"
]
},
{
"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':"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8723351674455185 with a P-value of P = 9.265491622197996e-64\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['engine-size'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"\n",
"<p>Since the p-value is $<$ 0.001, the correlation between engine-size and price is statistically significant, and the linear relationship is very strong (~0.872).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Bore vs Price</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'bore' and 'price':"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.5431553832626602 with a P-value of P = 8.049189483935364e-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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can relate the process for each 'City-mpg' and 'Highway-mpg':"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>City-mpg vs Price</h3>"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is -0.6865710067844677 with a P-value of P = 2.3211320655676368e-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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Highway-mpg vs Price</h3>"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is -0.7046922650589529 with a P-value of P = 1.7495471144476807e-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",
"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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"anova\">6. ANOVA</h2>"
]
},
{
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Drive Wheels</h3>"
]
},
{
"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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's see if different types 'drive-wheels' impact 'price', we group the data."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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": 48,
"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": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>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": 49,
"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\". "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"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>."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Separately: fwd and rwd"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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 "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4wd and rwd"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"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>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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>"
]
},
{
"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",
"<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>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment