Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save oluwaseunolusanya/3ad73703d39a40ddb3ab5a0370f7e422 to your computer and use it in GitHub Desktop.
Save oluwaseunolusanya/3ad73703d39a40ddb3ab5a0370f7e422 to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/corsera_da0101en_notebook_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size = 5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Exploratory Data Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Welcome!</h3>\n",
"In this section, we will explore several methods to see if certain characteristics or features can be used to predict car price. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Table of content</h2>\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"<ol>\n",
" <li><a href=\"#import_data\">Import Data from Module</a></li>\n",
" <li><a href=\"#pattern_visualization\">Analyzing Individual Feature Patterns using Visualization</a></li>\n",
" <li><a href=\"#discriptive_statistics\">Descriptive Statistical Analysis</a></li>\n",
" <li><a href=\"#basic_grouping\">Basics of Grouping</a></li>\n",
" <li><a href=\"#correlation_causation\">Correlation and Causation</a></li>\n",
" <li><a href=\"#anova\">ANOVA</a></li>\n",
"</ol>\n",
" \n",
"Estimated Time Needed: <strong>30 min</strong>\n",
"</div>\n",
" \n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What are the main characteristics which have the most impact on the car price?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"import_data\">1. Import Data from Module 2</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage"
]
},
{
"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>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": 6,
"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": 14,
"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": [
"float64"
]
},
{
"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 with Pearson correlation in-depth at the end of the notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2: </h1>\n",
"\n",
"<p>Find the correlation between the following columns: bore, stroke,compression-ratio , and horsepower.</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[['bore','stroke' ,'compression-ratio','horsepower']]</p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" bore stroke compression-ratio horsepower\n",
"bore 1.000000 -0.055390 0.001263 0.566936\n",
"stroke -0.055390 1.000000 0.187923 0.098462\n",
"compression-ratio 0.001263 0.187923 1.000000 -0.214514\n",
"horsepower 0.566936 0.098462 -0.214514 1.000000"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[[\"bore\",\"stroke\",\"compression-ratio\",\"horsepower\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {
"jupyter": {
"source_hidden": true
}
},
"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, 56238.08736048201)"
]
},
"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": 15,
"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": 15,
"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": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fca54683ef0>"
]
},
"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.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": 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>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": 17,
"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": 18,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fca580ad5c0>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.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": 19,
"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": 19,
"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": 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>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": 20,
"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": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fca54613f28>"
]
},
"execution_count": 23,
"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": 24,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fca54530278>"
]
},
"execution_count": 24,
"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": 7,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f95ca170e10>"
]
},
"execution_count": 7,
"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": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f95ca058b70>"
]
},
"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": [
"# 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": 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>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": 9,
"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": 10,
"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": 10,
"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": 14,
"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": 14,
"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": 15,
"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": 15,
"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": 16,
"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": 16,
"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": 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>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": 17,
"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": 18,
"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": 18,
"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": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array(['rwd', 'fwd', '4wd'], dtype=object)"
]
},
"execution_count": 19,
"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": 20,
"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": 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>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": 21,
"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": 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>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": 22,
"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": 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 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": 23,
"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": 24,
"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": 24,
"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": 32,
"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": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"body_price_df = df[[\"body-style\",\"price\"]]\n",
"body_price_df.groupby([\"body-style\"],as_index=False).mean()\n"
]
},
{
"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": 33,
"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": 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": [
"#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": 35,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"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": 36,
"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": 36,
"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": 37,
"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": 38,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.584641822265508 with a P-value of P = 8.076488270733218e-20\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['wheel-base'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between wheel-base and price is statistically significant, although the linear relationship isn't extremely strong (~0.585)</p>"
]
},
{
"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": 39,
"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.369057428260101e-48\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['horsepower'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"\n",
"<p>Since the p-value is $<$ 0.001, the correlation between horsepower and price is statistically significant, and the linear relationship is quite strong (~0.809, close to 1)</p>"
]
},
{
"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": 40,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.6906283804483638 with a P-value of P = 8.016477466159556e-30\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['length'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between length and price is statistically significant, and the linear relationship is moderately strong (~0.691).</p>"
]
},
{
"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": 41,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.7512653440522673 with a P-value of P = 9.200335510481646e-38\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['width'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Conclusion:\n",
"\n",
"Since the p-value is < 0.001, the correlation between width and price is statistically significant, and the linear relationship is quite strong (~0.751)."
]
},
{
"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": 42,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8344145257702843 with a P-value of P = 2.189577238894065e-53\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['curb-weight'], df['price'])\n",
"print( \"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between curb-weight and price is statistically significant, and the linear relationship is quite strong (~0.834).</p>"
]
},
{
"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": 43,
"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.265491622198389e-64\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['engine-size'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"\n",
"<p>Since the p-value is $<$ 0.001, the correlation between engine-size and price is statistically significant, and the linear relationship is very strong (~0.872).</p>"
]
},
{
"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": 44,
"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.049189483935489e-17\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['bore'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between bore and price is statistically significant, but the linear relationship is only moderate (~0.521).</p>"
]
},
{
"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": 45,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is -0.6865710067844678 with a P-value of P = 2.321132065567641e-29\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['city-mpg'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between city-mpg and price is statistically significant, and the coefficient of ~ -0.687 shows that the relationship is negative and moderately strong.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Highway-mpg vs Price</h3>"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is -0.704692265058953 with a P-value of P = 1.7495471144476358e-31\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['highway-mpg'], df['price'])\n",
"print( \"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Conclusion:\n",
"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 our calculated score value is.</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": 47,
"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": 47,
"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": 48,
"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": 48,
"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": 49,
"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": 49,
"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": 50,
"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": 51,
"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": 52,
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment