Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save MisterPotz/25f3374746765e45a743d59b3facf61e to your computer and use it in GitHub Desktop.
Save MisterPotz/25f3374746765e45a743d59b3facf61e 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/DA0101EN_edx_link_Notebook_link_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": 2,
"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/edx_DA0101EN_objectstorage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 3,
"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": 3,
"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": 4,
"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": 5,
"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": 6,
"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": 7,
"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": 7,
"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": 8,
"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": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[['bore','stroke' ,'compression-ratio','horsepower']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"df[['bore', 'stroke', 'compression-ratio', 'horsepower']].corr() \n",
"\n",
"-->"
]
},
{
"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": 9,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
]
},
{
"data": {
"text/plain": [
"(0, 56176.62569566187)"
]
},
"execution_count": 9,
"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": 10,
"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": 10,
"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": 11,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3da010bdd8>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"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": 12,
"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": 12,
"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": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3da008ee10>"
]
},
"execution_count": 13,
"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": 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>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": 14,
"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": 15,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" stroke price\n",
"stroke 1.00000 0.08231\n",
"price 0.08231 1.00000\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"print(df[[\"stroke\", 'price']].corr())\n"
]
},
{
"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 0x7f3da0078908>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEGCAYAAABPdROvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO29eZxc1XXv+1019KTu1thCQi0sZITFEDPJBF/7KrLxe8FDwL5XtsXnxfDexZEeFwd8MxnyEkLw9edZsWNi7GuCPDwDiYOJkhsrBOzYyAr2DQIEBmOBDLIkUINQa2ip566qc9b74+xTXVVd1V3dXWPX+n4+paraZ6h9Th+d31l7rb2WqCqGYRiGMVMi1e6AYRiGUd+YkBiGYRizwoTEMAzDmBUmJIZhGMasMCExDMMwZkWs2h2oNEuWLNFVq1ZVuxuGYRh1xTPPPHNcVbvyLWs4IVm1ahV79uypdjcMwzDqChF5tdAyG9oyDMMwZoUJiWEYhjErTEgMwzCMWWFCYhiGYcwKExLDMAxjVjRc1JZhGPnZta+Xex8/wOG+YVYubGPL+tVsWLu02t0y6gCzSAzDYNe+Xm7fsZfegVEWtMbpHRjl9h172bWvt9pdM+qAsguJiERF5Gci8rD7foeIvC4iz7nXBzLWvU1E9ovIL0XkNzPaLxORF9yyu0VEXHuziHzXtT8pIqvKfTyGMRe59/EDxKNCW1MMkeA9HhXuffxAtbtm1AGVsEhuAV7KabtLVS92r0cAROR8YBNwAXAV8DURibr17wE2A2vc6yrXfgPQp6rnAHcBW8t6JIYxRzncN0xrPJrV1hqP0tM3XKUeGfVEWYVERLqBDwLfKGL1a4AHVXVMVQ8C+4HLRWQ50KmqT2hQhet+4MMZ29znPm8HrgytFcMwimflwjZGkl5W20jSo3thW5V6ZNQT5bZI/gr4I8DPaf+UiPxcRL4lIgtd2wrgcMY6Pa5thfuc2561jaqmgNPA4txOiMhmEdkjInuOHTs2y0MyjLnHlvWrSXrKcCKFavCe9JQt61dXu2tGHVA2IRGRDwG9qvpMzqJ7gLcCFwNHgL8MN8mzG52kfbJtshtUt6nqOlVd19WVN+eYYTQ0G9Yu5c6rL2BpRwunR5Is7WjhzqsvsKgtoyjKGf77LuBq50xvATpF5G9U9bfDFUTk68DD7msPsDJj+27gDdfenac9c5seEYkB84GTZTgWw5jzbFi71ITDmBFls0hU9TZV7VbVVQRO9J2q+tvO5xHyEeAX7vMOYJOLxDqbwKn+lKoeAQZE5Arn/7gO+F7GNte7zxvdb0ywSAzDMIzyUY0JiX8hIhcTDEEdArYAqOpeEXkIeBFIATepauj9uxH4NtAKPOpeAN8EHhCR/QSWyKYKHYNhGIbhkEZ7gF+3bp1aPRLDMIzpISLPqOq6fMtsZrthGIYxK0xIDMMwjFlhQmIYhmHMChMSwzAMY1aYkBiGYRizwoTEMAzDmBUmJIZhGMasMCExDMMwZoUJiWEYhjErrGa7YRgFsTruRjGYRWIYRl6sjrtRLGaRGIYBTLQ++obG0nXcAdqaYgwnUtz7+AGzSowszCIxDCOv9fHKsUFSXnZxU6vjbuTDhMQwDO59/EDa+hAJ3uORCEcHxrLWszruRj5MSAzD4HDfMK3xaFbbGZ3NVsfdKAoTEsMwWLmwjZGkl9UWi0Y4d2m71XE3pqTsznYRiQJ7gNdV9UMisgj4LrCKoELix1S1z617G3AD4AE3q+oPXPtljFdIfAS4RVVVRJqB+4HLgBPAx1X1ULmPyTDmGlvWr+b2HXsZTqRojUcZSXokPeVPP7jWhMOYkkpYJLcAL2V8vxV4TFXXAI+574jI+QSlci8ArgK+5kQI4B5gM0Ed9zVuOQSi06eq5wB3AVvLeyiGMTfZsHYpd159gVkfxowoq0UiIt3AB4HPAb/nmq8BNrjP9wG7gM+49gdVdQw46OqwXy4ih4BOVX3C7fN+4MMEdduvAe5w+9oOfFVERButfrBhlIANa5eacBgzotwWyV8BfwRkxhCeoapHANx7eOWuAA5nrNfj2la4z7ntWduoago4DSzO7YSIbBaRPSKy59ixY7M9JsMwDCODsgmJiHwI6FXVZ4rdJE+bTtI+2TbZDarbVHWdqq7r6uoqsjuGYRhGMZRzaOtdwNUi8gGgBegUkb8BjorIclU9IiLLgTDfQg+wMmP7buAN196dpz1zmx4RiQHzgZPlOiDDMAxjImWzSFT1NlXtVtVVBE70nar628AO4Hq32vXA99znHcAmEWkWkbMJnOpPueGvARG5QkQEuC5nm3BfG91vmH/EMAyjglQj19bngYdE5AbgNeCjAKq6V0QeAl4EUsBNqhoGtt/IePjvo+4F8E3gAeeYP0kgWIZhGEYFkUZ7gF+3bp3u2bOn2t0wDMOoK0TkGVVdl2+ZzWw3DMMwZoUJiWEYhjErTEgMwzCMWWFCYhiGYcwKExLDMAxjVlipXcNgYpnZLetXW94pwygSExKj4QnLzMajki4ze/uOvdwJDS8mJrBGMdjQltHw5C0zGxXuffxAtbtWVfLVcb99x1527eudemOjoTAhMRqefGVmW+NRevqGq9Sj2sAE1igWExKj4clXZnYk6dG9sK1KPaoNTGCNYjEhMeqOXft6uXbbbt69dSfXbts966GWLetXk/SU4UQK1eA96Slb1q8uUY/rExNYo1hMSIy6ohzj9lZmNj8msEaxWNSWUVdkjtsDtDXFGE6kuPfxA7O68VuZ2YlsWLuUOwnOeU/fMN0WtWUUwITEqCsO9w2zoDWe1Wbj9uXDBLb+qUQItw1tGXWFjdsbRvFUKoS7nDXbW0TkKRF5XkT2isifu/Y7ROR1EXnOvT6Qsc1tIrJfRH4pIr+Z0X6ZiLzglt3tKiXiqil+17U/KSKrynU8Rm0wl8btSx00YBi5VCqEu5wWyRjwXlW9CLgYuEpErnDL7lLVi93rEQAROZ+gwuEFwFXA10QkjD28B9hMUH53jVsOcAPQp6rnAHcBW8t4PEYNMFcc4zbZz6gElQrhLpuPxNVOH3Rf4+41WTnGa4AHVXUMOOjK514uIoeATlV9AkBE7gc+TFBu9xrgDrf9duCrIiJWt31uMxfG7csVNGAYmaxc2EbvwGj6OoPyDAWX1UciIlEReQ7oBX6oqk+6RZ8SkZ+LyLdEZKFrWwEczti8x7WtcJ9z27O2UdUUcBpYnKcfm0Vkj4jsOXbsWImOzjBmjk32MypBpYaCyyokquqp6sVAN4F1cSHBMNVbCYa7jgB/6VaXfLuYpH2ybXL7sU1V16nquq6urmkehWGUnpUL2zgxNMaBY4Pse7OfA8cGOTE0ZkEDRkmp1FBwRcJ/VfWUiOwCrlLVL4btIvJ14GH3tQdYmbFZN/CGa+/O0565TY+IxID5wMlyHIMxt6l0ltt3rl7EU4dOEhGICCQ8n96BBNe+Y1HZftNoTCoxFFzOqK0uEVngPrcC7wP2icjyjNU+AvzCfd4BbHKRWGcTONWfUtUjwICIXOGita4DvpexzfXu80Zgp/lHjOlSDcf3EwdO0tXeRFM0gq/QFI3Q1d7EEwfsOcioP8ppkSwH7nORVxHgIVV9WEQeEJGLCYagDgFbAFR1r4g8BLwIpICbVDWcMHAj8G2glcDJ/qhr/ybwgHPMnySI+jKMaVENx/fhvmGWtDfT1dGSblNV85EYdUk5o7Z+DlySp/0Tk2zzOeBzedr3ABfmaR8FPjq7nhqNTjVmy1cqmsYwKoHNbDcanmrMlp9LEysNw4TEaHiqcVOfKxMrDQMsaaNhVC3L7VyYWGkYYBaJYWRhIX+GMX1MSIyGx/JeGcbssKEto+GxvFfGXMbqkRhGBbC8V8Zcpe7rkRhGvWDFsoy5ylyoR2IYdYHN6agvrCBY8VTK2jYhMRoem9NRP1hgxPSolLVtznbDwOZ01AsWGDE9tqxfze079jKcSNEajzKS9OqvHolhGEYpscCI6TGn6pEYhlGfVLpOy1RYssvpU9f1SAzDqG9q0R9hgRG1iQmJYRh5qVTo6HSwwIjaxIa2DMPISzXqtBSDBUbUHuUstdsiIk+JyPMisldE/ty1LxKRH4rIK+59YcY2t4nIfhH5pYj8Zkb7ZSLyglt2tyu5iyvL+13X/qSIrCrX8RhGo2ETNY1iKefQ1hjwXlW9CLgYuEpErgBuBR5T1TXAY+47InI+QancC4CrgK+5Mr0A9wCbCeq4r3HLAW4A+lT1HOAuYGsZj8cwGgrzRxjFUjYh0YBB9zXuXgpcA9zn2u8DPuw+XwM8qKpjqnoQ2A9cLiLLgU5VfUJVFbg/Z5twX9uBK0NrxTCM2WH+CKNYyuojcRbFM8A5wP9Q1SdF5AxVPQKgqkdEJLwqVwC7MzbvcW1J9zm3PdzmsNtXSkROA4uB4zn92Exg0XDWWWeV7gANY45j/gijGMoataWqnqpeDHQTWBcXTrJ6PktCJ2mfbJvcfmxT1XWquq6rq2uqbhuGYRjToCLhv6p6CthF4Ns46oarcO9hUHoPsDJjs27gDdfenac9axsRiQHzgZNlOQjDMAwjL+WM2uoSkQXucyvwPmAfsAO43q12PfA993kHsMlFYp1N4FR/yg2DDYjIFc7/cV3ONuG+NgI7nR/FMAzDqBDl9JEsB+5zfpII8JCqPiwiTwAPicgNwGvARwFUda+IPAS8CKSAm1Q1jD28Efg20Ao86l4A3wQeEJH9BJbIpjIej2EYhpEHabQH+HXr1umePXuq3Q3DMGZIreX/ahRE5BlVXZdvmaVIMQyjbti1r5c/2P48Pzvcx9H+UX52uI8/2P681SOpMiYkhmHUDZ9/9CVODSdRH6IiqA+nhpN8/tGXqt21hsZybRmGUTccPDFMRCASCSL/RUB95eAJq0dSTcwiMQzDMGaFCYlhGHXD6iXz8BV8VRTFV8XXoN2oHiYkhmHUDZ+5ai0L2+IIkPJ8BFjYFuczV62tdtcaGhMSwzDqhg1rl/KFjRdxyVkLWT6/lUvOWsgXNl5k4b9Vpmhnu4i8BVijqj9yM9VjqjpQvq4ZhmFMxBJJ1h5FWSQi8jsEadrvdU3dwD+Vq1OGYRhG/VDs0NZNwLuAfgBVfQWwRwLDMAyjaCEZU9VE+MVl2m2s3CqGYRhGXooVkn8TkT8GWkXkfwP+Hvjn8nXLMAzDqBeKFZJbgWPAC8AW4BHgT8rVKcMwDKN+KDZqqxX4lqp+HdIldFsBy0tgGEZFsey/tUexFsljBMIR0gr8qPTdMQzDKMyufb3cvmMvvQOjLGiN0zswyu079lr23ypTrJC0qOpg+MV9bptsAxFZKSI/FpGXRGSviNzi2u8QkddF5Dn3+kDGNreJyH4R+aWI/GZG+2Ui8oJbdrerlIirpvhd1/6kiKwq/tANw6g37n38APGo0NYUQyR4j0eFex8/UO2uNTTFCsmQiFwafhGRy4CRKbZJAb+vqucBVwA3icj5btldqnqxez3i9nk+QYXDCwhqu3/NDaEB3ANsJii/u8YtB7gB6FPVc4C7gK1FHo9hGHXI4b5hWuPRrLbWeJSePhtlrybF+kg+Dfy9iLzhvi8HPj7ZBq7W+hH3eUBEXgJWTLLJNcCDqjoGHHTlcy8XkUNAp6o+ASAi9wMfJii3ew1wh9t+O/BVERGr227MVRrdP7ByYRu9A6O0NY3fukaSHt0LJx0gMcpMURaJqj4NrCWonf5fgfNU9Zlif8QNOV0CPOmaPiUiPxeRb4nIQte2AjicsVmPa1vhPue2Z22jqingNLA4z+9vFpE9IrLn2LFjxXbbMGoK8w/AlvWrSXrKcCKFavCe9JQt61dXu2sNzaRCIiLvde//Cfgt4FyCoaXfcm1TIiLtwD8An1bVfoJhqrcCFxNYLH8Zrppnc52kfbJtshtUt6nqOlVd19XVVUy3DaPmMP9AkGfrzqsvYGlHC6dHkiztaOHOqy9oKKusFplqaOs3gJ0EIpKLAv842cYiEicQkb9V1X8EUNWjGcu/DjzsvvYAKzM27wbecO3dedozt+lxs+3nAyenOCbDqEsO9w2zoDWe1daI/gFL2lh7TCokqvpnIhIBHlXVh6azYxdZ9U3gJVX9Ukb7cuc/AfgI8Av3eQfwHRH5EnAmgeXzlKp6IjIgIlcQDI1dB3wlY5vrgSeAjcBO848Yc5Vq+gca3TdjTM6UPhJV9YFPzWDf7wI+Abw3J9T3L1wo78+B9wD/zf3OXuAh4EXg+8BNquq5fd0IfAPYD/yKwNEOgVAtdo753yOYgW8Yc5Jq+QfMN2NMhRTzAC8if0oQ7vtdYChsV9W6G0Zat26d7tmzp9rdMIwZEVoGPX3DdFfIMrh22+4JltBwIsXSjhb+bvMVZf1to3YQkWdUdV2+ZcWG//4XAp/If81pt1AJw6gg1fAPmG/GmIpiJySeD/wP4HngOQIfxQXl6pRhGLXDyoVtjCS9rDabu2FkUqyQ3AecB9xNICLnuTbDMOY4NnfDmIpih7bepqoXZXz/sYg8X44OGYZRW1FSG9Yu5U6ouG/GqB+KtUh+5sJvARCRXwf+V3m6ZBiNTS1HSVlsvZGPYoXk14F/F5FDLvfVE8BvZITxGoZRImptBnstC5tRGxQ7tHXV1KsYhjFd8g1h1VqUVKawAbQ1xRhOpLj38QM2vGUARQqJqr5a7o4YRqMRPunHo5L1pN/RHGMk6dVMhttaEzaj9ih2aMswjBJTaAhLVWsqSsrCf42pMCExGo5d+3q5dttu3r11J9du2121sf5CRZqGEl5NZbi18F9jKor1kRjGnKDQcNKdUPEb9WRJGAvNYK9GWLCF/xpTYUJiNBS15Djesn41t+/Yy3AiRWs8ykjSm/RJf9e+Xv5w+/MMjKZI+T7HB8b4w+3P84WNF1VETEw4jELY0JbRUNRSze/pFmna+v199A0nUSAWjaBA33CSrd/fV9F+G0YuZpEYDUWt1fyezpP+geNDRAQiEhQGFQEV5cDxoSm2NIzyYhaJ0VCY49gwSo8JidFQ1HPN77MXt+Er+L6iqvi+4mvQbhjVpGxDWyKyErgfWAb4wDZV/bKILCIokLUKOAR8TFX73Da3ATcAHnCzqv7AtV8GfBtoBR4BblFVFZFm9xuXASeAj6vqoXIdkzE3qFfH8a3vP48/2P48g2MpPF+JRoQFzXFuff951e6a0eCU0yJJAb+vqucBVwA3icj5BOVwH1PVNcBj7jtu2SaCOidXAV8TkdAreg+wmaCO+xrGU7bcAPSp6jnAXcDWMh6PYVSVDWuX8sWNF3HJyoUs62zhkpUL+eIkEVu1Ml/GmPuUzSJR1SPAEfd5QEReAlYA1wAb3Gr3AbuAz7j2B1V1DDjo6rBf7pJEdqrqEwAicj/wYYK67dcAd7h9bQe+KiKixdQPNow6pFhrqpbmyxhzn4r4SERkFXAJ8CRwhhOZUGzCq3oFcDhjsx7XtsJ9zm3P2kZVU8BpYHGe398sIntEZM+xY8dKc1CGUcPUWgZhY25TdiERkXbgH4BPq2r/ZKvmadNJ2ifbJrtBdZuqrlPVdV1dXVN12TDqnlqaL2PMfco6j0RE4gQi8req+o+u+aiILFfVIyKyHAgHbnuAlRmbdwNvuPbuPO2Z2/SISAyYD5wsy8EYRgW5+0cv842fHmQo4TGvKcon3302N7/v3KK3L/V8mVqq2GhUBt9XxlI+iZRP0vcnXbdsFomICPBN4CVV/VLGoh3A9e7z9cD3Mto3iUiziJxN4FR/yg1/DYjIFW6f1+VsE+5rI7DT/CNGvXP3j17myzv3M5L0iEUCAfjyzv3c/aOXi95HKefLWGGruY+qMpr0OD2SpHdglMMnhzl0Yogjp0c4MTTGSMKbdPtyWiTvAj4BvCAiz7m2PwY+DzwkIjcArwEfBVDVvSLyEPAiQcTXTaoa9v5GxsN/H3UvCITqAeeYP0kQ9WUYNcd0nui/8dODRARikeA5LyKQ8n2+8dODRVslpUy0WEv5yYzZo6okPJ+xlM9Y0mcsFeR4m80zeDmjtn5Kfh8GwJUFtvkc8Lk87XuAC/O0j+KEyDBqlelGUA0lPCIET4iZ/7U9PzWj35+tiV5rha1smG16JFKBWIyl/PRQVakHbizXlmGUmXsfP0DS8zgxmCLh+TRFI3S2xgo+0TfHIgznGUpQDW6iG9YunfJmWsrw31rKT2ZhzZOTTFsaXmB1JH38Coz2m5AYRpl5pXeA08NJIhEhGhFSvnJ8IEHSG8i7/qLWWF4hEUiH7051My3lcNR0090XohSWhA2zjZMKRcNZGWMpD8+vjovYhMQwykwi5UNO1l5fNGjPR2RiDEwEiEaFnr7hom6mpRyO2rB2KRt7Tk2IIit2YuS9jx/gld4BBkZTLGyLs6S9ecaWRK0Ns1WKlOenLYxQOFJTRFJVEkvaaBhlJh4NBCQz2SJAUzS/C3HlwjZaYhGaYxFa41Fa41Hi0QjRiNC9sK2oOSKlrLO+a18vD+x+lUTKRwgE8IHdr04ZtZUZ7TU8lsJX5cRQgoHR1IwnSDZC/XjPD6Ls+oYSHO0f5bUTw7x2cpg3T4/SN5xgOJGqKREBExLDKDvnntHJ4nlNxKKCp0osKiye18SaMzrzrr9l/Wo6WmJ4vuL5fvBSpb05xpb1q4u6mZYy/HemBbUyLaekSzIZQTg+OAbMzJKYa2UAkp7P0FggGm+eDkTj1RNDadEYGqs90ciHCYlhlJkt61fTFIuybH4Lbzujg2XzW2iKRQve/DasXcoXNl7EmqXtiAgiwjld89IJGou5mW5Yu5SNl67g2MAYL705wLGBMTZeumJGfoTMglqCEBEhIkxZUCvTcmqKRvD8IOx0KOFx4NggJ4bGpm1J1HMZgKTnMziW4uRQgiOnR3j1xBCHTw5ztL92LY1iMR+JMWeo1bDQmc7pWNDWRFdHasKxFLO/Xft62f7s63R1NHOWc5Bvf/Z13t69oGLnJDPaq705xtGBsfSyoYTHSNLj2necNe391nIZAN9Xkr5PylNSXvA54XwalYieqhYmJBWkVm90c4FaDwudzs1vsmMBsq6hz15zYd79ljK66ezFbew/NoT4GpT3VfAVzlkyuTWRGe11ajiRtUwEUHj0F29OK/VLrZFI+YymPMaSPqNJj6RXnxbFbDEhqRC1fqOrNrMV2enO1aglco/91HAi77Fs/f4+hhJeUdfQTKKbCv0NplNQK3cfGy9dwRMHTvKrY0MIEIsIsWgwou75fl3Vm096Lu+UC7sdTVYv3LbWMB9JhbC03oUpRS6nV3oHOD6QIOVudOFcjVd688/VqBXyHfsvjw7Q2z824Vj29w4WfQ1NN7ppsr9BsQW18u1j+7Ovs2X9appjEeLRcRGpdUIneD5/xsmhwAluIjKOWSQVolHj34uhFMMw056rUSPkO3YAT6Ep51hSvhadGn66kwjvffwAiVS2FdTRMm7RFTM0N9nfcabDY5UgkQrmaCRqYGJfvWJCUiFqKc1ErVEKkY1HhZFk4OwMb1RQeK5GrZDv2EPCXFtCMEcxKsE1U8w1NF0H/8tH++kfTRFBiIqQ8oI5HylvshJCUx9L+Hf87DUXVr3efMrzSXrBw8WY57lhqtklKzQCTEgqRKnSTMxFSiGy557RycHjgwyMZj5Rxzl7SXs5ulwy8h17LCIkPA0UxCmJ+nDmwtZ02G8x19B0HPxJT0l6Sm6Kx4RX/E12sr9jODxWimzEk+H5GvgyPBc55SKokp5vVkYZMSGpELNJMzHXKYXIhvtYNj9Wk0JdyJGd79h9VaIujXxoXXmqzGuKcuv7zyvLzTiRyl9volB7Pqb6O5YqbNd381FSvpJ0RZdMLKqLCUmFqIW4/lqlFLUzSll/o9RMFbGX2+/TI0nmNUU5PphIW1fL2psZSnhlm0ORLOBKCtuLiaor9d9AVbOSEiY938SiRimbkIjIt4APAb2qeqFruwP4HeCYW+2PVfURt+w24AbAA25W1R+49ssYL2r1CHCLqqqINAP3A5cBJ4CPq+qhch1PKcJTLWtpYUpxg6zViWpT/e1z+33ttt30Doyyumt8WG44kWJpR0vZ+hj6CST8R4NBLlWdVuj6TP8GqdDCcENSoymP0WTp62YYUxMK+MBoiv7RJAOjqbzZqDMpp0XybeCrBDf7TO5S1S9mNojI+QTVDS8AzgR+JCLnugqJ9wCbgd0EQnIVQYXEG4A+VT1HRDYBW4GPT9UpX5WhsVSQ7sFF+UQEopEgFUU+SjEHxKK2Gpfp/u2r4U9rb44xlEihGgylBf83YF5TrKQPQWF1vjBCKvxcL1bGUwdO8uDThznSP8LyzlY2vWMll69eVO1u5UVVGUp4DDgx6B9x76MpBseS9I+kGBhNMTCapN+9h+KRnIZvDMpbIfFxEVlV5OrXAA+q6hhw0JXOvVxEDgGdqvoEgIjcD3yYQEiuAe5w228HvioiMlXN9pSnHO0fzbtMnKhki4zwlZ37EXH5glRpjkXx/RRf2/Urrnjr4qx1o5HCGV0taqsxme7fvhrDdJ9899l8eed+opFAQHwXnvvJd5/NQ8/0TEsIQ6sinSrED4Qi9GPUK08dOMmXd75CLCJ0tsQ4MTTGl3e+wi2sKauYeL4yOJZ9ow+EwbWNZQjCSPZ6pdLn9ubJpaIaPpJPich1wB7g91W1D1hBYHGE9Li2pPuc2457PwygqikROQ0sBo7n/qCIbCawaljRvbJgx1QVT8HLiVzpOTVMp8vG6tYkFhVeOznEG6dGJuxHJAihFIFIJBCnj63r5ov/+jKen6QlHmE0Gfwnu+6db2E4kUoLUaaQFbKQjPpiJhZGKYbppjMcG6YpyQ0Gufl95/LEgZNpIVRVFBgeS3FGZwu9/aMk/SA1vq9aN5bFTHjw6cMkUx6nEkEqlHg0wrymKA8+fbgoIUl6fvqGnyUIYdvIeFvm8sGxmZVYziUi0NESp6MlRmdLLONznHb33tkao6MlRkdz+DlOe3OMlniUs+4svO9KC8k9wGcJhl8/C/wl8F/IX9tdJ2lnimXZjarbgG0Ab7/40mlf6cs7WzkxNJY1GWw06bOsszXv+qpKKjSM3NDiRSsX8LvvOYcHn6m9KBkAACAASURBVD7Mm/0jLHNm8duWdfDm6cIWkkDa4oFAmMK2IBMr6Yl4oRBJKERuP+llEYimP5tIVYpqWBgzGY69+X3ncvP7zk3Pt0j5Pn1DCTa9YyVbf7CPpOfTHHMPQb6y8dLukt3k6oFDJ4Lw8vD/XzLlczLlM5Ls519+fiRjiGh8uGgwQxByMw3MlHhU0iLQ0Ryjs3VcEDqcQARCMb6sozlOW3M0fR8pNRUVElU9Gn4Wka8DD7uvPUCmqdANvOHau/O0Z27TIyIxYD5wshz93vSOlXx55yuMJL1xa8JXNr2jsHWTj8tXL5qWCRw+/ZFpJZXmWswaxoNxyylXnIRxIZLIuE9JCMQKMiwozJoqRKUDAfL5NYbGktzzb8FwbMoPrAff1/TnlJ9/gt6vdc/n5vesmfAQVKu+gWLI9R/k+gr6nXUwmGExnB5JjT+pZpyioYTPX/7w5Wn3oSUeoaM5TkfrREFod9/TgpAhEi3xSM39/6qokIjIclU94r5+BPiF+7wD+I6IfInA2b4GeEpVPREZEJErgCeB64CvZGxzPfAEsBHYOZV/ZKZcvnoRtzD3/iN5ZRCoEMkQoUBYcnxQjFtOWeIUYXwZ49aY5AqbWVTB39BXPFV8H1K+n34/dGKIzpYYiZSPuhCsaER49UT+4dip+OWb/bzSO8BI0mNgNMUv3+yf9vVfDkf1lP6D0ZTzIYyLQygapRyFWz6/JeNmPz5slCkCnS3jotHREqcpVh95x4qhnOG/fwdsAJaISA/wZ8AGEbmYQM8PAVsAVHWviDwEvAikgJtcxBbAjYyH/z7qXgDfBB5wjvmTBFFfZWO61kSjE1pT5azBkCkwMG5V5QZLhJojjI/3ZQ79QfaYaKEuZ26TKXTpfWd8L4Sv6vJMKb4G5ynrPYy7zejX+PoTty3EGR0t0xqOnYwH/v0Q9+1+1UU3wljK477drwLwif+wqqh9TOWoDv0H41ZA7fgPQkHY8fwRTg2PMeZGJOJRob05SvfCdr708YtK0o96RRotTvvtF1+q//TDx6vdDSOHegqrrASzPR9PHTjJZx/ey3DSTzsb2+IR/vRDF0z7vP7WV37KWMojGhl/gvZ8n+ZYlH/+3Xen2/LNPwiF4TtPvsbAWIoIwSx9z1lOEFhKo4VmRE6TtP+gOZZ2FmdbBtn+g/bmoL0Y/0GmGGYOcd/y3vJGbdUC8WiEsxbPe0ZV1+VbbjPbjapTrbDKWqUU5+OXb/anRQQCy2Y46Rc1JBWU7/XSQjCc8BDIKgMrBFUOb3nwuVnNPwDybtMSj2RZA6EIZA4ddbbEaG+JMT9sb43TEiuf/2AuDnGXChMSo+o8+PRhYhFJD8OEIbLFhlXONR58+jApz+PU8HiYaXtz8WGmAA8905OeaBvepj1f+c5TrzGvJT7Bp5AblprrP8i91YffX3j99KT9mNccpbMlzomhBImUnzU8qApL2pu4+co1af/Br44O8s8/P8LRgdGatEwLDXE3ukVtQmJUnSP9I3S2ZF+KLfEIb/ZP3yk8F3j15BADI0kkEgQVJD2fk4M+Y6lBfvH66aL8B0MupYWX87Q/5ilf/fH+kvSzNR7hY+tWBtZBxvyD0Epob4mlJ+h+8ttP8+rJ4bT/ShV8lI7mGO86ZwkQ3Iy/9e+HatoyzScYQMNb1CYkRtWZ7jydeqSQ/2BgJGPOwVjQdnrEWQQ5ItA/muLmB5+bVT8EOGtxW0GHcmaYafj9k/c/TdLzOTWcSvtbFrTFaI5Fub5IZ/tQ0uOMzmb6hpNpK2thWxPDGXMrat0yferASbb+YF+6OmLfUIKtPxhiYWu8pvtdCUxIjKpTqnk6lSDXf5Bv/kGp8hcVIoxCa4pFOHN+K90LW9Mzk0MR+NmrJ9n18nE3QXW8IuH/+c63FB1pFXLm/DZODI3R1T6eNHIk6bF4XnPR+wgfFlZmpIUZSXoszdhHrVum235ygP6RJJGIEI0KqtA/kqR/JMnqrnlZ69ZSvyuBCYlRdarhxMydf5B58x9PbpcMrIQy5S8K/QfZs5HjPHngBINjSRJeME8kFhHamqJ0tsZJpIKn+VBwR5IeH7hw+YRz9aG3L2fVvx/ioWd6GEl6tMajfOyy7mmLCJCe2X50YBTfVyIRYV5TjJs2nDOtfUz1sFDrlunhvuGsSbwigChJP+hnrfa7EpiQGDXBTOfp1EL+ovaMWcmhIGTmLzo2MMq/vniUeDRCazxC0gvmhHz6ynMLOG4X5w0zjYmg0UjRQyif+A+rZiQcBXGZgfMnIpqcYh4W6skyzSQWgZSvddfvUmJCYtQEY0kvZygoz/DQyMTholLNP4hFJD23oLMlRrtLWlfIfxDOUWhrmnr+we9993liERgYTXJyaOoorEI33bsee5mowOG+sQw/Q7zsQygPPn2Y9uYYXR3N6YmXI8kU391zmHetWZI1YXIypnpYqPXw2pULWnn15DD4mjVc+JZFbWxe/9aa7XclMCExSkYx/oMDx4bSqTaiIjTFIoy62hSloCUWCSyB1vj4jT+PxZCV9bTM8w9yo7BSvtI3lCTlDxXcJt9Nd95PYrx6YiiYwe/2c7R/jLOXzKO1KeoyTo8n7gzTzmTO5odgaCbqknhmpatxv5MpBwIcHxojKvB630i6YuOS9iaOD46xclF2Knx1s+9Ddu3rZdtPggzE3Qvb+J3/eDa/8balEzKuKsFw4zWXrOC3Lj4zXVRLCerVey4dTDiBOpzxH4YT5/7twgwBfobI+X5xgleIzevfGjjbE6n0EF9nU5zN69/a8JkvTEiMCXh+UPwrFITc5HVZGU5n4T9IoowWEJDQf5CdvK5wCuzwcy3mL0qk/HQSTAhufp7opOIZjQS1beLRCBERYhEhGgqCOm3Q4AYaiwjL55dvPL6jOcYrvYPpPqV85fVTo6xZ2j5h3TB/GgQicsfDLxKPCgvbAuG58+GXuDMSyZvAMsPFUBFCUfJ8zRYc91n9QJDCdDRXnn8GzfEID+x+lSOnRjhjfiub1jWW5VEIE5I5zLT8BxmO58HR1EyGwSeQm7+op2+EsZRHyg+eDkMfQFd7C//tfw8mpXXmzD+YC8SjwlgK/IwhEYBmd4NtikWIRsbzghWq1jmS8ule2Dpeyz0WWAZDU5RBnQ279vVy6MRQOkNwzPUTJs/1BUEG4qTncWIwlbZkOluDiovh8pmWri4F4TmORYu/1j5yaTcfuXQ8IXlm4sxwiM9z13doRYVtgUWFW3dupaYyIalxMucfhDf607kWQmaltAxxKFX9g1hEMlJcZ/sP0gVxMlNXFPAf/Od7/h3PC4YEorHghjqS8OgbSXDBmfNL0tdaISJCPBYhHhHOWdrBayeHGBzNvKE2cfaSdhbOayp6n2Glxdxa7k3RCNdu213ym3JY0yTpKbFIMK0l6SstMWHF/JYpBeyV3gFOD7twWWfJHB9IMDh6ij/c/jwDoylSvs/xgTH+cPvzfGHjRRUXk9kiIsSiMu0bqaZFZtwSCgXIV5fRWTMEydOaFiATkgpRC/MPsv0H+R3KmVFHpc5fNJMhnlpHRIhHA19PUzRCUyxCPBq8Qj71nnO4fcdeOlris6rBnq/SYv9IEgUSnl90AatC5FZU7BsaI+l56eGeiARP79GIEItGWNrRMun+8v29fQnqgIwk/fR+VKFvOMnW7++rOyGZKaEATZfQsskSn4zs0blZokMrqJiM0bPBhGSa5PoPJghCAf/BgJsNWwry+Q9yJ6SlxaCG6h8UGuJpmsF/qEoTWhhN0eAVj8kEwShEqSok5ttPPCIkfc0qYDWcSHHv4wemtf98FRUPHh9CM7La+wq+p/h+cUIYjwojyYl/b1+DkNlMgVFRDhwvHHxgBIR+qpmSLonsxCYtSs7yyReYoMqU9X8aVkiK8R/kFsQZHCut/yAUgkxBGB8umpjCot79B6sWt9PTN8RQVs3rGN0L5029cQUIn5DjUSEeiRCLBmIRc+2zoVQVEnP38+6tO1nQGs9apzUepadveFr7zVdRMRQRIadeC3Dn1RdMeTznntHJweNBedpwSK+jJc7RgbGC29z9o5fz1o03SkMkIkSY/lDcVDSckPzq2CAfvPunZfEfZIeZZs9WzpyLUGz9g7lGOEPaC6NlXJXGakzcikUiNMcD6yJ8n61YVIPQbxIKAASpR7oXtk2y1UQO9w1PECTNeQ+JSHHDZuFQ3LL5sawhvRXzW3izfwzJmY+xoCXKl3fuD4bQIsFxfHlnkGDSxKS2KWeFxG8BHwJ6VfVC17YI+C6wiqBC4sdUtc8tuw24gaDo682q+gPXfhnjFRIfAW5RVRWRZuB+4DLgBPBxVT00Vb/CGai55PoPpkpo11mB+gdzkaTnk0iNj3E0RcvvH4lHIzTHAv9FcyyajpKaC+Tzm8zE/5JPkAqR8gPLIffmnutj2bJ+NRsvXTHBwnh79wJu/rtnGUx4ad9Le1OUoYTnRCQQ9IgENVC+8dODNS8k+Y69Ufw9UF6L5NvAVwlu9iG3Ao+p6udF5Fb3/TMicj5BqdwLCGq2/0hEznXldu8BNgO7CYTkKoJyuzcAfap6johsArYCH5+qU8s6W/jsNRdMGEKqtv+gEdj2kwOMJDzi0fFU4iMJj20/OVCSWPwsP0bMiUc0Mqfru5fK/5JPkCYj11LI52P5g+3PI0BXRzNnuX1uf/Z1AJriUZqc4zgaEZriUQYGEzTFsv9WEaGs4c2lIN+xzzTgoV4pm5Co6uMisiqn+RqCOu4A9wG7gM+49gdVdQw46OqwXy4ih4BOVX0CQETuBz5MICTXAHe4fW0HvioiolOEJcxvjafrHxiVpVDSu8PTHM+H4Km1KTb+ao4V5/iuNuV4ci2F/yWfIPX2jzI05pHfZtQsSyH0saQ85eDpIRKej+eGroYTXtY8km/89CBdHc1ZkyiHEyn6hpNpCyXEV5jXVOGZitMkn39pJgEP9UylfSRnqOoRAFU9IiLhWV5BYHGE9Li2pPuc2x5uc9jtKyUip4HFwPHcHxWRzQRWDSu6GyeR2lwgGpkYWluvVsaufb01PX8iV5Cu3babQycGOXJ6onPc88lKfHm4b5j+4TH6x3JkR4PQ5Mx5JJ4qZ+WkVmmNR5nnhrdSvk9EwvQm8Ml3n13aAy0xh/uGiQocODaYlUJmugEP9UytPMLluyvoJO2TbTOxUXWbqq5T1XWLFps1Ui1WLmjF82Es5adfnh+0Q+DLmNccY2FbE2d0tnDWojbesngey+e3sri9mY6WOC3xaE2LyK59vVy7bTfv3rqTa7ftZte+3vSyrd/fR99wMO8jFo2gjM+fqEW2rF9NPDrRGgjPfpZv0PcniojD8xXBzYh3ecByh85Gkh4XnDmfq9++DF9hLBXMe7j67ctq3j/S0Rzj9VOjpNwwXZhCpr25cWKZKi0kR0VkOYB7D/+X9QCZpkI38IZr787TnrWNiMSA+cDJsvXcmDW/cW7XhGESH/jg25fzlsXzWLmojTM6W1g4r4l5zbG6i6IKx8p7B0azxspDMTlwfCg9tBfeWCNCzc6f2LB2KXdefcGEm0T4tNYWHxeSkyOF0/KnJ8y5eVRtcaF/JMkrRwd46chpXjk6QP9IkneuXsQzr51m1eI2Ljyzk1WL23jmtdNZYlyLpEfTNeNF+Sb/1SKV/p+6A7jefb4e+F5G+yYRaRaRs4E1wFNuGGxARK6Q4PHnupxtwn1tBHZO5R8xKk9EhOZ4UJTpF0f6WdbZRFs8mKsxrynK8vnN7Hn11JyIogpzS715epRfHh3gzdOjJD0vnVuqXmnPqVoYEVjQGuPCFQvTbcOTOMQjEoR6x6LC4nlNrFjQFtxrnXWCBPfeR144QiKVff4Sqdo/f4MJjxULWohFJX2cKxZMnUJmLlHO8N+/I3CsLxGRHuDPgM8DD4nIDcBrwEcBVHWviDwEvAikgJtcxBbAjYyH/z7qXgDfBB5wjvmTBFFfRhWJRiQdXpvp1wg5cnqUJe0tdHWMi4aqzpmx5EK5pZLeAABnL25j/7GhCfMnzlkyvTkflWLXvl5u/rtn6R/LviHGXFbiYkOMVTOSG/qKiDC/NT7B2b7/2BAiECFIc5/ylBNDCVJef0mPq9QUyoE2VQqZuUQ5o7auLbDoygLrfw74XJ72PcCFedpHcUJkVJ7A0gjmZYRzNKaKmirV5LlaJZHyg/QTnmbVyghzid36/vP4g+3PM+jS5UQjwoLmOLe+/7yy920m0WJ/8k8vTBARgISn08ruoGRbHscGx1jWmX2TbY1Hg+zCUUn7wESClB6JEuWaKxelmstTz9TXILRRFSRjeKqro5nuhW2sWhI4wRc5f0Yxobdb1q8m6SnDiZRLYpmaU//hfPXxnJWhBO+egmogJBvWLuWLGy/ikpULWdbZwiUrF/LFCkRsTeW7KcTrp0cLLotHJWvIabKhyXlNUdYu62TN0g7mu7rz+Zztsai4YlTq6oAEJ7LW53iFvqSlHS2cHkmytKOlqBQyc4nGCSswiiZMH9ISizqrozSz9zesXcrGnlMTZjrPlf9wYwXK/maWAy5Vzq3pMFldkMy+5Fotk3kcj54ey8pKHY8EIcH56OpoTn9ujUdpikr6gSLzCf6tS+bROzDGqZHx+SQLWuOsWdox63NQbqrxd60lTEgaHBHJSB8SoSUeLdvEvl37enlg96skUj5CkD7+gd2v8vbuBXPiP2Gh8vElKis/Y17pHaBvKJG2lFKex6i7eYfs2tebNex2fLBwYkUIou0GRscjtZpiUcZS+ROadrSM5/AaSXqsOaOTLetXT5iN//OeU3x55/6gMqSbR3J6NMU7rQJhzWNC0kDkikboGK8UW7+/j+ODifTNJuX7jA0mGqoORTmYKmPucMIj082gBENumZFWn3/0JU4NJ4m6eu5ahPiNZdSRaYoFWZIjkfH0N0lXjySf7yDfE/y9jx+gq70pJ1twjCcOnOTmGZ8doxKYkMxh4i6zbUs8ms47Vc0Eky8fHZjwxKqu3cimWOf43T96ecqMuaMFwlAz2w+ecOlrMhzdTCN6dc3SDg6dGKR/ZFwEFs1vZn5LnIXzmovKA3a4b5gl7c10ZUQ7zaWovrmMCckcIfRrhJZGc6z20ogUCr6p8aCcoolA3rxU07X5ppME8Bs/PThlxtxCxkUpRtzCLMBh5FJHSzDkNZbyOTmU5Np3nFX0zPS5HtU3l6ntcAgjLxERWpuiLMhIJXLW4mBW+IK2JlqbajuNyFxlxcLWabUXIjMJoEjwnhslFRKmXs9kJhlzVy+Zly7Vmo6YKoK/dn3asHYpl501n6P9YwwlPDxfmdcUZfuzrxc9M32uR/XNZcwiqXFEJMOnUXm/hlE8I4n8aUIKtRficN8wiaTHweND6eilJfOa8ta2n9cUpX80Re44VGfL9P5rf+aqteMJJT2fWCTC/NYYiaTHSKqwqIR+ll37ennkF0fTNd1VYXDMozkeKToLbqlS4huVx4SkhghTo8ejkjU73Apn1QcnhpLTaof8vhABegcTCK7MrQbfV+axbDqbQyGZ2D4dNqxdyhc2XjThJg7Bjf2JAycm3f7exw8EEwojQR4xEfBRTg8n6YkU7+No9DDaesWEpArkK8AUj86dqn2F6GyJMZBT816Ajmk+PdcqhZ7bC7UXSit/eiSZd7t8Ibk9eVK857YX67spdBPfsHYpq279lwJHEXC4b5jmWISUF6R/gcBhP+b55uNoAObG/+AaRUSIRSQrhUgxqUTmKp9899npCKN6qjdRLsK08tGIBGnlNUgrn/J1ws0/AjNOFRKPRUik/AkCHp/GEKmQXxDDR5+VC9tIeT4nhhLgByLiqRKLFJ+Ty6hfTEhKRERkQsU+G5bKJozemWzOQz0z3aitzLTyENx8VYLbtY+7Sbs7uA+0zdA3FiaLjMr4HA9PlbMXF28phNvla4fxfFOL5zWlo7aiEeGmDW+1oaoGwIRkBmRW7WuORydkuTUKc/P7zp0zwpFLKZ78M9H0PwGLWmf237UUySLbm2MMjQXDkpkJKee54k3mKG9sTEimIDM1erFZbo3GZLIn/3xO9UJp5eMRYUFbjBND4zmnFs+LI5GZXXcb1i7luiveEliCnkdrNMJ1V7xlWjf5cFgyOsmwpDnKGxe7I+bQFIuks9yudKVel81vmVaWW6MxufX959EWj5D0fUZTPknfpy0e4QO/tjxv9t0P/NpyFrTFkUggOBKBBW1xzlnaTiwaoTUeJR4VWuNRYtFIXqd1vMDlmNm+a18v2599na6OZs5b1kFXR/O05ndAYEne8t5zaI1HSflB8sVb3nvOnLUujelRFYtERA4BAwTB7ylVXScii4DvAquAQ8DHVLXPrX8bcINb/2ZV/YFrv4zxolePALdMp0pimHuqJR6lxWW7rfeJfDOpO2GUl0deOJKeYAjQ1hRjOJHiiQMn+WKekNsweWEYlJDwfHoHElz7jonJC4vJFpA5wTHz94ud3xEyl4cljdlRzaGt96jq8YzvtwKPqernReRW9/0zInI+QfXDC4AzgR+JyLmuguI9wGZgN4GQXMV4BcW8RCLC4nnNJU2PXitMJ7WGUXq2fn8fw0mfeDSSHqoaTvr86vgQbzsjOxV6azxKT9/wrJMX+gWEJLP9cN8wC1rjWcvD3zeMUlBL4zTXAPe5z/cBH85of1BVx1T1ILAfuFxElgOdqvqEs0Luz9imILGIML8tTks8OqdEBKaXWsMoPZlRWIIQEQlyX3mat5BTofkVYfLC1V3trF3Wyequdpa0N+e98UczkiyGr8x2CEJzp/P7hjFdqiUkCvyriDwjIptd2xmqegTAvYePaSuAwxnb9ri2Fe5zbvsERGSziOwRkT3Hjh0r4WHUFof7hmmNZ89otifP6hOLyLRySE3nxn/125cBYV308RDdsB0sh5VRfqolJO9S1UuB9wM3icj6SdbNZzboJO0TG1W3qeo6VV3X1dU1/d7WCfbkWV3OXtwWRDP5iqri+4qv8NauedMqxTqdG/9dmy7lIxcvT1sg0YjwkYuXc9emS9PrWClYo9xUxUeiqm+4914R+Z/A5cBREVmuqkfcsFUYUtIDrMzYvBt4w7V352lvWMJJYfkKCRnlZ7L5GtMJjZ3unIy7Nl3KXZum3qcJh1EuZBpBTqX5QZF5QERVB9znHwJ3AlcCJzKc7YtU9Y9E5ALgOwRicybwGLBGVT0ReRr4XeBJAmf7V1T1kcl+f926dbpnz56yHV+1CaO2bFJYdbDzb8xVROQZVV2Xb1k1LJIzgP/pHN0x4Duq+n0nCg+JyA3Aa8BHAVR1r4g8BLwIpICbXMQWwI2Mh/8+yhQRW42APXlWFzv/RiNScYuk2sx1i8QwDKMcTGaR1FL4r2EYhlGHmJAYhmEYs8KExDAMw5gVJiSGYRjGrGg4Z7uIHANezbNoCXA8T7sRYOdncuz8TI6dn6mp9XP0FlXNO6O74YSkECKyp1BEgmHnZyrs/EyOnZ+pqedzZENbhmEYxqwwITEMwzBmhQnJONuq3YEax87P5Nj5mRw7P1NTt+fIfCSGYRjGrDCLxDAMw5gVJiSGYRjGrGgYIRGRlSLyYxF5SUT2isgtedYREblbRPaLyM9F5NJ8+5qrFHmONojIaRF5zr1ur0Zfq4GItIjIUyLyvDs/f55nnYa9hoo8Pw17/YSISFREfiYiD+dZVpfXT1UKW1WJFPD7qvqsiHQAz4jID1X1xYx13g+sca9fB+5x741CMecI4Ceq+qEq9K/ajAHvVdVBEYkDPxWRR1V1d8Y6jXwNFXN+oHGvn5BbgJeAzjzL6vL6aRiLRFWPqOqz7vMAwR8yt8b7NcD9GrAbWOCqNTYERZ6jhsVdF4Pua9y9cqNVGvYaKvL8NDQi0g18EPhGgVXq8vppGCHJRERWAZcQVFbMZAVwOON7Dw16I53kHAG80w1fPOoqWDYMbljiOYJS0D9UVbuGMiji/EADXz/AXwF/BPgFltfl9dNwQiIi7cA/AJ9W1f7cxXk2abgnqinO0bMEOXcuAr4C/FOl+1dNVNVT1YuBbuByEbkwZ5WGvoaKOD8Ne/2IyIeAXlV9ZrLV8rTV/PXTUELixm3/AfhbVf3HPKv0ACszvncDb1Sib7XCVOdIVfvD4QtVfQSIi8iSCnez6qjqKWAXcFXOooa/hqDw+Wnw6+ddwNUicgh4EHiviPxNzjp1ef00jJBIUCT+m8BLqvqlAqvtAK5zkRNXAKdV9UjFOlllijlHIrLMrYeIXE5wDZ2oXC+rh4h0icgC97kVeB+wL2e1hr2Gijk/jXz9qOptqtqtqquATcBOVf3tnNXq8vpppKitdwGfAF5wY7gAfwycBaCqfw08AnwA2A8MA/9XFfpZTYo5RxuBG0UkBYwAm7Rx0iMsB+4TkSjBDfAhVX1YRP5vsGuI4s5PI18/eZkL14+lSDEMwzBmRcMMbRmGYRjlwYTEMAzDmBUmJIZhGMasMCExDMMwZoUJiWEYhjErTEgMowKIyKdFpG0G2x1qoAl7Rp1iQmIYleHTQF4hcfMuDKNuMSExjBIjIvNE5F9cYsJfiMifAWcCPxaRH7t1BkXkThF5kiCJ4ZWuRsULIvItEWnO2WeriHxfRH7Hff9tV/vjORG518TIqCYmJIZReq4C3lDVi1T1QoKMr28A71HV97h15gG/UNVfB/YA3wY+rqq/RpBx4saM/bUD/wx8R1W/LiLnAR8H3uUSJHrA/1GB4zKMvJiQGEbpeQF4n4hsFZH/qKqn86zjESTHBHgbcFBVX3bf7wPWZ6z7PeD/U9X73fcrgcuAp10qmyuB1aU+CMMolkbKtWUYFUFVXxaRywhyJv2/IvKveVYbVVXPfc6XOjyT/wW8X0S+4/JSCXCfqt5Wul4bxswxi8QwSoyInAkMq+rfAF8ELgUGgI4Cm+wDVonIOe77J4B/y1h+O0GG3K+5WiaitAAAAJVJREFU748BG0Vkqfu9RSLyltIehWEUjwmJYZSeXwOecsNO/w/w34FtwKOhsz0TVR0lyPL69yLyAkH1vL/OWe3TQIuI/IWqvgj8CfCvIvJz4IcEmXcNoypY9l/DMAxjVphFYhiGYcwKExLDMAxjVpiQGIZhGLPChMQwDMOYFSYkhmEYxqwwITEMwzBmhQmJYRiGMSv+f7YrtZCPXJuFAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"sns.regplot(x=\"stroke\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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 0x7f3d8bf8dbe0>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x=\"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 0x7f3d8beff940>"
]
},
"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)\n",
"#print(df.dtypes)\n",
"#sns.boxplot(x=\"aspiration\", 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 0x7f3d8be99160>"
]
},
"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>price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>body-style</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>convertible</th>\n",
" <td>21890.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>hardtop</th>\n",
" <td>22208.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>hatchback</th>\n",
" <td>9957.441176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>sedan</th>\n",
" <td>14459.755319</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wagon</th>\n",
" <td>12371.960000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" price\n",
"body-style \n",
"convertible 21890.500000\n",
"hardtop 22208.500000\n",
"hatchback 9957.441176\n",
"sedan 14459.755319\n",
"wagon 12371.960000"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df_sliced = df[[\"body-style\", \"price\"]]\n",
"grouped_bs = df_sliced.groupby([\"body-style\"], as_index=True).mean()\n",
"grouped_bs.head(10)"
]
},
{
"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": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['convertible', 'hardtop', 'hatchback', 'sedan', 'wagon'], dtype='object', name='body-style')\n"
]
},
{
"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",
"print(row_labels)\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>5</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>15250.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>17710.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>fwd</td>\n",
" <td>wagon</td>\n",
" <td>18920.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>23875.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>16430.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>16925.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>20970.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21105.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>24565.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>30760.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>41315.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>36880.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>5151.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>6295.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>6575.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>5572.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>6377.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>7957.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>6229.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>6692.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>7609.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>8558.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>fwd</td>\n",
" <td>wagon</td>\n",
" <td>8921.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>12964.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>6479.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>171</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>9988.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>172</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>10898.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>173</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>11248.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>174</th>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>16558.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>175</th>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>15998.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>176</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>15690.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>177</th>\n",
" <td>rwd</td>\n",
" <td>wagon</td>\n",
" <td>15750.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>178</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>7775.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>179</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>7975.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>180</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>7995.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>181</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>8195.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>182</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>8495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>183</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>9495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>184</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>9995.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>185</th>\n",
" <td>fwd</td>\n",
" <td>convertible</td>\n",
" <td>11595.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>186</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>9980.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>187</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>13295.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>188</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>13845.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189</th>\n",
" <td>fwd</td>\n",
" <td>wagon</td>\n",
" <td>12290.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>190</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>12940.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191</th>\n",
" <td>rwd</td>\n",
" <td>wagon</td>\n",
" <td>13415.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>192</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>15985.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>193</th>\n",
" <td>rwd</td>\n",
" <td>wagon</td>\n",
" <td>16515.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>194</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>18420.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>195</th>\n",
" <td>rwd</td>\n",
" <td>wagon</td>\n",
" <td>18950.0</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": 50,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"4 17450.0\n",
"136 7603.0\n",
"140 9233.0\n",
"141 11259.0\n",
"144 8013.0\n",
"145 11694.0\n",
"150 7898.0\n",
"151 8778.0\n",
"Name: price, dtype: float64"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_test2.get_group('4wd')['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can use the function 'f_oneway' in the module 'stats' to obtain the <b>F-test score</b> and <b>P-value</b>."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 67.95406500780399 , P = 3.3945443577151245e-23\n"
]
}
],
"source": [
"# ANOVA\n",
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'], grouped_test2.get_group('rwd')['price'], grouped_test2.get_group('4wd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a great result, with a large F test score showing a strong correlation and a P value of almost 0 implying almost certain statistical significance. But does this mean all three tested groups are all this highly correlated? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Separately: fwd and rwd"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 130.5533160959111 , P = 2.2355306355677845e-23\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'], grouped_test2.get_group('rwd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's examine the other groups "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4wd and rwd"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 8.580681368924756 , P = 0.004411492211225333\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('rwd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>4wd and fwd</h4>"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 0.665465750252303 , P = 0.41620116697845666\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('fwd')['price']) \n",
" \n",
"print(\"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Conclusion: Important Variables</h3>"
]
},
{
"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/DA0101EN_edx_link_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