Skip to content

Instantly share code, notes, and snippets.

@colmblueeyes
Created January 16, 2020 21:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save colmblueeyes/cda11f5bd341a8038a92e4964769761d to your computer and use it in GitHub Desktop.
Save colmblueeyes/cda11f5bd341a8038a92e4964769761d 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": [
"Exploratory Data Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Welcome!</h3>\n",
"In this section, we will explore several methods to see if certain characteristics or features can be used to predict car price. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Table of content</h2>\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"<ol>\n",
" <li><a href=\"#import_data\">Import Data from Module</a></li>\n",
" <li><a href=\"#pattern_visualization\">Analyzing Individual Feature Patterns using Visualization</a></li>\n",
" <li><a href=\"#discriptive_statistics\">Descriptive Statistical Analysis</a></li>\n",
" <li><a href=\"#basic_grouping\">Basics of Grouping</a></li>\n",
" <li><a href=\"#correlation_causation\">Correlation and Causation</a></li>\n",
" <li><a href=\"#anova\">ANOVA</a></li>\n",
"</ol>\n",
" \n",
"Estimated Time Needed: <strong>30 min</strong>\n",
"</div>\n",
" \n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What are the main characteristics which have the most impact on the car price?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"import_data\">1. Import Data from Module 2</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>hatchback</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"path='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"pattern_visualization\">2. Analyzing Individual Feature Patterns using Visualization</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To install seaborn we use the pip which is the python package manager."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"! pip install seaborn"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import visualization packages \"Matplotlib\" and \"Seaborn\", don't forget about \"%matplotlib inline\" to plot in a Jupyter notebook."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How to choose the right visualization method?</h4>\n",
"<p>When visualizing individual variables, it is important to first understand what type of variable you are dealing with. This will help us find the right visualization method for that variable.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"symboling int64\n",
"normalized-losses int64\n",
"make object\n",
"aspiration object\n",
"num-of-doors object\n",
"body-style object\n",
"drive-wheels object\n",
"engine-location object\n",
"wheel-base float64\n",
"length float64\n",
"width float64\n",
"height float64\n",
"curb-weight int64\n",
"engine-type object\n",
"num-of-cylinders object\n",
"engine-size int64\n",
"fuel-system object\n",
"bore float64\n",
"stroke float64\n",
"compression-ratio float64\n",
"horsepower float64\n",
"peak-rpm float64\n",
"city-mpg int64\n",
"highway-mpg int64\n",
"price float64\n",
"city-L/100km float64\n",
"horsepower-binned object\n",
"diesel int64\n",
"gas int64\n",
"dtype: object\n"
]
}
],
"source": [
"# list the data types for each column\n",
"print(df.dtypes)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h3>Question #1:</h3>\n",
"\n",
"<b>What is the data type of the column \"peak-rpm\"? </b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"float64\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"for example, we can calculate the correlation between variables of type \"int64\" or \"float64\" using the method \"corr\":"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>symboling</th>\n",
" <td>1.000000</td>\n",
" <td>0.466264</td>\n",
" <td>-0.535987</td>\n",
" <td>-0.365404</td>\n",
" <td>-0.242423</td>\n",
" <td>-0.550160</td>\n",
" <td>-0.233118</td>\n",
" <td>-0.110581</td>\n",
" <td>-0.140019</td>\n",
" <td>-0.008245</td>\n",
" <td>-0.182196</td>\n",
" <td>0.075819</td>\n",
" <td>0.279740</td>\n",
" <td>-0.035527</td>\n",
" <td>0.036233</td>\n",
" <td>-0.082391</td>\n",
" <td>0.066171</td>\n",
" <td>-0.196735</td>\n",
" <td>0.196735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>normalized-losses</th>\n",
" <td>0.466264</td>\n",
" <td>1.000000</td>\n",
" <td>-0.056661</td>\n",
" <td>0.019424</td>\n",
" <td>0.086802</td>\n",
" <td>-0.373737</td>\n",
" <td>0.099404</td>\n",
" <td>0.112360</td>\n",
" <td>-0.029862</td>\n",
" <td>0.055563</td>\n",
" <td>-0.114713</td>\n",
" <td>0.217299</td>\n",
" <td>0.239543</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.181877</td>\n",
" <td>0.133999</td>\n",
" <td>0.238567</td>\n",
" <td>-0.101546</td>\n",
" <td>0.101546</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wheel-base</th>\n",
" <td>-0.535987</td>\n",
" <td>-0.056661</td>\n",
" <td>1.000000</td>\n",
" <td>0.876024</td>\n",
" <td>0.814507</td>\n",
" <td>0.590742</td>\n",
" <td>0.782097</td>\n",
" <td>0.572027</td>\n",
" <td>0.493244</td>\n",
" <td>0.158502</td>\n",
" <td>0.250313</td>\n",
" <td>0.371147</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.543304</td>\n",
" <td>0.584642</td>\n",
" <td>0.476153</td>\n",
" <td>0.307237</td>\n",
" <td>-0.307237</td>\n",
" </tr>\n",
" <tr>\n",
" <th>length</th>\n",
" <td>-0.365404</td>\n",
" <td>0.019424</td>\n",
" <td>0.876024</td>\n",
" <td>1.000000</td>\n",
" <td>0.857170</td>\n",
" <td>0.492063</td>\n",
" <td>0.880665</td>\n",
" <td>0.685025</td>\n",
" <td>0.608971</td>\n",
" <td>0.124139</td>\n",
" <td>0.159733</td>\n",
" <td>0.579821</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.698142</td>\n",
" <td>0.690628</td>\n",
" <td>0.657373</td>\n",
" <td>0.211187</td>\n",
" <td>-0.211187</td>\n",
" </tr>\n",
" <tr>\n",
" <th>width</th>\n",
" <td>-0.242423</td>\n",
" <td>0.086802</td>\n",
" <td>0.814507</td>\n",
" <td>0.857170</td>\n",
" <td>1.000000</td>\n",
" <td>0.306002</td>\n",
" <td>0.866201</td>\n",
" <td>0.729436</td>\n",
" <td>0.544885</td>\n",
" <td>0.188829</td>\n",
" <td>0.189867</td>\n",
" <td>0.615077</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.680635</td>\n",
" <td>0.751265</td>\n",
" <td>0.673363</td>\n",
" <td>0.244356</td>\n",
" <td>-0.244356</td>\n",
" </tr>\n",
" <tr>\n",
" <th>height</th>\n",
" <td>-0.550160</td>\n",
" <td>-0.373737</td>\n",
" <td>0.590742</td>\n",
" <td>0.492063</td>\n",
" <td>0.306002</td>\n",
" <td>1.000000</td>\n",
" <td>0.307581</td>\n",
" <td>0.074694</td>\n",
" <td>0.180449</td>\n",
" <td>-0.062704</td>\n",
" <td>0.259737</td>\n",
" <td>-0.087027</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.104812</td>\n",
" <td>0.135486</td>\n",
" <td>0.003811</td>\n",
" <td>0.281578</td>\n",
" <td>-0.281578</td>\n",
" </tr>\n",
" <tr>\n",
" <th>curb-weight</th>\n",
" <td>-0.233118</td>\n",
" <td>0.099404</td>\n",
" <td>0.782097</td>\n",
" <td>0.880665</td>\n",
" <td>0.866201</td>\n",
" <td>0.307581</td>\n",
" <td>1.000000</td>\n",
" <td>0.849072</td>\n",
" <td>0.644060</td>\n",
" <td>0.167562</td>\n",
" <td>0.156433</td>\n",
" <td>0.757976</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.794889</td>\n",
" <td>0.834415</td>\n",
" <td>0.785353</td>\n",
" <td>0.221046</td>\n",
" <td>-0.221046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>-0.110581</td>\n",
" <td>0.112360</td>\n",
" <td>0.572027</td>\n",
" <td>0.685025</td>\n",
" <td>0.729436</td>\n",
" <td>0.074694</td>\n",
" <td>0.849072</td>\n",
" <td>1.000000</td>\n",
" <td>0.572609</td>\n",
" <td>0.209523</td>\n",
" <td>0.028889</td>\n",
" <td>0.822676</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.679571</td>\n",
" <td>0.872335</td>\n",
" <td>0.745059</td>\n",
" <td>0.070779</td>\n",
" <td>-0.070779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>-0.140019</td>\n",
" <td>-0.029862</td>\n",
" <td>0.493244</td>\n",
" <td>0.608971</td>\n",
" <td>0.544885</td>\n",
" <td>0.180449</td>\n",
" <td>0.644060</td>\n",
" <td>0.572609</td>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.591309</td>\n",
" <td>0.543155</td>\n",
" <td>0.554610</td>\n",
" <td>0.054458</td>\n",
" <td>-0.054458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.008245</td>\n",
" <td>0.055563</td>\n",
" <td>0.158502</td>\n",
" <td>0.124139</td>\n",
" <td>0.188829</td>\n",
" <td>-0.062704</td>\n",
" <td>0.167562</td>\n",
" <td>0.209523</td>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.034696</td>\n",
" <td>-0.035201</td>\n",
" <td>0.082310</td>\n",
" <td>0.037300</td>\n",
" <td>0.241303</td>\n",
" <td>-0.241303</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>-0.182196</td>\n",
" <td>-0.114713</td>\n",
" <td>0.250313</td>\n",
" <td>0.159733</td>\n",
" <td>0.189867</td>\n",
" <td>0.259737</td>\n",
" <td>0.156433</td>\n",
" <td>0.028889</td>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" <td>-0.435780</td>\n",
" <td>0.331425</td>\n",
" <td>0.268465</td>\n",
" <td>0.071107</td>\n",
" <td>-0.299372</td>\n",
" <td>0.985231</td>\n",
" <td>-0.985231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.075819</td>\n",
" <td>0.217299</td>\n",
" <td>0.371147</td>\n",
" <td>0.579821</td>\n",
" <td>0.615077</td>\n",
" <td>-0.087027</td>\n",
" <td>0.757976</td>\n",
" <td>0.822676</td>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" <td>0.107885</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.804575</td>\n",
" <td>0.809575</td>\n",
" <td>0.889488</td>\n",
" <td>-0.169053</td>\n",
" <td>0.169053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>0.279740</td>\n",
" <td>0.239543</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.435780</td>\n",
" <td>0.107885</td>\n",
" <td>1.000000</td>\n",
" <td>-0.115413</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" <td>0.115830</td>\n",
" <td>-0.475812</td>\n",
" <td>0.475812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-mpg</th>\n",
" <td>-0.035527</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.034696</td>\n",
" <td>0.331425</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.115413</td>\n",
" <td>1.000000</td>\n",
" <td>0.972044</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.949713</td>\n",
" <td>0.265676</td>\n",
" <td>-0.265676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>0.036233</td>\n",
" <td>-0.181877</td>\n",
" <td>-0.543304</td>\n",
" <td>-0.698142</td>\n",
" <td>-0.680635</td>\n",
" <td>-0.104812</td>\n",
" <td>-0.794889</td>\n",
" <td>-0.679571</td>\n",
" <td>-0.591309</td>\n",
" <td>-0.035201</td>\n",
" <td>0.268465</td>\n",
" <td>-0.804575</td>\n",
" <td>-0.058598</td>\n",
" <td>0.972044</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" <td>-0.930028</td>\n",
" <td>0.198690</td>\n",
" <td>-0.198690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.082391</td>\n",
" <td>0.133999</td>\n",
" <td>0.584642</td>\n",
" <td>0.690628</td>\n",
" <td>0.751265</td>\n",
" <td>0.135486</td>\n",
" <td>0.834415</td>\n",
" <td>0.872335</td>\n",
" <td>0.543155</td>\n",
" <td>0.082310</td>\n",
" <td>0.071107</td>\n",
" <td>0.809575</td>\n",
" <td>-0.101616</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" <td>0.789898</td>\n",
" <td>0.110326</td>\n",
" <td>-0.110326</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-L/100km</th>\n",
" <td>0.066171</td>\n",
" <td>0.238567</td>\n",
" <td>0.476153</td>\n",
" <td>0.657373</td>\n",
" <td>0.673363</td>\n",
" <td>0.003811</td>\n",
" <td>0.785353</td>\n",
" <td>0.745059</td>\n",
" <td>0.554610</td>\n",
" <td>0.037300</td>\n",
" <td>-0.299372</td>\n",
" <td>0.889488</td>\n",
" <td>0.115830</td>\n",
" <td>-0.949713</td>\n",
" <td>-0.930028</td>\n",
" <td>0.789898</td>\n",
" <td>1.000000</td>\n",
" <td>-0.241282</td>\n",
" <td>0.241282</td>\n",
" </tr>\n",
" <tr>\n",
" <th>diesel</th>\n",
" <td>-0.196735</td>\n",
" <td>-0.101546</td>\n",
" <td>0.307237</td>\n",
" <td>0.211187</td>\n",
" <td>0.244356</td>\n",
" <td>0.281578</td>\n",
" <td>0.221046</td>\n",
" <td>0.070779</td>\n",
" <td>0.054458</td>\n",
" <td>0.241303</td>\n",
" <td>0.985231</td>\n",
" <td>-0.169053</td>\n",
" <td>-0.475812</td>\n",
" <td>0.265676</td>\n",
" <td>0.198690</td>\n",
" <td>0.110326</td>\n",
" <td>-0.241282</td>\n",
" <td>1.000000</td>\n",
" <td>-1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>gas</th>\n",
" <td>0.196735</td>\n",
" <td>0.101546</td>\n",
" <td>-0.307237</td>\n",
" <td>-0.211187</td>\n",
" <td>-0.244356</td>\n",
" <td>-0.281578</td>\n",
" <td>-0.221046</td>\n",
" <td>-0.070779</td>\n",
" <td>-0.054458</td>\n",
" <td>-0.241303</td>\n",
" <td>-0.985231</td>\n",
" <td>0.169053</td>\n",
" <td>0.475812</td>\n",
" <td>-0.265676</td>\n",
" <td>-0.198690</td>\n",
" <td>-0.110326</td>\n",
" <td>0.241282</td>\n",
" <td>-1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses wheel-base length \\\n",
"symboling 1.000000 0.466264 -0.535987 -0.365404 \n",
"normalized-losses 0.466264 1.000000 -0.056661 0.019424 \n",
"wheel-base -0.535987 -0.056661 1.000000 0.876024 \n",
"length -0.365404 0.019424 0.876024 1.000000 \n",
"width -0.242423 0.086802 0.814507 0.857170 \n",
"height -0.550160 -0.373737 0.590742 0.492063 \n",
"curb-weight -0.233118 0.099404 0.782097 0.880665 \n",
"engine-size -0.110581 0.112360 0.572027 0.685025 \n",
"bore -0.140019 -0.029862 0.493244 0.608971 \n",
"stroke -0.008245 0.055563 0.158502 0.124139 \n",
"compression-ratio -0.182196 -0.114713 0.250313 0.159733 \n",
"horsepower 0.075819 0.217299 0.371147 0.579821 \n",
"peak-rpm 0.279740 0.239543 -0.360305 -0.285970 \n",
"city-mpg -0.035527 -0.225016 -0.470606 -0.665192 \n",
"highway-mpg 0.036233 -0.181877 -0.543304 -0.698142 \n",
"price -0.082391 0.133999 0.584642 0.690628 \n",
"city-L/100km 0.066171 0.238567 0.476153 0.657373 \n",
"diesel -0.196735 -0.101546 0.307237 0.211187 \n",
"gas 0.196735 0.101546 -0.307237 -0.211187 \n",
"\n",
" width height curb-weight engine-size bore \\\n",
"symboling -0.242423 -0.550160 -0.233118 -0.110581 -0.140019 \n",
"normalized-losses 0.086802 -0.373737 0.099404 0.112360 -0.029862 \n",
"wheel-base 0.814507 0.590742 0.782097 0.572027 0.493244 \n",
"length 0.857170 0.492063 0.880665 0.685025 0.608971 \n",
"width 1.000000 0.306002 0.866201 0.729436 0.544885 \n",
"height 0.306002 1.000000 0.307581 0.074694 0.180449 \n",
"curb-weight 0.866201 0.307581 1.000000 0.849072 0.644060 \n",
"engine-size 0.729436 0.074694 0.849072 1.000000 0.572609 \n",
"bore 0.544885 0.180449 0.644060 0.572609 1.000000 \n",
"stroke 0.188829 -0.062704 0.167562 0.209523 -0.055390 \n",
"compression-ratio 0.189867 0.259737 0.156433 0.028889 0.001263 \n",
"horsepower 0.615077 -0.087027 0.757976 0.822676 0.566936 \n",
"peak-rpm -0.245800 -0.309974 -0.279361 -0.256733 -0.267392 \n",
"city-mpg -0.633531 -0.049800 -0.749543 -0.650546 -0.582027 \n",
"highway-mpg -0.680635 -0.104812 -0.794889 -0.679571 -0.591309 \n",
"price 0.751265 0.135486 0.834415 0.872335 0.543155 \n",
"city-L/100km 0.673363 0.003811 0.785353 0.745059 0.554610 \n",
"diesel 0.244356 0.281578 0.221046 0.070779 0.054458 \n",
"gas -0.244356 -0.281578 -0.221046 -0.070779 -0.054458 \n",
"\n",
" stroke compression-ratio horsepower peak-rpm \\\n",
"symboling -0.008245 -0.182196 0.075819 0.279740 \n",
"normalized-losses 0.055563 -0.114713 0.217299 0.239543 \n",
"wheel-base 0.158502 0.250313 0.371147 -0.360305 \n",
"length 0.124139 0.159733 0.579821 -0.285970 \n",
"width 0.188829 0.189867 0.615077 -0.245800 \n",
"height -0.062704 0.259737 -0.087027 -0.309974 \n",
"curb-weight 0.167562 0.156433 0.757976 -0.279361 \n",
"engine-size 0.209523 0.028889 0.822676 -0.256733 \n",
"bore -0.055390 0.001263 0.566936 -0.267392 \n",
"stroke 1.000000 0.187923 0.098462 -0.065713 \n",
"compression-ratio 0.187923 1.000000 -0.214514 -0.435780 \n",
"horsepower 0.098462 -0.214514 1.000000 0.107885 \n",
"peak-rpm -0.065713 -0.435780 0.107885 1.000000 \n",
"city-mpg -0.034696 0.331425 -0.822214 -0.115413 \n",
"highway-mpg -0.035201 0.268465 -0.804575 -0.058598 \n",
"price 0.082310 0.071107 0.809575 -0.101616 \n",
"city-L/100km 0.037300 -0.299372 0.889488 0.115830 \n",
"diesel 0.241303 0.985231 -0.169053 -0.475812 \n",
"gas -0.241303 -0.985231 0.169053 0.475812 \n",
"\n",
" city-mpg highway-mpg price city-L/100km diesel \\\n",
"symboling -0.035527 0.036233 -0.082391 0.066171 -0.196735 \n",
"normalized-losses -0.225016 -0.181877 0.133999 0.238567 -0.101546 \n",
"wheel-base -0.470606 -0.543304 0.584642 0.476153 0.307237 \n",
"length -0.665192 -0.698142 0.690628 0.657373 0.211187 \n",
"width -0.633531 -0.680635 0.751265 0.673363 0.244356 \n",
"height -0.049800 -0.104812 0.135486 0.003811 0.281578 \n",
"curb-weight -0.749543 -0.794889 0.834415 0.785353 0.221046 \n",
"engine-size -0.650546 -0.679571 0.872335 0.745059 0.070779 \n",
"bore -0.582027 -0.591309 0.543155 0.554610 0.054458 \n",
"stroke -0.034696 -0.035201 0.082310 0.037300 0.241303 \n",
"compression-ratio 0.331425 0.268465 0.071107 -0.299372 0.985231 \n",
"horsepower -0.822214 -0.804575 0.809575 0.889488 -0.169053 \n",
"peak-rpm -0.115413 -0.058598 -0.101616 0.115830 -0.475812 \n",
"city-mpg 1.000000 0.972044 -0.686571 -0.949713 0.265676 \n",
"highway-mpg 0.972044 1.000000 -0.704692 -0.930028 0.198690 \n",
"price -0.686571 -0.704692 1.000000 0.789898 0.110326 \n",
"city-L/100km -0.949713 -0.930028 0.789898 1.000000 -0.241282 \n",
"diesel 0.265676 0.198690 0.110326 -0.241282 1.000000 \n",
"gas -0.265676 -0.198690 -0.110326 0.241282 -1.000000 \n",
"\n",
" gas \n",
"symboling 0.196735 \n",
"normalized-losses 0.101546 \n",
"wheel-base -0.307237 \n",
"length -0.211187 \n",
"width -0.244356 \n",
"height -0.281578 \n",
"curb-weight -0.221046 \n",
"engine-size -0.070779 \n",
"bore -0.054458 \n",
"stroke -0.241303 \n",
"compression-ratio -0.985231 \n",
"horsepower 0.169053 \n",
"peak-rpm 0.475812 \n",
"city-mpg -0.265676 \n",
"highway-mpg -0.198690 \n",
"price -0.110326 \n",
"city-L/100km 0.241282 \n",
"diesel -1.000000 \n",
"gas 1.000000 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The diagonal elements are always one; we will study correlation more precisely Pearson correlation in-depth at the end of the notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2: </h1>\n",
"\n",
"<p>Find the correlation between the following columns: bore, stroke,compression-ratio , and horsepower.</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[['bore','stroke' ,'compression-ratio','horsepower']]</p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<bound method DataFrame.corr of bore stroke compression-ratio horsepower\n",
"0 3.47 2.68 9.0 111.0\n",
"1 3.47 2.68 9.0 111.0\n",
"2 2.68 3.47 9.0 154.0\n",
"3 3.19 3.40 10.0 102.0\n",
"4 3.19 3.40 8.0 115.0\n",
".. ... ... ... ...\n",
"196 3.78 3.15 9.5 114.0\n",
"197 3.78 3.15 8.7 160.0\n",
"198 3.58 2.87 8.8 134.0\n",
"199 3.01 3.40 23.0 106.0\n",
"200 3.78 3.15 9.5 114.0\n",
"\n",
"[201 rows x 4 columns]>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[['bore','stroke' ,'compression-ratio','horsepower']].corr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"df[['bore', 'stroke', 'compression-ratio', 'horsepower']].corr() \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Continuous numerical variables:</h2> \n",
"\n",
"<p>Continuous numerical variables are variables that may contain any value within some range. Continuous numerical variables can have the type \"int64\" or \"float64\". A great way to visualize these variables is by using scatterplots with fitted lines.</p>\n",
"\n",
"<p>In order to start understanding the (linear) relationship between an individual variable and the price. We can do this by using \"regplot\", which plots the scatterplot plus the fitted regression line for the data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's see several examples of different linear relationships:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Positive linear relationship</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's find the scatterplot of \"engine-size\" and \"price\" "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 56526.815450837596)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Engine size as potential predictor variable of price\n",
"sns.regplot(x=\"engine-size\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>As the engine-size goes up, the price goes up: this indicates a positive direct correlation between these two variables. Engine size seems like a pretty good predictor of price since the regression line is almost a perfect diagonal line.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can examine the correlation between 'engine-size' and 'price' and see it's approximately 0.87"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>engine-size</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>1.000000</td>\n",
" <td>0.872335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>0.872335</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" engine-size price\n",
"engine-size 1.000000 0.872335\n",
"price 0.872335 1.000000"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[[\"engine-size\", \"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Highway mpg is a potential predictor variable of price "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f4f88dcc9b0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>As the highway-mpg goes up, the price goes down: this indicates an inverse/negative relationship between these two variables. Highway mpg could potentially be a predictor of price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'highway-mpg' and 'price' and see it's approximately -0.704"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" highway-mpg price\n",
"highway-mpg 1.000000 -0.704692\n",
"price -0.704692 1.000000"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['highway-mpg', 'price']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Weak Linear Relationship</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see if \"Peak-rpm\" as a predictor variable of \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f4f88d36668>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Peak rpm does not seem like a good predictor of the price at all since the regression line is close to horizontal. Also, the data points are very scattered and far from the fitted line, showing lots of variability. Therefore it's it is not a reliable variable.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'peak-rpm' and 'price' and see it's approximately -0.101616 "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>peak-rpm</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>1.000000</td>\n",
" <td>-0.101616</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.101616</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" peak-rpm price\n",
"peak-rpm 1.000000 -0.101616\n",
"price -0.101616 1.000000"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['peak-rpm','price']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question 3 a): </h1>\n",
"\n",
"<p>Find the correlation between x=\"stroke\", y=\"price\".</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[[\"stroke\",\"price\"]] </p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>stroke</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>1.00000</td>\n",
" <td>0.08231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>0.08231</td>\n",
" <td>1.00000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" stroke price\n",
"stroke 1.00000 0.08231\n",
"price 0.08231 1.00000"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"df[[\"stroke\",\"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"#The correlation is 0.0823, the non-diagonal elements of the table.\n",
"#code:\n",
"df[[\"stroke\",\"price\"]].corr() \n",
"\n",
"-->"
]
},
{
"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": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fcda7bd1f60>"
]
},
"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": [
"# 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": 15,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f4f88cad898>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.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": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f4f88bfa748>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x=\"engine-location\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Here we see that the distribution of price between these two engine-location categories, front and rear, are distinct enough to take engine-location as a potential good predictor of price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's examine \"drive-wheels\" and \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fcda7ae4a90>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEGCAYAAABPdROvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3df5RV5X3v8fdnYCqoxSgzImE0WCFp0BpymXLJ9dqmUX42KabRhq6bOqvlFmuJmGuz0njbu2rWLV2x96a2Y65Goy5Hk1aoSa/UMhXEGk0uSoaoKBjLpBKdSGAGfwRjQGC+94/9nHIYDsPgmX3OnDmf11pnnb2/ez/7PNsj8z3PfvZ+HkUEZmZm71RDtStgZma1zYnEzMzK4kRiZmZlcSIxM7OyOJGYmVlZxla7ApXW1NQUU6dOrXY1zMxqyubNm/siornUtrpLJFOnTqWrq6va1TAzqymSfnisbb60ZWZmZXEiMTOzsjiRmJlZWZxIzMysLE4ko0hfXx/XXHMNe/bsqXZVzKyOOJGMIh0dHWzZsoWOjo5qV8XM6ogTySjR19dHZ2cnEUFnZ6dbJWZWMbknEkljJD0l6cG0foOkH0l6Or0WFe17vaRuSS9Iml8UnyXp2bStXZJS/CRJq1L8SUlT8z6fkaqjo4PClAD9/f1ulZhZxVSiRXIt8PyA2E0RMTO91gJImgEsAc4HFgC3SBqT9r8VWAZMT68FKb4UeC0ipgE3ATfmeiYj2Pr16zlw4AAABw4cYN26dVWukZnVi1wTiaQW4NeBO4aw+2LgvojYHxEvAt3AbEmTgQkRsTGyn9z3AJcVlSn89L4fuKTQWqk3c+fOpbGxEYDGxkbmzZtX5RqZWb3Iu0Xy18DngP4B8U9L2iLpLkmnp9gU4OWifXpSbEpaHhg/okxEHATeACYOrISkZZK6JHX19vaWeUojU1tbG4Uc2tDQQFtbW5VrZGb1IrdEIumjwO6I2Dxg063AecBMYCfwpUKREoeJQeKDlTkyEHF7RLRGRGtzc8kxx2peU1MTCxcuRBILFy5k4sSj8qmZWS7yHLTxIuA3Umf6OGCCpK9FxKcKO0j6KvBgWu0Bzi4q3wK8kuItJeLFZXokjQVOA17N4VxqQltbGzt27HBrxMwqKrcWSURcHxEtETGVrBP9kYj4VOrzKPg48FxaXgMsSXdinUvWqb4pInYCeyXNSf0fVwIPFJUp/NW8PH3GUS2SetHU1MTNN9/s1oiZVVQ1hpH/S0kzyS5B7QCuAoiIrZJWA9uAg8DyiDiUylwN3A2MBzrTC+BO4F5J3WQtkSUVOgczM0tUbz/gW1tbw/ORmJmdGEmbI6K11DY/2W5mZmVxIjEzs7I4kZiZWVmcSMzMrCxOJGZmVhYnEjMzK4sTiZmZlcWJxMzMyuJEMop4znYzqwYnklHEc7abWTU4kYwSfX19rF27lohg7dq1bpWYWcU4kYwSHR0dHDx4EMim2nWrxMwqxYlklFi3bh2FATgjgoceeqjKNTKzeuFEMkpMmjRp0HUzs7w4kYwSu3btGnTdzCwvTiSjxLx588gmkARJzJ8/v8o1MrN6kXsikTRG0lOSHkzrZ0haL2l7ej+9aN/rJXVLekHS/KL4LEnPpm3tacpd0rS8q1L8SUlT8z6fkaqtrY3GxkYAGhsbPW+7mVVMJVok1wLPF61/HtgQEdOBDWkdSTPIpso9H1gA3CJpTCpzK7CMbB736Wk7wFLgtYiYBtwE3JjvqYxcTU1NLFy4EEksWrTI87abWcXkmkgktQC/DtxRFF4MFO5N7QAuK4rfFxH7I+JFoBuYLWkyMCEiNkZ2W9I9A8oUjnU/cEmhtVKP2trauPDCC90aMbOKyrtF8tfA54D+otikiNgJkN7PTPEpwMtF+/Wk2JS0PDB+RJmIOAi8ARz1U1zSMkldkrp6e3vLPacRq6mpiZtvvtmtETOrqNwSiaSPArsjYvNQi5SIxSDxwcocGYi4PSJaI6K1ubl5iNUxM7OhGJvjsS8CfkPSImAcMEHS14BdkiZHxM502Wp32r8HOLuofAvwSoq3lIgXl+mRNBY4DXg1rxMyM7Oj5dYiiYjrI6IlIqaSdaI/EhGfAtYAhYv4bcADaXkNsCTdiXUuWaf6pnT5a6+kOan/48oBZQrHujx9xlEtEjMzy0+eLZJj+SKwWtJS4CXgCoCI2CppNbANOAgsj4hDqczVwN3AeKAzvQDuBO6V1E3WEllSqZMwM7OM6u0HfGtra3R1dVW7GmZmNUXS5ohoLbXNT7abmVlZnEjMzKwsTiRmZlYWJxIzMyuLE8ko0tfXxzXXXONpds2sopxIRpHbbruNZ555httuu63aVTGzOuJEMkr09fWxfv16IJt2160SM6sUJ5JR4rbbbqO/Pxsbs7+/360SM6sYJ5JRYsOGDUesP/zww1WqiZnVGyeSUWLgCAX1NmKBmVWPE8kocemllx6xPnfu3CrVxMzqjRPJKHHVVVfR0JB9nQ0NDVx11VVVrpGZ1YtqjP5b99rb2+nu7h72444dO5a3336b0047jS984QvDeuxp06axYsWKYT2mmY0ObpGMImPGjKGhoYF3v/vd1a6KmdURt0iqIK9f9oXjtre353J8M7NS8pyzfZykTZKekbRV0hdS/AZJP5L0dHotKipzvaRuSS9Iml8UnyXp2bStPc2USJpNcVWKPylpal7nY2ZmpeV5aWs/8JGI+AAwE1ggaU7adlNEzEyvtQCSZpDNcHg+sAC4RdKYtP+twDKy6Xenp+0AS4HXImIacBNwY47nY2ZmJeQ5Z3tExJtptTG9Bnu4YTFwX0Tsj4gXgW5gtqTJwISI2JjmY78HuKyoTEdavh+4pNBaMTOzysi1s13SGElPA7uB9RHxZNr0aUlbJN0l6fQUmwK8XFS8J8WmpOWB8SPKRMRB4A1gYol6LJPUJamrt7d3mM7OzMwg50QSEYciYibQQta6uIDsMtV5ZJe7dgJfSruXaknEIPHBygysx+0R0RoRrc3NzSd4FmZmNpiK3P4bEa8DjwILImJXSjD9wFeB2Wm3HuDsomItwCsp3lIifkQZSWOB04BXczoNMzMrIc+7tpolvSstjwcuBb6f+jwKPg48l5bXAEvSnVjnknWqb4qIncBeSXNS/8eVwANFZdrS8uXAI+FBpszMKirP50gmAx3pzqsGYHVEPCjpXkkzyS5B7QCuAoiIrZJWA9uAg8DyiDiUjnU1cDcwHuhML4A7gXsldZO1RJbkeD5mZlZCbokkIrYAHywR/51ByqwEVpaIdwEXlIjvA64or6ZmZlYOD5FiZmZlcSIxM7OyOJGYmVlZnEjMzKwsTiRmZlYWJxIzMyuLE4mZmZXFicTMzMriRGJmZmVxIjEzs7I4kZiZWVmcSMzMrCxOJGZmVhYnEjMzK4sTiZmZlcWJxMzMypLnVLvjJG2S9IykrZK+kOJnSFovaXt6P72ozPWSuiW9IGl+UXyWpGfTtvY05S5pWt5VKf6kpKl5nY+ZmZWWZ4tkP/CRiPgAMBNYIGkO8HlgQ0RMBzakdSTNIJsq93xgAXBLmqYX4FZgGdk87tPTdoClwGsRMQ24Cbgxx/MxM7MSckskkXkzrTamVwCLgY4U7wAuS8uLgfsiYn9EvAh0A7MlTQYmRMTGiAjgngFlCse6H7ik0FoxM7PKyLWPRNIYSU8Du4H1EfEkMCkidgKk9zPT7lOAl4uK96TYlLQ8MH5EmYg4CLwBTCxRj2WSuiR19fb2DtfpmZkZOSeSiDgUETOBFrLWxQWD7F6qJRGDxAcrM7Aet0dEa0S0Njc3H6/aZmZ2Aipy11ZEvA48Sta3sStdriK970679QBnFxVrAV5J8ZYS8SPKSBoLnAa8mstJmJlZSXnetdUs6V1peTxwKfB9YA3QlnZrAx5Iy2uAJelOrHPJOtU3pctfeyXNSf0fVw4oUzjW5cAjqR/FzMwqZGyOx54MdKQ7rxqA1RHxoKSNwGpJS4GXgCsAImKrpNXANuAgsDwiDqVjXQ3cDYwHOtML4E7gXkndZC2RJTmej5mZlZBbIomILcAHS8T3AJcco8xKYGWJeBdwVP9KROwjJSIzM6sOP9luZmZlcSIxM7OyOJGYmVlZnEjMzKwsTiRmZlYWJxIzMyuLE4mZmZVlyIlE0nskXZqWx0v6+fyqZWZmtWJIiUTS75MN035bCrUA/zevSpmZWe0YaotkOXAR8BOAiNjO4eHfzcysjg01keyPiLcLK2mkXQ+OaGZmQ04k35L034HxkuYCfw/8Y37VMjOzWjHURPJ5oBd4FrgKWAv8aV6VMjOz2jHU0X/HA3dFxFchm0I3xd7Kq2JmZlYbhtoi2UCWOArGAw8Pf3XMzKzWDDWRjIuINwsrafnkwQpIOlvSv0h6XtJWSdem+A2SfiTp6fRaVFTmekndkl6QNL8oPkvSs2lbe5opkTSb4qoUf1LS1KGfupmZDYehJpKfSvoPhRVJs4CfHafMQeCPIuL9wBxguaQZadtNETEzvdamY84gm+HwfLK53W9Jl9AAbgWWkU2/Oz1tB1gKvBYR04CbgBuHeD5mZjZMhtpH8hng7yW9ktYnA58crECaa31nWt4r6XlgyiBFFgP3RcR+4MU0fe5sSTuACRGxEUDSPcBlZNPtLgZuSOXvB74sSZ633cyscobUIomI7wK/SDZ3+h8C74+IzUP9kHTJ6YPAkyn0aUlbJN0l6fQUmwK8XFSsJ8WmpOWB8SPKRMRB4A1gYonPXyapS1JXb2/vUKttZmZDMGgikfSR9P6bwMeA95JdWvpYih2XpFOBbwCfiYifkF2mOg+YSdZi+VJh1xLFY5D4YGWODETcHhGtEdHa3Nw8lGqbmdkQHa9F8qvp/WMlXh893sElNZIlka9HxDcBImJXRByKiH7gq8DstHsPcHZR8RbglRRvKRE/okx62v404NXj1ctspOnr6+Oaa65hz5491a6K2QkbNJFExJ9JagA6I+J3B7x+b7Cy6c6qO4HnI+KviuKTi3b7OPBcWl4DLEl3Yp1L1vLZlPpa9kqak455JfBAUZm2tHw58Ij7R6wWdXR0sGXLFjo6OqpdFbMTdtw+ktRy+PQ7OPZFwO8AHxlwq+9fplt5twC/Bvy39DlbgdXANuCfgeURcSgd62rgDqAb+AFZRztkiWpi6pi/juwJfLOa0tfXR2dnJxFBZ2enWyVWc4Z619Z6SZ8FVgE/LQQj4piXkSLi25Tuw1g7SJmVwMoS8S7gghLxfcAVg9bcbITr6Oig0JDu7++no6OD6667rsq1Mhu6oT5H8ntkd2t9C+gqeplZmdavX8+BAwcAOHDgAOvWratyjcxOzFATyQzg/wDPAE8DN5M9OGhmZZo7dy6NjY0ANDY2Mm/evCrXyOzEDDWRdADvB9rJksj7U8zMytTW1kYa9YeGhgba2tqOU8JsZBlqInlfRPzXiPiX9FoGvC/PipnVi6amJhYuXIgkFi5cyMSJRz1TazaiDTWRPCVpTmFF0n8EvpNPlczqT1tbGxdeeKFbI1aTNJTHLtI4We8DXkqhc4DngX4gIuLC3Go4zFpbW6Or6/j3CbS3t9Pd3V2BGg2f7du3AzB9+vQq1+TETJs2jRUrVlS7GmY2CEmbI6K11Lah3v674Pi7jC7d3d089ew2+k8+o9pVGTK9nf0o2PyDH1e5JkPX8JYHIjCrdUNKJBHxw7wrMhL1n3wG+2YcdyQYK8O4bQ9WuwpmVqah9pGYmZmV5ERiZmZlcSIxM7OyOJGYmVlZnEjMzKwsTiRmZlYWJxIzMyuLE4mZmZUlt0Qi6WxJ/yLpeUlbJV2b4mdIWi9pe3o/vajM9ZK6Jb0gaX5RfFaaVbFbUnuacpc0Le+qFH9S0tS8zsfMzErLs0VyEPijiHg/MAdYLmkG2XS4GyJiOrAhrZO2LSGb52QBcIukMelYtwLLyOZxn87hIVuWAq9FxDTgJuDGHM/HzMxKyC2RRMTOiPheWt5LNsjjFGAxh+cy6QAuS8uLgfsiYn9EvEg2P/tsSZOBCRGxMbIRJu8ZUKZwrPuBSwqtFTMzq4yK9JGkS04fBJ4EJkXETsiSDXBm2m0K8HJRsZ4Um5KWB8aPKBMRB4E3gKMmc5C0TFKXpK7e3t7hOSkzMwMqkEgknQp8A/hMRPxksF1LxGKQ+GBljgxE3B4RrRHR2tzcfLwqm1VcX18f11xzDXv27Kl2VcxOWK6JRFIjWRL5ekR8M4V3pctVpPfdKd4DnF1UvAV4JcVbSsSPKCNpLHAa4HHJreZ0dHSwZcsWOjo8g7XVnjzv2hJwJ/B8RPxV0aY1QGEauDbggaL4knQn1rlkneqb0uWvvZLmpGNeOaBM4ViXA4/EUGbqMhtB+vr6WLt2LRHB2rVr3SqxmpNni+Qi4HeAj0h6Or0WAV8E5kraDsxN60TEVmA1sA34Z2B5RBxKx7oauIOsA/4HQGeK3wlMlNQNXEe6A8yslnR0dHDw4EEADhw44FaJ1ZyhzpB4wiLi25TuwwC45BhlVgIrS8S7gAtKxPcBV5RRTbOqW7duHYWGdETw0EMPcd1111W5VmZD5yfbzaps0qRJg66bjXROJGZV9uMf/3jQdbORzonErMrOOuusQddt5Kv327edSMyqzC2S2lfvt287kZhVmVskta2vr4/Ozk4igs7OzrpslTiRmFXZrl27Bl23ka2jo+Pf77rr7++vy1aJE4lZlc2bN4/CWKOSmD9//nFK2Eiyfv16Dhw4AGTPAa1bt67KNao8JxKzKmtra2Ps2OyRrsbGRtra2o5TwkaSuXPn0tjYCGTf37x586pco8rL7YHEWtfT00PDW28wbtuD1a7KqNbw1h56eg5WuxpV1dTUxKJFi1izZg2LFi1i4sSjBrC2EaytrY3OzmywjYaGhrr8IeAWidkI0NbWxoUXXliXf4RqXVNTEwsXLkQSCxcurMsfAm6RHENLSwu79o9l34yPVrsqo9q4bQ/S0uK7lJqamrj55purXQ17h9ra2tixY0fd/hBwIjEzK1O9/xDwpS2zEaDen4y22uZEYjYC1PuT0VbbnEjMqsxPRluty3OGxLsk7Zb0XFHsBkk/GjDRVWHb9ZK6Jb0gaX5RfJakZ9O29jRLImkmxVUp/qSkqXmdi1me/GS01bo8O9vvBr4M3DMgflNE/O/igKQZwBLgfODdwMOS3ptmSLwVWAY8AawFFpDNkLgUeC0ipklaAtwIfDK/0zGD9vZ2uru7h/WYW7Zsob+/H8iejF6zZg07duwY1s+YNm0aK1asGNZjmhXk1iKJiMeAV4e4+2LgvojYHxEvkk2pO1vSZGBCRGxMc7HfA1xWVKbw0+1+4JJCa8Wslpx++umDrpuNdNW4/ffTkq4EuoA/iojXgClkLY6CnhQ7kJYHxknvLwNExEFJbwATgb6BHyhpGVmrhnPOOWdYT8bqSx6/6vv6+vjEJz5BRHDSSSdxxx131OVDbVa7Kt3ZfitwHjAT2Al8KcVLtSRikPhgZY4ORtweEa0R0drc3HxiNTbLWVNTE2eccQZA3T4ZbbWtookkInZFxKGI6Ae+CsxOm3qAs4t2bQFeSfGWEvEjykgaC5zG0C+lmY0oZ511FqecckrdPhltta2iiST1eRR8HCjc0bUGWJLuxDoXmA5sioidwF5Jc1L/x5XAA0VlCv/qLgceicKtL2Y1prGxkenTp7s1YjUptz4SSX8HfBhoktQD/BnwYUkzyS5B7QCuAoiIrZJWA9uAg8DydMcWwNVkd4CNJ7tbqzPF7wTuldRN1hJZkte5mJnZseWWSCLit0uE7xxk/5XAyhLxLuCCEvF9wBXl1NHMzMrnJ9vNzKwsHv13EA1vvVpTE1tp308AiHETqlyToWt461XAw8ib1TInkmOYNm1atatwwrZv3wvA9PNq6Q/zWTX539rMDnMiOYZaHE6iUOf29vYq18TM6on7SMzMrCxOJGZmVhYnEjMzK4sTiZmZlcWJxMzMyuJEYmZmZfHtv2ZWN/KY4RKgpyebNqmlpeU4e564Wpjd0onEzEaUvP7YQ/YH/2c/+9mwH7dwzDyO3dPTk9t/j+FKUk4kZjaidHd389TWp+BdORxcwMk5HLc/e3vz5DeH/dBv8ia9P+od9uPy+vAdyonEzEaed0H/h/urXYtRreHR4esid2e7mZmVxYnEzMzKkucMiXcBHwV2R8QFKXYGsAqYSjZD4m9FxGtp2/XAUuAQsCIiHkrxWRyeIXEtcG1EhKSTgHuAWcAe4JMRsSOv87HakmeHbR62b98O1N5gobVwR5HlL88+kruBL5P9sS/4PLAhIr4o6fNp/Y8lzSCbKvd84N3Aw5Lem6bbvRVYBjxBlkgWkE23uxR4LSKmSVoC3Ah8MsfzsRrS3d3Nvz73Pc459dDxdx4Bfu5AdnFg347vVrkmQ/fSm2OqXQUbIfKcavcxSVMHhBeTzeMO0AE8Cvxxit8XEfuBF9M87LMl7QAmRMRGAEn3AJeRJZLFwA3pWPcDX5akiIh8zshqzTmnHuJPW4f/LhrL/HnXqdWugo0Qle4jmRQROwHS+5kpPgV4uWi/nhSbkpYHxo8oExEHgTeAiaU+VNIySV2Sunp7c7iNzsysjo2UznaViMUg8cHKHB2MuD0iWiOitbm5+R1W0czMSql0ItklaTJAet+d4j3A2UX7tQCvpHhLifgRZSSNBU4DXs2t5mZmVlKlE8kaoC0ttwEPFMWXSDpJ0rnAdGBTuvy1V9IcSQKuHFCmcKzLgUfcP2JmVnl53v77d2Qd602SeoA/A74IrJa0FHgJuAIgIrZKWg1sAw4Cy9MdWwBXc/j23870ArgTuDd1zL9KdteXmdW4np4eeGN4n7y2El6Hnug5/n5DkOddW799jE2XHGP/lcDKEvEu4IIS8X2kRGRmZtXjsbbMbERpaWmhV70eaytnDY820DJleIa9d9vRzMzK4haJjUo9PT38dO8YPzSXox/uHcMpPcNzjd1qmxOJmY08r9dYZ3thAIVa+t3yOocf7y6TE4mNSi0tLew7uNNDpOToz7tOZVxOU8vWmsKgm9OnTK9yTU7AlOH7b+1EYmYjSp6jCdfaqNBQGyMsO5GYmZVp/Pjx1a5CVTmRmFndGOm/7GuVE4mNWi+9WTt3be16K+tYnnRy7Tw78dKbY3hvtSthI4ITSRXkdZ02z1n2auE6bbFa67B9O31346bWTmfte6m9/86WDyeSUaTer9MWq6WkB4fr297eXuWamJ04J5IqqLU/cmZmg6mhJ37MzGwkciIxM7OyOJGYmVlZqpJIJO2Q9KykpyV1pdgZktZL2p7eTy/a/3pJ3ZJekDS/KD4rHadbUnuaRdHMzCqomi2SX4uImRHRmtY/D2yIiOnAhrSOpBlksx+eDywAbpE0JpW5FVhGNjXv9LTdzMwqaCTdtbWYbGpegA7gUeCPU/y+iNgPvJim1p0taQcwISI2Aki6B7iMw1Pxmg27WnwGCGrvOSCrLdVqkQSwTtJmSctSbFJE7ARI72em+BTg5aKyPSk2JS0PjB9F0jJJXZK6ent7h/E0zIbH+PHj/RyQ1axqtUguiohXJJ0JrJf0/UH2LdXvEYPEjw5G3A7cDtDa2lpyH7Oh8K96s6NVpUUSEa+k993APwCzgV2SJgOk991p9x7g7KLiLcArKd5SIm5mZhVU8UQi6RRJP19YBuYBzwFrgLa0WxvwQFpeAyyRdJKkc8k61Tely197Jc1Jd2tdWVTGzMwqpBqXtiYB/5Du1B0L/G1E/LOk7wKrJS0FXgKuAIiIrZJWA9uAg8DyiDiUjnU1cDcwnqyT3R3tZmYVpoj66jJobW2Nrq6ualfDzKymSNpc9LjGEfxku5mZlcWJxMzMyuJEYmZmZXEiMTOzstRdZ7ukXuCH1a5HjpqAvmpXwt4Rf3e1bbR/f++JiOZSG+oukYx2krqOdWeFjWz+7mpbPX9/vrRlZmZlcSIxM7OyOJGMPrdXuwL2jvm7q211+/25j8TMzMriFomZmZXFicTMzMriRFInJH1Y0oPVrke9k7RC0vOSvn6C5R6VVJe3lo4UksZIeuqd/juS9OZw12mkGElzttsJSHOwKCL6q10XOyF/CCyMiBerXRE7YdcCzwMTql2RkcYtkhoiaWr6NXsL8G/AnSl+raR/S8vnSfp2Wl4g6ftp/TerVnEDQNJXgF8A1kjaK+ldyuyRdGXa515Jl0oaL+k+SVskrSKbc8eqRFIL8OvAHWn9TEmb0/IHJIWkc9L6DySdLOlcSRslfVfS/6xe7fPnRFJ73gfcA3wIuCDFLgb2SJoC/GfgcUnjgK8CH0vbz6pCXa1IRPwB2XTQvwZ8HbgIOJ/sR8HFabc5wBNkk7a9FREXAiuBWRWvsBX7a+BzQD/8+zTh4yRNIPvuuoCLJb0H2B0RbwF/A9waEb8M/Lg61a4MJ5La88OIeCIifgycmqYtPhv4W+BXyP6nfhz4ReDFiNge2T3eX6taja2Ux8m+r18BbgV+Kf0QeDUi3kzxrwFExBZgS7UqWu8kfZQsOWwesOn/kf0Y+BXgLzjy3x9p29+l5XsrUNWqcSKpPT8tWt4I/C7wAtn/vBeTtVS+k7b7IaGR6zGy7+ti4FGgF7icw3+EwN/fSHER8BuSdgD3AR+R9DUO/5t7D/AA8AGyKwKPFZWti+/QiaS2PQZ8Nr0/RXbJZH9EvAF8HzhX0nlp39+uThWtlIh4mWy02OkR8W/At8m+y0IieQz4LwCSLgAurEY9DSLi+ohoiYipwBLgkYj4FNl39Clge7rp5VVgEYd/yH0n7Q/puxytnEhq2+Nkl7Uei4hDwMtkf5CIiH3AMuCfUmf7aB46v1Y9CfxrWn4cmEL6/sgud50qaQvZtflNla+eDSYidqTFQgvk28DrEfFaWr8WWC7pu8BpFa5eRXmIFDMzK4tbJGZmVhYnEjMzK4sTiZmZlcWJxMzMyuJEYmZmZXEiMRuEpBskfbZE/A8K42NVoA7DMmqsR4C2vHj0X7MTJGlsRHyl2vUwGyncIjEbQNKfSHpB0sNkg2QW5gP5C0nfAq4ttFQkvV/SpqKyU9NDhEiaJelbkjZLekjS5BKf9TlJK1DB9UkAAAJ8SURBVNLyTZIeScuXpGE4CvutlPSMpCckTUqxZknfSKPLflfSRSl+iqS7UuwpSYtLfO6vSno6vZ5KY7aZvSNOJGZFJM0iG9big2RD7/9y0eZ3RcSvRsSXCoGIeB74OUm/kEKfBFZLagRuBi6PiFnAXWSj+A5UGHMLoJXsafZG0ijOKX4K8EREfCDt//sp/jfATWl02U+QhjgH/oRsGI9fJhs2539JOmXA534WWB4RM9Pn/+z4/3XMSvOlLbMjXQz8QxoGHElriratOkaZ1cBvAV8kSySfJGvJXACsz+YgYwyws0TZzcCs1CLYD3yPLKFcDKxI+7wNPFi0/9y0fCkwIx0fYEI6zjyyQQYLfTvjgHMGfO53gL9KMzV+MyJ6jnFuZsflRGJ2tGONG/TTY8RXAX8v6ZtARMR2Sb8EbI2IDxXvKOls4B/T6lci4itpVNnfJRuWfAtZK+I8stn4AA7E4bGMDnH4320D8KGIOKI1kWbP/EREvDAgPunfTzDii5L+iWyQwSckXRoR3z/G+ZkNype2zI70GPDxNEPhz5NNDDaoiPgB2R/4/8HhVssLQLOkDwFIapR0fkS8HBEz06vQYV88ivPjwB8AT8fxB8JbB3y6sCJpZlp8CLgmJRQkfXBgQUnnRcSzEXEj2aRMv3i88zQ7FicSsyIR8T2yZPA08A2OnB9kMKvIhhRfnY7zNtn8IjdKeiYd7z8do+zjwGRgY0TsAvYN8XNXAK1pOt5tZAkI4H8CjcAWSc+l9YE+I+m5VLefAZ1D+Dyzkjz6r5mZlcUtEjMzK4sTiZmZlcWJxMzMyuJEYmZmZXEiMTOzsjiRmJlZWZxIzMysLP8fRUwm+ji5VB8AAAAASUVORK5CYII=\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": 17,
"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": 17,
"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": 18,
"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": 18,
"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": 19,
"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": 19,
"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": 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>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": 20,
"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": 21,
"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": 21,
"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": 22,
"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": 22,
"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": 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>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": 23,
"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": 24,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array(['rwd', 'fwd', '4wd'], dtype=object)"
]
},
"execution_count": 24,
"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": 25,
"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": 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>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": 26,
"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": 27,
"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": 27,
"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": 28,
"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": 28,
"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": 29,
"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": 29,
"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": 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 th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>convertible</td>\n",
" <td>21890.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>hardtop</td>\n",
" <td>22208.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>hatchback</td>\n",
" <td>9957.441176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>sedan</td>\n",
" <td>14459.755319</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>wagon</td>\n",
" <td>12371.960000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" body-style price\n",
"0 convertible 21890.500000\n",
"1 hardtop 22208.500000\n",
"2 hatchback 9957.441176\n",
"3 sedan 14459.755319\n",
"4 wagon 12371.960000"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \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"
]
},
{
"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": 32,
"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": 33,
"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": 34,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"im = ax.pcolor(grouped_pivot, cmap='RdBu')\n",
"\n",
"#label names\n",
"row_labels = grouped_pivot.columns.levels[1]\n",
"col_labels = grouped_pivot.index\n",
"\n",
"#move ticks and labels to the center\n",
"ax.set_xticks(np.arange(grouped_pivot.shape[1]) + 0.5, minor=False)\n",
"ax.set_yticks(np.arange(grouped_pivot.shape[0]) + 0.5, minor=False)\n",
"\n",
"#insert labels\n",
"ax.set_xticklabels(row_labels, minor=False)\n",
"ax.set_yticklabels(col_labels, minor=False)\n",
"\n",
"#rotate label if too long\n",
"plt.xticks(rotation=90)\n",
"\n",
"fig.colorbar(im)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Visualization is very important in data science, and Python visualization packages provide great freedom. We will go more in-depth in a separate Python Visualizations course.</p>\n",
"\n",
"<p>The main question we want to answer in this module, is \"What are the main characteristics which have the most impact on the car price?\".</p>\n",
"\n",
"<p>To get a better measure of the important characteristics, we look at the correlation of these variables with the car price, in other words: how is the car price dependent on this variable?</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"correlation_causation\">5. Correlation and Causation</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><b>Correlation</b>: a measure of the extent of interdependence between variables.</p>\n",
"\n",
"<p><b>Causation</b>: the relationship between cause and effect between two variables.</p>\n",
"\n",
"<p>It is important to know the difference between these two and that correlation does not imply causation. Determining correlation is much simpler the determining causation as causation may require independent experimentation.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p3>Pearson Correlation</p>\n",
"<p>The Pearson Correlation measures the linear dependence between two variables X and Y.</p>\n",
"<p>The resulting coefficient is a value between -1 and 1 inclusive, where:</p>\n",
"<ul>\n",
" <li><b>1</b>: Total positive linear correlation.</li>\n",
" <li><b>0</b>: No linear correlation, the two variables most likely do not affect each other.</li>\n",
" <li><b>-1</b>: Total negative linear correlation.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Pearson Correlation is the default method of the function \"corr\". Like before we can calculate the Pearson Correlation of the of the 'int64' or 'float64' variables.</p>"
]
},
{
"cell_type": "code",
"execution_count": 35,
"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": 35,
"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": 36,
"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": 37,
"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": 38,
"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": 39,
"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": 40,
"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": 41,
"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": 42,
"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": 43,
"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": 44,
"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": 48,
"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": 45,
"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": 45,
"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": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>13495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>13950.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4wd</td>\n",
" <td>sedan</td>\n",
" <td>17450.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>196</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>16845.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>197</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>19045.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>198</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21485.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>199</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>22470.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>200</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>22625.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>201 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" drive-wheels body-style price\n",
"0 rwd convertible 13495.0\n",
"1 rwd convertible 16500.0\n",
"2 rwd hatchback 16500.0\n",
"3 fwd sedan 13950.0\n",
"4 4wd sedan 17450.0\n",
".. ... ... ...\n",
"196 rwd sedan 16845.0\n",
"197 rwd sedan 19045.0\n",
"198 rwd sedan 21485.0\n",
"199 rwd sedan 22470.0\n",
"200 rwd sedan 22625.0\n",
"\n",
"[201 rows x 3 columns]"
]
},
"execution_count": 46,
"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": 47,
"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": 47,
"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": 48,
"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": 50,
"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": 51,
"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": 53,
"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/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment