Skip to content

Instantly share code, notes, and snippets.

@HovigA
Created May 13, 2020 08:18
Show Gist options
  • Save HovigA/f98145d8c214213142e639f045241468 to your computer and use it in GitHub Desktop.
Save HovigA/f98145d8c214213142e639f045241468 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": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>hatchback</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"path='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"pattern_visualization\">2. Analyzing Individual Feature Patterns using Visualization</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To install seaborn we use the pip which is the python package manager."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"! pip install seaborn"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import visualization packages \"Matplotlib\" and \"Seaborn\", don't forget about \"%matplotlib inline\" to plot in a Jupyter notebook."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How to choose the right visualization method?</h4>\n",
"<p>When visualizing individual variables, it is important to first understand what type of variable you are dealing with. This will help us find the right visualization method for that variable.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"symboling int64\n",
"normalized-losses int64\n",
"make object\n",
"aspiration object\n",
"num-of-doors object\n",
"body-style object\n",
"drive-wheels object\n",
"engine-location object\n",
"wheel-base float64\n",
"length float64\n",
"width float64\n",
"height float64\n",
"curb-weight int64\n",
"engine-type object\n",
"num-of-cylinders object\n",
"engine-size int64\n",
"fuel-system object\n",
"bore float64\n",
"stroke float64\n",
"compression-ratio float64\n",
"horsepower float64\n",
"peak-rpm float64\n",
"city-mpg int64\n",
"highway-mpg int64\n",
"price float64\n",
"city-L/100km float64\n",
"horsepower-binned object\n",
"diesel int64\n",
"gas int64\n",
"dtype: object\n"
]
}
],
"source": [
"# list the data types for each column\n",
"print(df.dtypes)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h3>Question #1:</h3>\n",
"\n",
"<b>What is the data type of the column \"peak-rpm\"? </b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"float64\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"for example, we can calculate the correlation between variables of type \"int64\" or \"float64\" using the method \"corr\":"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>symboling</th>\n",
" <td>1.000000</td>\n",
" <td>0.466264</td>\n",
" <td>-0.535987</td>\n",
" <td>-0.365404</td>\n",
" <td>-0.242423</td>\n",
" <td>-0.550160</td>\n",
" <td>-0.233118</td>\n",
" <td>-0.110581</td>\n",
" <td>-0.140019</td>\n",
" <td>-0.008245</td>\n",
" <td>-0.182196</td>\n",
" <td>0.075819</td>\n",
" <td>0.279740</td>\n",
" <td>-0.035527</td>\n",
" <td>0.036233</td>\n",
" <td>-0.082391</td>\n",
" <td>0.066171</td>\n",
" <td>-0.196735</td>\n",
" <td>0.196735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>normalized-losses</th>\n",
" <td>0.466264</td>\n",
" <td>1.000000</td>\n",
" <td>-0.056661</td>\n",
" <td>0.019424</td>\n",
" <td>0.086802</td>\n",
" <td>-0.373737</td>\n",
" <td>0.099404</td>\n",
" <td>0.112360</td>\n",
" <td>-0.029862</td>\n",
" <td>0.055563</td>\n",
" <td>-0.114713</td>\n",
" <td>0.217299</td>\n",
" <td>0.239543</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.181877</td>\n",
" <td>0.133999</td>\n",
" <td>0.238567</td>\n",
" <td>-0.101546</td>\n",
" <td>0.101546</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wheel-base</th>\n",
" <td>-0.535987</td>\n",
" <td>-0.056661</td>\n",
" <td>1.000000</td>\n",
" <td>0.876024</td>\n",
" <td>0.814507</td>\n",
" <td>0.590742</td>\n",
" <td>0.782097</td>\n",
" <td>0.572027</td>\n",
" <td>0.493244</td>\n",
" <td>0.158502</td>\n",
" <td>0.250313</td>\n",
" <td>0.371147</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.543304</td>\n",
" <td>0.584642</td>\n",
" <td>0.476153</td>\n",
" <td>0.307237</td>\n",
" <td>-0.307237</td>\n",
" </tr>\n",
" <tr>\n",
" <th>length</th>\n",
" <td>-0.365404</td>\n",
" <td>0.019424</td>\n",
" <td>0.876024</td>\n",
" <td>1.000000</td>\n",
" <td>0.857170</td>\n",
" <td>0.492063</td>\n",
" <td>0.880665</td>\n",
" <td>0.685025</td>\n",
" <td>0.608971</td>\n",
" <td>0.124139</td>\n",
" <td>0.159733</td>\n",
" <td>0.579821</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.698142</td>\n",
" <td>0.690628</td>\n",
" <td>0.657373</td>\n",
" <td>0.211187</td>\n",
" <td>-0.211187</td>\n",
" </tr>\n",
" <tr>\n",
" <th>width</th>\n",
" <td>-0.242423</td>\n",
" <td>0.086802</td>\n",
" <td>0.814507</td>\n",
" <td>0.857170</td>\n",
" <td>1.000000</td>\n",
" <td>0.306002</td>\n",
" <td>0.866201</td>\n",
" <td>0.729436</td>\n",
" <td>0.544885</td>\n",
" <td>0.188829</td>\n",
" <td>0.189867</td>\n",
" <td>0.615077</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.680635</td>\n",
" <td>0.751265</td>\n",
" <td>0.673363</td>\n",
" <td>0.244356</td>\n",
" <td>-0.244356</td>\n",
" </tr>\n",
" <tr>\n",
" <th>height</th>\n",
" <td>-0.550160</td>\n",
" <td>-0.373737</td>\n",
" <td>0.590742</td>\n",
" <td>0.492063</td>\n",
" <td>0.306002</td>\n",
" <td>1.000000</td>\n",
" <td>0.307581</td>\n",
" <td>0.074694</td>\n",
" <td>0.180449</td>\n",
" <td>-0.062704</td>\n",
" <td>0.259737</td>\n",
" <td>-0.087027</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.104812</td>\n",
" <td>0.135486</td>\n",
" <td>0.003811</td>\n",
" <td>0.281578</td>\n",
" <td>-0.281578</td>\n",
" </tr>\n",
" <tr>\n",
" <th>curb-weight</th>\n",
" <td>-0.233118</td>\n",
" <td>0.099404</td>\n",
" <td>0.782097</td>\n",
" <td>0.880665</td>\n",
" <td>0.866201</td>\n",
" <td>0.307581</td>\n",
" <td>1.000000</td>\n",
" <td>0.849072</td>\n",
" <td>0.644060</td>\n",
" <td>0.167562</td>\n",
" <td>0.156433</td>\n",
" <td>0.757976</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.794889</td>\n",
" <td>0.834415</td>\n",
" <td>0.785353</td>\n",
" <td>0.221046</td>\n",
" <td>-0.221046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>-0.110581</td>\n",
" <td>0.112360</td>\n",
" <td>0.572027</td>\n",
" <td>0.685025</td>\n",
" <td>0.729436</td>\n",
" <td>0.074694</td>\n",
" <td>0.849072</td>\n",
" <td>1.000000</td>\n",
" <td>0.572609</td>\n",
" <td>0.209523</td>\n",
" <td>0.028889</td>\n",
" <td>0.822676</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.679571</td>\n",
" <td>0.872335</td>\n",
" <td>0.745059</td>\n",
" <td>0.070779</td>\n",
" <td>-0.070779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>-0.140019</td>\n",
" <td>-0.029862</td>\n",
" <td>0.493244</td>\n",
" <td>0.608971</td>\n",
" <td>0.544885</td>\n",
" <td>0.180449</td>\n",
" <td>0.644060</td>\n",
" <td>0.572609</td>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.591309</td>\n",
" <td>0.543155</td>\n",
" <td>0.554610</td>\n",
" <td>0.054458</td>\n",
" <td>-0.054458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.008245</td>\n",
" <td>0.055563</td>\n",
" <td>0.158502</td>\n",
" <td>0.124139</td>\n",
" <td>0.188829</td>\n",
" <td>-0.062704</td>\n",
" <td>0.167562</td>\n",
" <td>0.209523</td>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.034696</td>\n",
" <td>-0.035201</td>\n",
" <td>0.082310</td>\n",
" <td>0.037300</td>\n",
" <td>0.241303</td>\n",
" <td>-0.241303</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>-0.182196</td>\n",
" <td>-0.114713</td>\n",
" <td>0.250313</td>\n",
" <td>0.159733</td>\n",
" <td>0.189867</td>\n",
" <td>0.259737</td>\n",
" <td>0.156433</td>\n",
" <td>0.028889</td>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" <td>-0.435780</td>\n",
" <td>0.331425</td>\n",
" <td>0.268465</td>\n",
" <td>0.071107</td>\n",
" <td>-0.299372</td>\n",
" <td>0.985231</td>\n",
" <td>-0.985231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.075819</td>\n",
" <td>0.217299</td>\n",
" <td>0.371147</td>\n",
" <td>0.579821</td>\n",
" <td>0.615077</td>\n",
" <td>-0.087027</td>\n",
" <td>0.757976</td>\n",
" <td>0.822676</td>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" <td>0.107885</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.804575</td>\n",
" <td>0.809575</td>\n",
" <td>0.889488</td>\n",
" <td>-0.169053</td>\n",
" <td>0.169053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>0.279740</td>\n",
" <td>0.239543</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.435780</td>\n",
" <td>0.107885</td>\n",
" <td>1.000000</td>\n",
" <td>-0.115413</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" <td>0.115830</td>\n",
" <td>-0.475812</td>\n",
" <td>0.475812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-mpg</th>\n",
" <td>-0.035527</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.034696</td>\n",
" <td>0.331425</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.115413</td>\n",
" <td>1.000000</td>\n",
" <td>0.972044</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.949713</td>\n",
" <td>0.265676</td>\n",
" <td>-0.265676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>0.036233</td>\n",
" <td>-0.181877</td>\n",
" <td>-0.543304</td>\n",
" <td>-0.698142</td>\n",
" <td>-0.680635</td>\n",
" <td>-0.104812</td>\n",
" <td>-0.794889</td>\n",
" <td>-0.679571</td>\n",
" <td>-0.591309</td>\n",
" <td>-0.035201</td>\n",
" <td>0.268465</td>\n",
" <td>-0.804575</td>\n",
" <td>-0.058598</td>\n",
" <td>0.972044</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" <td>-0.930028</td>\n",
" <td>0.198690</td>\n",
" <td>-0.198690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.082391</td>\n",
" <td>0.133999</td>\n",
" <td>0.584642</td>\n",
" <td>0.690628</td>\n",
" <td>0.751265</td>\n",
" <td>0.135486</td>\n",
" <td>0.834415</td>\n",
" <td>0.872335</td>\n",
" <td>0.543155</td>\n",
" <td>0.082310</td>\n",
" <td>0.071107</td>\n",
" <td>0.809575</td>\n",
" <td>-0.101616</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" <td>0.789898</td>\n",
" <td>0.110326</td>\n",
" <td>-0.110326</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-L/100km</th>\n",
" <td>0.066171</td>\n",
" <td>0.238567</td>\n",
" <td>0.476153</td>\n",
" <td>0.657373</td>\n",
" <td>0.673363</td>\n",
" <td>0.003811</td>\n",
" <td>0.785353</td>\n",
" <td>0.745059</td>\n",
" <td>0.554610</td>\n",
" <td>0.037300</td>\n",
" <td>-0.299372</td>\n",
" <td>0.889488</td>\n",
" <td>0.115830</td>\n",
" <td>-0.949713</td>\n",
" <td>-0.930028</td>\n",
" <td>0.789898</td>\n",
" <td>1.000000</td>\n",
" <td>-0.241282</td>\n",
" <td>0.241282</td>\n",
" </tr>\n",
" <tr>\n",
" <th>diesel</th>\n",
" <td>-0.196735</td>\n",
" <td>-0.101546</td>\n",
" <td>0.307237</td>\n",
" <td>0.211187</td>\n",
" <td>0.244356</td>\n",
" <td>0.281578</td>\n",
" <td>0.221046</td>\n",
" <td>0.070779</td>\n",
" <td>0.054458</td>\n",
" <td>0.241303</td>\n",
" <td>0.985231</td>\n",
" <td>-0.169053</td>\n",
" <td>-0.475812</td>\n",
" <td>0.265676</td>\n",
" <td>0.198690</td>\n",
" <td>0.110326</td>\n",
" <td>-0.241282</td>\n",
" <td>1.000000</td>\n",
" <td>-1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>gas</th>\n",
" <td>0.196735</td>\n",
" <td>0.101546</td>\n",
" <td>-0.307237</td>\n",
" <td>-0.211187</td>\n",
" <td>-0.244356</td>\n",
" <td>-0.281578</td>\n",
" <td>-0.221046</td>\n",
" <td>-0.070779</td>\n",
" <td>-0.054458</td>\n",
" <td>-0.241303</td>\n",
" <td>-0.985231</td>\n",
" <td>0.169053</td>\n",
" <td>0.475812</td>\n",
" <td>-0.265676</td>\n",
" <td>-0.198690</td>\n",
" <td>-0.110326</td>\n",
" <td>0.241282</td>\n",
" <td>-1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses wheel-base length \\\n",
"symboling 1.000000 0.466264 -0.535987 -0.365404 \n",
"normalized-losses 0.466264 1.000000 -0.056661 0.019424 \n",
"wheel-base -0.535987 -0.056661 1.000000 0.876024 \n",
"length -0.365404 0.019424 0.876024 1.000000 \n",
"width -0.242423 0.086802 0.814507 0.857170 \n",
"height -0.550160 -0.373737 0.590742 0.492063 \n",
"curb-weight -0.233118 0.099404 0.782097 0.880665 \n",
"engine-size -0.110581 0.112360 0.572027 0.685025 \n",
"bore -0.140019 -0.029862 0.493244 0.608971 \n",
"stroke -0.008245 0.055563 0.158502 0.124139 \n",
"compression-ratio -0.182196 -0.114713 0.250313 0.159733 \n",
"horsepower 0.075819 0.217299 0.371147 0.579821 \n",
"peak-rpm 0.279740 0.239543 -0.360305 -0.285970 \n",
"city-mpg -0.035527 -0.225016 -0.470606 -0.665192 \n",
"highway-mpg 0.036233 -0.181877 -0.543304 -0.698142 \n",
"price -0.082391 0.133999 0.584642 0.690628 \n",
"city-L/100km 0.066171 0.238567 0.476153 0.657373 \n",
"diesel -0.196735 -0.101546 0.307237 0.211187 \n",
"gas 0.196735 0.101546 -0.307237 -0.211187 \n",
"\n",
" width height curb-weight engine-size bore \\\n",
"symboling -0.242423 -0.550160 -0.233118 -0.110581 -0.140019 \n",
"normalized-losses 0.086802 -0.373737 0.099404 0.112360 -0.029862 \n",
"wheel-base 0.814507 0.590742 0.782097 0.572027 0.493244 \n",
"length 0.857170 0.492063 0.880665 0.685025 0.608971 \n",
"width 1.000000 0.306002 0.866201 0.729436 0.544885 \n",
"height 0.306002 1.000000 0.307581 0.074694 0.180449 \n",
"curb-weight 0.866201 0.307581 1.000000 0.849072 0.644060 \n",
"engine-size 0.729436 0.074694 0.849072 1.000000 0.572609 \n",
"bore 0.544885 0.180449 0.644060 0.572609 1.000000 \n",
"stroke 0.188829 -0.062704 0.167562 0.209523 -0.055390 \n",
"compression-ratio 0.189867 0.259737 0.156433 0.028889 0.001263 \n",
"horsepower 0.615077 -0.087027 0.757976 0.822676 0.566936 \n",
"peak-rpm -0.245800 -0.309974 -0.279361 -0.256733 -0.267392 \n",
"city-mpg -0.633531 -0.049800 -0.749543 -0.650546 -0.582027 \n",
"highway-mpg -0.680635 -0.104812 -0.794889 -0.679571 -0.591309 \n",
"price 0.751265 0.135486 0.834415 0.872335 0.543155 \n",
"city-L/100km 0.673363 0.003811 0.785353 0.745059 0.554610 \n",
"diesel 0.244356 0.281578 0.221046 0.070779 0.054458 \n",
"gas -0.244356 -0.281578 -0.221046 -0.070779 -0.054458 \n",
"\n",
" stroke compression-ratio horsepower peak-rpm \\\n",
"symboling -0.008245 -0.182196 0.075819 0.279740 \n",
"normalized-losses 0.055563 -0.114713 0.217299 0.239543 \n",
"wheel-base 0.158502 0.250313 0.371147 -0.360305 \n",
"length 0.124139 0.159733 0.579821 -0.285970 \n",
"width 0.188829 0.189867 0.615077 -0.245800 \n",
"height -0.062704 0.259737 -0.087027 -0.309974 \n",
"curb-weight 0.167562 0.156433 0.757976 -0.279361 \n",
"engine-size 0.209523 0.028889 0.822676 -0.256733 \n",
"bore -0.055390 0.001263 0.566936 -0.267392 \n",
"stroke 1.000000 0.187923 0.098462 -0.065713 \n",
"compression-ratio 0.187923 1.000000 -0.214514 -0.435780 \n",
"horsepower 0.098462 -0.214514 1.000000 0.107885 \n",
"peak-rpm -0.065713 -0.435780 0.107885 1.000000 \n",
"city-mpg -0.034696 0.331425 -0.822214 -0.115413 \n",
"highway-mpg -0.035201 0.268465 -0.804575 -0.058598 \n",
"price 0.082310 0.071107 0.809575 -0.101616 \n",
"city-L/100km 0.037300 -0.299372 0.889488 0.115830 \n",
"diesel 0.241303 0.985231 -0.169053 -0.475812 \n",
"gas -0.241303 -0.985231 0.169053 0.475812 \n",
"\n",
" city-mpg highway-mpg price city-L/100km diesel \\\n",
"symboling -0.035527 0.036233 -0.082391 0.066171 -0.196735 \n",
"normalized-losses -0.225016 -0.181877 0.133999 0.238567 -0.101546 \n",
"wheel-base -0.470606 -0.543304 0.584642 0.476153 0.307237 \n",
"length -0.665192 -0.698142 0.690628 0.657373 0.211187 \n",
"width -0.633531 -0.680635 0.751265 0.673363 0.244356 \n",
"height -0.049800 -0.104812 0.135486 0.003811 0.281578 \n",
"curb-weight -0.749543 -0.794889 0.834415 0.785353 0.221046 \n",
"engine-size -0.650546 -0.679571 0.872335 0.745059 0.070779 \n",
"bore -0.582027 -0.591309 0.543155 0.554610 0.054458 \n",
"stroke -0.034696 -0.035201 0.082310 0.037300 0.241303 \n",
"compression-ratio 0.331425 0.268465 0.071107 -0.299372 0.985231 \n",
"horsepower -0.822214 -0.804575 0.809575 0.889488 -0.169053 \n",
"peak-rpm -0.115413 -0.058598 -0.101616 0.115830 -0.475812 \n",
"city-mpg 1.000000 0.972044 -0.686571 -0.949713 0.265676 \n",
"highway-mpg 0.972044 1.000000 -0.704692 -0.930028 0.198690 \n",
"price -0.686571 -0.704692 1.000000 0.789898 0.110326 \n",
"city-L/100km -0.949713 -0.930028 0.789898 1.000000 -0.241282 \n",
"diesel 0.265676 0.198690 0.110326 -0.241282 1.000000 \n",
"gas -0.265676 -0.198690 -0.110326 0.241282 -1.000000 \n",
"\n",
" gas \n",
"symboling 0.196735 \n",
"normalized-losses 0.101546 \n",
"wheel-base -0.307237 \n",
"length -0.211187 \n",
"width -0.244356 \n",
"height -0.281578 \n",
"curb-weight -0.221046 \n",
"engine-size -0.070779 \n",
"bore -0.054458 \n",
"stroke -0.241303 \n",
"compression-ratio -0.985231 \n",
"horsepower 0.169053 \n",
"peak-rpm 0.475812 \n",
"city-mpg -0.265676 \n",
"highway-mpg -0.198690 \n",
"price -0.110326 \n",
"city-L/100km 0.241282 \n",
"diesel -1.000000 \n",
"gas 1.000000 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The diagonal elements are always one; we will study correlation more precisely Pearson correlation in-depth at the end of the notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2: </h1>\n",
"\n",
"<p>Find the correlation between the following columns: bore, stroke,compression-ratio , and horsepower.</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[['bore','stroke' ,'compression-ratio','horsepower']]</p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" bore stroke compression-ratio horsepower\n",
"bore 1.000000 -0.055390 0.001263 0.566936\n",
"stroke -0.055390 1.000000 0.187923 0.098462\n",
"compression-ratio 0.001263 0.187923 1.000000 -0.214514\n",
"horsepower 0.566936 0.098462 -0.214514 1.000000"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[['bore','stroke' ,'compression-ratio','horsepower']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"df[['bore', 'stroke', 'compression-ratio', 'horsepower']].corr() \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Continuous numerical variables:</h2> \n",
"\n",
"<p>Continuous numerical variables are variables that may contain any value within some range. Continuous numerical variables can have the type \"int64\" or \"float64\". A great way to visualize these variables is by using scatterplots with fitted lines.</p>\n",
"\n",
"<p>In order to start understanding the (linear) relationship between an individual variable and the price. We can do this by using \"regplot\", which plots the scatterplot plus the fitted regression line for the data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's see several examples of different linear relationships:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Positive linear relationship</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's find the scatterplot of \"engine-size\" and \"price\" "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 56251.1384233712)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Engine size as potential predictor variable of price\n",
"sns.regplot(x=\"engine-size\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>As the engine-size goes up, the price goes up: this indicates a positive direct correlation between these two variables. Engine size seems like a pretty good predictor of price since the regression line is almost a perfect diagonal line.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can examine the correlation between 'engine-size' and 'price' and see it's approximately 0.87"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>engine-size</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>1.000000</td>\n",
" <td>0.872335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>0.872335</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" engine-size price\n",
"engine-size 1.000000 0.872335\n",
"price 0.872335 1.000000"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[[\"engine-size\", \"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Highway mpg is a potential predictor variable of price "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7ff71d536fd0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>As the highway-mpg goes up, the price goes down: this indicates an inverse/negative relationship between these two variables. Highway mpg could potentially be a predictor of price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'highway-mpg' and 'price' and see it's approximately -0.704"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" highway-mpg price\n",
"highway-mpg 1.000000 -0.704692\n",
"price -0.704692 1.000000"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['highway-mpg', 'price']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Weak Linear Relationship</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see if \"Peak-rpm\" as a predictor variable of \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7ff71c32fcf8>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Peak rpm does not seem like a good predictor of the price at all since the regression line is close to horizontal. Also, the data points are very scattered and far from the fitted line, showing lots of variability. Therefore it's it is not a reliable variable.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'peak-rpm' and 'price' and see it's approximately -0.101616 "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>peak-rpm</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>1.000000</td>\n",
" <td>-0.101616</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.101616</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" peak-rpm price\n",
"peak-rpm 1.000000 -0.101616\n",
"price -0.101616 1.000000"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['peak-rpm','price']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question 3 a): </h1>\n",
"\n",
"<p>Find the correlation between x=\"stroke\", y=\"price\".</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[[\"stroke\",\"price\"]] </p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 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>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": 15,
"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": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7ff71c21ae48>"
]
},
"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": [
"# Write your code below and press Shift+Enter to execute \n",
"sns.regplot(x=\"stroke\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"#There is a weak correlation between the variable 'stroke' and 'price.' as such regression will not work well. We #can see this use \"regplot\" to demonstrate this.\n",
"\n",
"#Code: \n",
"sns.regplot(x=\"stroke\", y=\"price\", data=df)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Categorical variables</h3>\n",
"\n",
"<p>These are variables that describe a 'characteristic' of a data unit, and are selected from a small group of categories. The categorical variables can have the type \"object\" or \"int64\". A good way to visualize categorical variables is by using boxplots.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look at the relationship between \"body-style\" and \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7ff71d54ac88>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x=\"body-style\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We see that the distributions of price between the different body-style categories have a significant overlap, and so body-style would not be a good predictor of price. Let's examine engine \"engine-location\" and \"price\":</p>"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7ff71c1fb080>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x=\"engine-location\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Here we see that the distribution of price between these two engine-location categories, front and rear, are distinct enough to take engine-location as a potential good predictor of price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's examine \"drive-wheels\" and \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7ff71c161c18>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# drive-wheels\n",
"sns.boxplot(x=\"drive-wheels\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Here we see that the distribution of price between the different drive-wheels categories differs; as such drive-wheels could potentially be a predictor of price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"discriptive_statistics\">3. Descriptive Statistical Analysis</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Let's first take a look at the variables by utilizing a description method.</p>\n",
"\n",
"<p>The <b>describe</b> function automatically computes basic statistics for all continuous variables. Any NaN values are automatically skipped in these statistics.</p>\n",
"\n",
"This will show:\n",
"<ul>\n",
" <li>the count of that variable</li>\n",
" <li>the mean</li>\n",
" <li>the standard deviation (std)</li> \n",
" <li>the minimum value</li>\n",
" <li>the IQR (Interquartile Range: 25%, 50% and 75%)</li>\n",
" <li>the maximum value</li>\n",
"<ul>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can apply the method \"describe\" as follows:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>201.000000</td>\n",
" <td>201.00000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>197.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.840796</td>\n",
" <td>122.00000</td>\n",
" <td>98.797015</td>\n",
" <td>0.837102</td>\n",
" <td>0.915126</td>\n",
" <td>53.766667</td>\n",
" <td>2555.666667</td>\n",
" <td>126.875622</td>\n",
" <td>3.330692</td>\n",
" <td>3.256904</td>\n",
" <td>10.164279</td>\n",
" <td>103.405534</td>\n",
" <td>5117.665368</td>\n",
" <td>25.179104</td>\n",
" <td>30.686567</td>\n",
" <td>13207.129353</td>\n",
" <td>9.944145</td>\n",
" <td>0.099502</td>\n",
" <td>0.900498</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>1.254802</td>\n",
" <td>31.99625</td>\n",
" <td>6.066366</td>\n",
" <td>0.059213</td>\n",
" <td>0.029187</td>\n",
" <td>2.447822</td>\n",
" <td>517.296727</td>\n",
" <td>41.546834</td>\n",
" <td>0.268072</td>\n",
" <td>0.319256</td>\n",
" <td>4.004965</td>\n",
" <td>37.365700</td>\n",
" <td>478.113805</td>\n",
" <td>6.423220</td>\n",
" <td>6.815150</td>\n",
" <td>7947.066342</td>\n",
" <td>2.534599</td>\n",
" <td>0.300083</td>\n",
" <td>0.300083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-2.000000</td>\n",
" <td>65.00000</td>\n",
" <td>86.600000</td>\n",
" <td>0.678039</td>\n",
" <td>0.837500</td>\n",
" <td>47.800000</td>\n",
" <td>1488.000000</td>\n",
" <td>61.000000</td>\n",
" <td>2.540000</td>\n",
" <td>2.070000</td>\n",
" <td>7.000000</td>\n",
" <td>48.000000</td>\n",
" <td>4150.000000</td>\n",
" <td>13.000000</td>\n",
" <td>16.000000</td>\n",
" <td>5118.000000</td>\n",
" <td>4.795918</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.000000</td>\n",
" <td>101.00000</td>\n",
" <td>94.500000</td>\n",
" <td>0.801538</td>\n",
" <td>0.890278</td>\n",
" <td>52.000000</td>\n",
" <td>2169.000000</td>\n",
" <td>98.000000</td>\n",
" <td>3.150000</td>\n",
" <td>3.110000</td>\n",
" <td>8.600000</td>\n",
" <td>70.000000</td>\n",
" <td>4800.000000</td>\n",
" <td>19.000000</td>\n",
" <td>25.000000</td>\n",
" <td>7775.000000</td>\n",
" <td>7.833333</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1.000000</td>\n",
" <td>122.00000</td>\n",
" <td>97.000000</td>\n",
" <td>0.832292</td>\n",
" <td>0.909722</td>\n",
" <td>54.100000</td>\n",
" <td>2414.000000</td>\n",
" <td>120.000000</td>\n",
" <td>3.310000</td>\n",
" <td>3.290000</td>\n",
" <td>9.000000</td>\n",
" <td>95.000000</td>\n",
" <td>5125.369458</td>\n",
" <td>24.000000</td>\n",
" <td>30.000000</td>\n",
" <td>10295.000000</td>\n",
" <td>9.791667</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2.000000</td>\n",
" <td>137.00000</td>\n",
" <td>102.400000</td>\n",
" <td>0.881788</td>\n",
" <td>0.925000</td>\n",
" <td>55.500000</td>\n",
" <td>2926.000000</td>\n",
" <td>141.000000</td>\n",
" <td>3.580000</td>\n",
" <td>3.410000</td>\n",
" <td>9.400000</td>\n",
" <td>116.000000</td>\n",
" <td>5500.000000</td>\n",
" <td>30.000000</td>\n",
" <td>34.000000</td>\n",
" <td>16500.000000</td>\n",
" <td>12.368421</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>3.000000</td>\n",
" <td>256.00000</td>\n",
" <td>120.900000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>59.800000</td>\n",
" <td>4066.000000</td>\n",
" <td>326.000000</td>\n",
" <td>3.940000</td>\n",
" <td>4.170000</td>\n",
" <td>23.000000</td>\n",
" <td>262.000000</td>\n",
" <td>6600.000000</td>\n",
" <td>49.000000</td>\n",
" <td>54.000000</td>\n",
" <td>45400.000000</td>\n",
" <td>18.076923</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses wheel-base length width \\\n",
"count 201.000000 201.00000 201.000000 201.000000 201.000000 \n",
"mean 0.840796 122.00000 98.797015 0.837102 0.915126 \n",
"std 1.254802 31.99625 6.066366 0.059213 0.029187 \n",
"min -2.000000 65.00000 86.600000 0.678039 0.837500 \n",
"25% 0.000000 101.00000 94.500000 0.801538 0.890278 \n",
"50% 1.000000 122.00000 97.000000 0.832292 0.909722 \n",
"75% 2.000000 137.00000 102.400000 0.881788 0.925000 \n",
"max 3.000000 256.00000 120.900000 1.000000 1.000000 \n",
"\n",
" height curb-weight engine-size bore stroke \\\n",
"count 201.000000 201.000000 201.000000 201.000000 197.000000 \n",
"mean 53.766667 2555.666667 126.875622 3.330692 3.256904 \n",
"std 2.447822 517.296727 41.546834 0.268072 0.319256 \n",
"min 47.800000 1488.000000 61.000000 2.540000 2.070000 \n",
"25% 52.000000 2169.000000 98.000000 3.150000 3.110000 \n",
"50% 54.100000 2414.000000 120.000000 3.310000 3.290000 \n",
"75% 55.500000 2926.000000 141.000000 3.580000 3.410000 \n",
"max 59.800000 4066.000000 326.000000 3.940000 4.170000 \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg \\\n",
"count 201.000000 201.000000 201.000000 201.000000 201.000000 \n",
"mean 10.164279 103.405534 5117.665368 25.179104 30.686567 \n",
"std 4.004965 37.365700 478.113805 6.423220 6.815150 \n",
"min 7.000000 48.000000 4150.000000 13.000000 16.000000 \n",
"25% 8.600000 70.000000 4800.000000 19.000000 25.000000 \n",
"50% 9.000000 95.000000 5125.369458 24.000000 30.000000 \n",
"75% 9.400000 116.000000 5500.000000 30.000000 34.000000 \n",
"max 23.000000 262.000000 6600.000000 49.000000 54.000000 \n",
"\n",
" price city-L/100km diesel gas \n",
"count 201.000000 201.000000 201.000000 201.000000 \n",
"mean 13207.129353 9.944145 0.099502 0.900498 \n",
"std 7947.066342 2.534599 0.300083 0.300083 \n",
"min 5118.000000 4.795918 0.000000 0.000000 \n",
"25% 7775.000000 7.833333 0.000000 1.000000 \n",
"50% 10295.000000 9.791667 0.000000 1.000000 \n",
"75% 16500.000000 12.368421 0.000000 1.000000 \n",
"max 45400.000000 18.076923 1.000000 1.000000 "
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The default setting of \"describe\" skips variables of type object. We can apply the method \"describe\" on the variables of type 'object' as follows:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>engine-type</th>\n",
" <th>num-of-cylinders</th>\n",
" <th>fuel-system</th>\n",
" <th>horsepower-binned</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>unique</th>\n",
" <td>22</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>6</td>\n",
" <td>7</td>\n",
" <td>8</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>top</th>\n",
" <td>toyota</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>ohc</td>\n",
" <td>four</td>\n",
" <td>mpfi</td>\n",
" <td>Low</td>\n",
" </tr>\n",
" <tr>\n",
" <th>freq</th>\n",
" <td>32</td>\n",
" <td>165</td>\n",
" <td>115</td>\n",
" <td>94</td>\n",
" <td>118</td>\n",
" <td>198</td>\n",
" <td>145</td>\n",
" <td>157</td>\n",
" <td>92</td>\n",
" <td>115</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" make aspiration num-of-doors body-style drive-wheels \\\n",
"count 201 201 201 201 201 \n",
"unique 22 2 2 5 3 \n",
"top toyota std four sedan fwd \n",
"freq 32 165 115 94 118 \n",
"\n",
" engine-location engine-type num-of-cylinders fuel-system \\\n",
"count 201 201 201 201 \n",
"unique 2 6 7 8 \n",
"top front ohc four mpfi \n",
"freq 198 145 157 92 \n",
"\n",
" horsepower-binned \n",
"count 200 \n",
"unique 3 \n",
"top Low \n",
"freq 115 "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe(include=['object'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Value Counts</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Value-counts is a good way of understanding how many units of each characteristic/variable we have. We can apply the \"value_counts\" method on the column 'drive-wheels'. Don’t forget the method \"value_counts\" only works on Pandas series, not Pandas Dataframes. As a result, we only include one bracket \"df['drive-wheels']\" not two brackets \"df[['drive-wheels']]\".</p>"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"fwd 118\n",
"rwd 75\n",
"4wd 8\n",
"Name: drive-wheels, dtype: int64"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can convert the series to a Dataframe as follows :"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels\n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].value_counts().to_frame()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's repeat the above steps but save the results to the dataframe \"drive_wheels_counts\" and rename the column 'drive-wheels' to 'value_counts'."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>value_counts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drive_wheels_counts = df['drive-wheels'].value_counts().to_frame()\n",
"drive_wheels_counts.rename(columns={'drive-wheels': 'value_counts'}, inplace=True)\n",
"drive_wheels_counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Now let's rename the index to 'drive-wheels':"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>value_counts</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"drive-wheels \n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drive_wheels_counts.index.name = 'drive-wheels'\n",
"drive_wheels_counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can repeat the above process for the variable 'engine-location'."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>value_counts</th>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-location</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>front</th>\n",
" <td>198</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rear</th>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"engine-location \n",
"front 198\n",
"rear 3"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# engine-location as variable\n",
"engine_loc_counts = df['engine-location'].value_counts().to_frame()\n",
"engine_loc_counts.rename(columns={'engine-location': 'value_counts'}, inplace=True)\n",
"engine_loc_counts.index.name = 'engine-location'\n",
"engine_loc_counts.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Examining the value counts of the engine location would not be a good predictor variable for the price. This is because we only have three cars with a rear engine and 198 with an engine in the front, this result is skewed. Thus, we are not able to draw any conclusions about the engine location.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"basic_grouping\">4. Basics of Grouping</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The \"groupby\" method groups data by different categories. The data is grouped based on one or several variables and analysis is performed on the individual groups.</p>\n",
"\n",
"<p>For example, let's group by the variable \"drive-wheels\". We see that there are 3 different categories of drive wheels.</p>"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array(['rwd', 'fwd', '4wd'], dtype=object)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>If we want to know, on average, which type of drive wheel is most valuable, we can group \"drive-wheels\" and then average them.</p>\n",
"\n",
"<p>We can select the columns 'drive-wheels', 'body-style' and 'price', then assign it to the variable \"df_group_one\".</p>"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"df_group_one = df[['drive-wheels','body-style','price']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then calculate the average price for each of the different categories of data."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4wd</td>\n",
" <td>10241.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>fwd</td>\n",
" <td>9244.779661</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>rwd</td>\n",
" <td>19757.613333</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels price\n",
"0 4wd 10241.000000\n",
"1 fwd 9244.779661\n",
"2 rwd 19757.613333"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# grouping results\n",
"df_group_one = df_group_one.groupby(['drive-wheels'],as_index=False).mean()\n",
"df_group_one"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>From our data, it seems rear-wheel drive vehicles are, on average, the most expensive, while 4-wheel and front-wheel are approximately the same in price.</p>\n",
"\n",
"<p>You can also group with multiple variables. For example, let's group by both 'drive-wheels' and 'body-style'. This groups the dataframe by the unique combinations 'drive-wheels' and 'body-style'. We can store the results in the variable 'grouped_test1'.</p>"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4wd</td>\n",
" <td>hatchback</td>\n",
" <td>7603.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4wd</td>\n",
" <td>sedan</td>\n",
" <td>12647.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4wd</td>\n",
" <td>wagon</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>fwd</td>\n",
" <td>convertible</td>\n",
" <td>11595.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>fwd</td>\n",
" <td>hardtop</td>\n",
" <td>8249.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>8396.387755</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>9811.800000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>fwd</td>\n",
" <td>wagon</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>23949.600000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>rwd</td>\n",
" <td>hardtop</td>\n",
" <td>24202.714286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>14337.777778</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21711.833333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>rwd</td>\n",
" <td>wagon</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels body-style price\n",
"0 4wd hatchback 7603.000000\n",
"1 4wd sedan 12647.333333\n",
"2 4wd wagon 9095.750000\n",
"3 fwd convertible 11595.000000\n",
"4 fwd hardtop 8249.000000\n",
"5 fwd hatchback 8396.387755\n",
"6 fwd sedan 9811.800000\n",
"7 fwd wagon 9997.333333\n",
"8 rwd convertible 23949.600000\n",
"9 rwd hardtop 24202.714286\n",
"10 rwd hatchback 14337.777778\n",
"11 rwd sedan 21711.833333\n",
"12 rwd wagon 16994.222222"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# grouping results\n",
"df_gptest = df[['drive-wheels','body-style','price']]\n",
"grouped_test1 = df_gptest.groupby(['drive-wheels','body-style'],as_index=False).mean()\n",
"grouped_test1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>This grouped data is much easier to visualize when it is made into a pivot table. A pivot table is like an Excel spreadsheet, with one variable along the column and another along the row. We can convert the dataframe to a pivot table using the method \"pivot \" to create a pivot table from the groups.</p>\n",
"\n",
"<p>In this case, we will leave the drive-wheel variable as the rows of the table, and pivot body-style to become the columns of the table:</p>"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"5\" halign=\"left\">price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>body-style</th>\n",
" <th>convertible</th>\n",
" <th>hardtop</th>\n",
" <th>hatchback</th>\n",
" <th>sedan</th>\n",
" <th>wagon</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7603.000000</td>\n",
" <td>12647.333333</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>11595.0</td>\n",
" <td>8249.000000</td>\n",
" <td>8396.387755</td>\n",
" <td>9811.800000</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>23949.6</td>\n",
" <td>24202.714286</td>\n",
" <td>14337.777778</td>\n",
" <td>21711.833333</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" price \\\n",
"body-style convertible hardtop hatchback sedan \n",
"drive-wheels \n",
"4wd NaN NaN 7603.000000 12647.333333 \n",
"fwd 11595.0 8249.000000 8396.387755 9811.800000 \n",
"rwd 23949.6 24202.714286 14337.777778 21711.833333 \n",
"\n",
" \n",
"body-style wagon \n",
"drive-wheels \n",
"4wd 9095.750000 \n",
"fwd 9997.333333 \n",
"rwd 16994.222222 "
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_pivot = grouped_test1.pivot(index='drive-wheels',columns='body-style')\n",
"grouped_pivot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Often, we won't have data for some of the pivot cells. We can fill these missing cells with the value 0, but any other value could potentially be used as well. It should be mentioned that missing data is quite a complex subject and is an entire course on its own.</p>"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"5\" halign=\"left\">price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>body-style</th>\n",
" <th>convertible</th>\n",
" <th>hardtop</th>\n",
" <th>hatchback</th>\n",
" <th>sedan</th>\n",
" <th>wagon</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>7603.000000</td>\n",
" <td>12647.333333</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>11595.0</td>\n",
" <td>8249.000000</td>\n",
" <td>8396.387755</td>\n",
" <td>9811.800000</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>23949.6</td>\n",
" <td>24202.714286</td>\n",
" <td>14337.777778</td>\n",
" <td>21711.833333</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" price \\\n",
"body-style convertible hardtop hatchback sedan \n",
"drive-wheels \n",
"4wd 0.0 0.000000 7603.000000 12647.333333 \n",
"fwd 11595.0 8249.000000 8396.387755 9811.800000 \n",
"rwd 23949.6 24202.714286 14337.777778 21711.833333 \n",
"\n",
" \n",
"body-style wagon \n",
"drive-wheels \n",
"4wd 9095.750000 \n",
"fwd 9997.333333 \n",
"rwd 16994.222222 "
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_pivot = grouped_pivot.fillna(0) #fill missing values with 0\n",
"grouped_pivot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question 4:</h1>\n",
"\n",
"<p>Use the \"groupby\" function to find the average \"price\" of each car based on \"body-style\" ? </p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>convertible</td>\n",
" <td>21890.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>hardtop</td>\n",
" <td>22208.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>hatchback</td>\n",
" <td>9957.441176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>sedan</td>\n",
" <td>14459.755319</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>wagon</td>\n",
" <td>12371.960000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" body-style price\n",
"0 convertible 21890.500000\n",
"1 hardtop 22208.500000\n",
"2 hatchback 9957.441176\n",
"3 sedan 14459.755319\n",
"4 wagon 12371.960000"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"# grouping results\n",
"df_gptest2 = df[['body-style','price']]\n",
"grouped_test_bodystyle = df_gptest2.groupby(['body-style'],as_index= False).mean()\n",
"grouped_test_bodystyle"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# grouping results\n",
"df_gptest2 = df[['body-style','price']]\n",
"grouped_test_bodystyle = df_gptest2.groupby(['body-style'],as_index= False).mean()\n",
"grouped_test_bodystyle\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you did not import \"pyplot\" let's do it again. "
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Variables: Drive Wheels and Body Style vs Price</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's use a heat map to visualize the relationship between Body Style vs Price."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#use the grouped results\n",
"plt.pcolor(grouped_pivot, cmap='RdBu')\n",
"plt.colorbar()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The heatmap plots the target variable (price) proportional to colour with respect to the variables 'drive-wheel' and 'body-style' in the vertical and horizontal axis respectively. This allows us to visualize how the price is related to 'drive-wheel' and 'body-style'.</p>\n",
"\n",
"<p>The default labels convey no useful information to us. Let's change that:</p>"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"im = ax.pcolor(grouped_pivot, cmap='RdBu')\n",
"\n",
"#label names\n",
"row_labels = grouped_pivot.columns.levels[1]\n",
"col_labels = grouped_pivot.index\n",
"\n",
"#move ticks and labels to the center\n",
"ax.set_xticks(np.arange(grouped_pivot.shape[1]) + 0.5, minor=False)\n",
"ax.set_yticks(np.arange(grouped_pivot.shape[0]) + 0.5, minor=False)\n",
"\n",
"#insert labels\n",
"ax.set_xticklabels(row_labels, minor=False)\n",
"ax.set_yticklabels(col_labels, minor=False)\n",
"\n",
"#rotate label if too long\n",
"plt.xticks(rotation=90)\n",
"\n",
"fig.colorbar(im)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Visualization is very important in data science, and Python visualization packages provide great freedom. We will go more in-depth in a separate Python Visualizations course.</p>\n",
"\n",
"<p>The main question we want to answer in this module, is \"What are the main characteristics which have the most impact on the car price?\".</p>\n",
"\n",
"<p>To get a better measure of the important characteristics, we look at the correlation of these variables with the car price, in other words: how is the car price dependent on this variable?</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"correlation_causation\">5. Correlation and Causation</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><b>Correlation</b>: a measure of the extent of interdependence between variables.</p>\n",
"\n",
"<p><b>Causation</b>: the relationship between cause and effect between two variables.</p>\n",
"\n",
"<p>It is important to know the difference between these two and that correlation does not imply causation. Determining correlation is much simpler the determining causation as causation may require independent experimentation.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p3>Pearson Correlation</p>\n",
"<p>The Pearson Correlation measures the linear dependence between two variables X and Y.</p>\n",
"<p>The resulting coefficient is a value between -1 and 1 inclusive, where:</p>\n",
"<ul>\n",
" <li><b>1</b>: Total positive linear correlation.</li>\n",
" <li><b>0</b>: No linear correlation, the two variables most likely do not affect each other.</li>\n",
" <li><b>-1</b>: Total negative linear correlation.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Pearson Correlation is the default method of the function \"corr\". Like before we can calculate the Pearson Correlation of the of the 'int64' or 'float64' variables.</p>"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>symboling</th>\n",
" <td>1.000000</td>\n",
" <td>0.466264</td>\n",
" <td>-0.535987</td>\n",
" <td>-0.365404</td>\n",
" <td>-0.242423</td>\n",
" <td>-0.550160</td>\n",
" <td>-0.233118</td>\n",
" <td>-0.110581</td>\n",
" <td>-0.140019</td>\n",
" <td>-0.008245</td>\n",
" <td>-0.182196</td>\n",
" <td>0.075819</td>\n",
" <td>0.279740</td>\n",
" <td>-0.035527</td>\n",
" <td>0.036233</td>\n",
" <td>-0.082391</td>\n",
" <td>0.066171</td>\n",
" <td>-0.196735</td>\n",
" <td>0.196735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>normalized-losses</th>\n",
" <td>0.466264</td>\n",
" <td>1.000000</td>\n",
" <td>-0.056661</td>\n",
" <td>0.019424</td>\n",
" <td>0.086802</td>\n",
" <td>-0.373737</td>\n",
" <td>0.099404</td>\n",
" <td>0.112360</td>\n",
" <td>-0.029862</td>\n",
" <td>0.055563</td>\n",
" <td>-0.114713</td>\n",
" <td>0.217299</td>\n",
" <td>0.239543</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.181877</td>\n",
" <td>0.133999</td>\n",
" <td>0.238567</td>\n",
" <td>-0.101546</td>\n",
" <td>0.101546</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wheel-base</th>\n",
" <td>-0.535987</td>\n",
" <td>-0.056661</td>\n",
" <td>1.000000</td>\n",
" <td>0.876024</td>\n",
" <td>0.814507</td>\n",
" <td>0.590742</td>\n",
" <td>0.782097</td>\n",
" <td>0.572027</td>\n",
" <td>0.493244</td>\n",
" <td>0.158502</td>\n",
" <td>0.250313</td>\n",
" <td>0.371147</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.543304</td>\n",
" <td>0.584642</td>\n",
" <td>0.476153</td>\n",
" <td>0.307237</td>\n",
" <td>-0.307237</td>\n",
" </tr>\n",
" <tr>\n",
" <th>length</th>\n",
" <td>-0.365404</td>\n",
" <td>0.019424</td>\n",
" <td>0.876024</td>\n",
" <td>1.000000</td>\n",
" <td>0.857170</td>\n",
" <td>0.492063</td>\n",
" <td>0.880665</td>\n",
" <td>0.685025</td>\n",
" <td>0.608971</td>\n",
" <td>0.124139</td>\n",
" <td>0.159733</td>\n",
" <td>0.579821</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.698142</td>\n",
" <td>0.690628</td>\n",
" <td>0.657373</td>\n",
" <td>0.211187</td>\n",
" <td>-0.211187</td>\n",
" </tr>\n",
" <tr>\n",
" <th>width</th>\n",
" <td>-0.242423</td>\n",
" <td>0.086802</td>\n",
" <td>0.814507</td>\n",
" <td>0.857170</td>\n",
" <td>1.000000</td>\n",
" <td>0.306002</td>\n",
" <td>0.866201</td>\n",
" <td>0.729436</td>\n",
" <td>0.544885</td>\n",
" <td>0.188829</td>\n",
" <td>0.189867</td>\n",
" <td>0.615077</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.680635</td>\n",
" <td>0.751265</td>\n",
" <td>0.673363</td>\n",
" <td>0.244356</td>\n",
" <td>-0.244356</td>\n",
" </tr>\n",
" <tr>\n",
" <th>height</th>\n",
" <td>-0.550160</td>\n",
" <td>-0.373737</td>\n",
" <td>0.590742</td>\n",
" <td>0.492063</td>\n",
" <td>0.306002</td>\n",
" <td>1.000000</td>\n",
" <td>0.307581</td>\n",
" <td>0.074694</td>\n",
" <td>0.180449</td>\n",
" <td>-0.062704</td>\n",
" <td>0.259737</td>\n",
" <td>-0.087027</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.104812</td>\n",
" <td>0.135486</td>\n",
" <td>0.003811</td>\n",
" <td>0.281578</td>\n",
" <td>-0.281578</td>\n",
" </tr>\n",
" <tr>\n",
" <th>curb-weight</th>\n",
" <td>-0.233118</td>\n",
" <td>0.099404</td>\n",
" <td>0.782097</td>\n",
" <td>0.880665</td>\n",
" <td>0.866201</td>\n",
" <td>0.307581</td>\n",
" <td>1.000000</td>\n",
" <td>0.849072</td>\n",
" <td>0.644060</td>\n",
" <td>0.167562</td>\n",
" <td>0.156433</td>\n",
" <td>0.757976</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.794889</td>\n",
" <td>0.834415</td>\n",
" <td>0.785353</td>\n",
" <td>0.221046</td>\n",
" <td>-0.221046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>-0.110581</td>\n",
" <td>0.112360</td>\n",
" <td>0.572027</td>\n",
" <td>0.685025</td>\n",
" <td>0.729436</td>\n",
" <td>0.074694</td>\n",
" <td>0.849072</td>\n",
" <td>1.000000</td>\n",
" <td>0.572609</td>\n",
" <td>0.209523</td>\n",
" <td>0.028889</td>\n",
" <td>0.822676</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.679571</td>\n",
" <td>0.872335</td>\n",
" <td>0.745059</td>\n",
" <td>0.070779</td>\n",
" <td>-0.070779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>-0.140019</td>\n",
" <td>-0.029862</td>\n",
" <td>0.493244</td>\n",
" <td>0.608971</td>\n",
" <td>0.544885</td>\n",
" <td>0.180449</td>\n",
" <td>0.644060</td>\n",
" <td>0.572609</td>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.591309</td>\n",
" <td>0.543155</td>\n",
" <td>0.554610</td>\n",
" <td>0.054458</td>\n",
" <td>-0.054458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.008245</td>\n",
" <td>0.055563</td>\n",
" <td>0.158502</td>\n",
" <td>0.124139</td>\n",
" <td>0.188829</td>\n",
" <td>-0.062704</td>\n",
" <td>0.167562</td>\n",
" <td>0.209523</td>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.034696</td>\n",
" <td>-0.035201</td>\n",
" <td>0.082310</td>\n",
" <td>0.037300</td>\n",
" <td>0.241303</td>\n",
" <td>-0.241303</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>-0.182196</td>\n",
" <td>-0.114713</td>\n",
" <td>0.250313</td>\n",
" <td>0.159733</td>\n",
" <td>0.189867</td>\n",
" <td>0.259737</td>\n",
" <td>0.156433</td>\n",
" <td>0.028889</td>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" <td>-0.435780</td>\n",
" <td>0.331425</td>\n",
" <td>0.268465</td>\n",
" <td>0.071107</td>\n",
" <td>-0.299372</td>\n",
" <td>0.985231</td>\n",
" <td>-0.985231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.075819</td>\n",
" <td>0.217299</td>\n",
" <td>0.371147</td>\n",
" <td>0.579821</td>\n",
" <td>0.615077</td>\n",
" <td>-0.087027</td>\n",
" <td>0.757976</td>\n",
" <td>0.822676</td>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" <td>0.107885</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.804575</td>\n",
" <td>0.809575</td>\n",
" <td>0.889488</td>\n",
" <td>-0.169053</td>\n",
" <td>0.169053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>0.279740</td>\n",
" <td>0.239543</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.435780</td>\n",
" <td>0.107885</td>\n",
" <td>1.000000</td>\n",
" <td>-0.115413</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" <td>0.115830</td>\n",
" <td>-0.475812</td>\n",
" <td>0.475812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-mpg</th>\n",
" <td>-0.035527</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.034696</td>\n",
" <td>0.331425</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.115413</td>\n",
" <td>1.000000</td>\n",
" <td>0.972044</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.949713</td>\n",
" <td>0.265676</td>\n",
" <td>-0.265676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>0.036233</td>\n",
" <td>-0.181877</td>\n",
" <td>-0.543304</td>\n",
" <td>-0.698142</td>\n",
" <td>-0.680635</td>\n",
" <td>-0.104812</td>\n",
" <td>-0.794889</td>\n",
" <td>-0.679571</td>\n",
" <td>-0.591309</td>\n",
" <td>-0.035201</td>\n",
" <td>0.268465</td>\n",
" <td>-0.804575</td>\n",
" <td>-0.058598</td>\n",
" <td>0.972044</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" <td>-0.930028</td>\n",
" <td>0.198690</td>\n",
" <td>-0.198690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.082391</td>\n",
" <td>0.133999</td>\n",
" <td>0.584642</td>\n",
" <td>0.690628</td>\n",
" <td>0.751265</td>\n",
" <td>0.135486</td>\n",
" <td>0.834415</td>\n",
" <td>0.872335</td>\n",
" <td>0.543155</td>\n",
" <td>0.082310</td>\n",
" <td>0.071107</td>\n",
" <td>0.809575</td>\n",
" <td>-0.101616</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" <td>0.789898</td>\n",
" <td>0.110326</td>\n",
" <td>-0.110326</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-L/100km</th>\n",
" <td>0.066171</td>\n",
" <td>0.238567</td>\n",
" <td>0.476153</td>\n",
" <td>0.657373</td>\n",
" <td>0.673363</td>\n",
" <td>0.003811</td>\n",
" <td>0.785353</td>\n",
" <td>0.745059</td>\n",
" <td>0.554610</td>\n",
" <td>0.037300</td>\n",
" <td>-0.299372</td>\n",
" <td>0.889488</td>\n",
" <td>0.115830</td>\n",
" <td>-0.949713</td>\n",
" <td>-0.930028</td>\n",
" <td>0.789898</td>\n",
" <td>1.000000</td>\n",
" <td>-0.241282</td>\n",
" <td>0.241282</td>\n",
" </tr>\n",
" <tr>\n",
" <th>diesel</th>\n",
" <td>-0.196735</td>\n",
" <td>-0.101546</td>\n",
" <td>0.307237</td>\n",
" <td>0.211187</td>\n",
" <td>0.244356</td>\n",
" <td>0.281578</td>\n",
" <td>0.221046</td>\n",
" <td>0.070779</td>\n",
" <td>0.054458</td>\n",
" <td>0.241303</td>\n",
" <td>0.985231</td>\n",
" <td>-0.169053</td>\n",
" <td>-0.475812</td>\n",
" <td>0.265676</td>\n",
" <td>0.198690</td>\n",
" <td>0.110326</td>\n",
" <td>-0.241282</td>\n",
" <td>1.000000</td>\n",
" <td>-1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>gas</th>\n",
" <td>0.196735</td>\n",
" <td>0.101546</td>\n",
" <td>-0.307237</td>\n",
" <td>-0.211187</td>\n",
" <td>-0.244356</td>\n",
" <td>-0.281578</td>\n",
" <td>-0.221046</td>\n",
" <td>-0.070779</td>\n",
" <td>-0.054458</td>\n",
" <td>-0.241303</td>\n",
" <td>-0.985231</td>\n",
" <td>0.169053</td>\n",
" <td>0.475812</td>\n",
" <td>-0.265676</td>\n",
" <td>-0.198690</td>\n",
" <td>-0.110326</td>\n",
" <td>0.241282</td>\n",
" <td>-1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses wheel-base length \\\n",
"symboling 1.000000 0.466264 -0.535987 -0.365404 \n",
"normalized-losses 0.466264 1.000000 -0.056661 0.019424 \n",
"wheel-base -0.535987 -0.056661 1.000000 0.876024 \n",
"length -0.365404 0.019424 0.876024 1.000000 \n",
"width -0.242423 0.086802 0.814507 0.857170 \n",
"height -0.550160 -0.373737 0.590742 0.492063 \n",
"curb-weight -0.233118 0.099404 0.782097 0.880665 \n",
"engine-size -0.110581 0.112360 0.572027 0.685025 \n",
"bore -0.140019 -0.029862 0.493244 0.608971 \n",
"stroke -0.008245 0.055563 0.158502 0.124139 \n",
"compression-ratio -0.182196 -0.114713 0.250313 0.159733 \n",
"horsepower 0.075819 0.217299 0.371147 0.579821 \n",
"peak-rpm 0.279740 0.239543 -0.360305 -0.285970 \n",
"city-mpg -0.035527 -0.225016 -0.470606 -0.665192 \n",
"highway-mpg 0.036233 -0.181877 -0.543304 -0.698142 \n",
"price -0.082391 0.133999 0.584642 0.690628 \n",
"city-L/100km 0.066171 0.238567 0.476153 0.657373 \n",
"diesel -0.196735 -0.101546 0.307237 0.211187 \n",
"gas 0.196735 0.101546 -0.307237 -0.211187 \n",
"\n",
" width height curb-weight engine-size bore \\\n",
"symboling -0.242423 -0.550160 -0.233118 -0.110581 -0.140019 \n",
"normalized-losses 0.086802 -0.373737 0.099404 0.112360 -0.029862 \n",
"wheel-base 0.814507 0.590742 0.782097 0.572027 0.493244 \n",
"length 0.857170 0.492063 0.880665 0.685025 0.608971 \n",
"width 1.000000 0.306002 0.866201 0.729436 0.544885 \n",
"height 0.306002 1.000000 0.307581 0.074694 0.180449 \n",
"curb-weight 0.866201 0.307581 1.000000 0.849072 0.644060 \n",
"engine-size 0.729436 0.074694 0.849072 1.000000 0.572609 \n",
"bore 0.544885 0.180449 0.644060 0.572609 1.000000 \n",
"stroke 0.188829 -0.062704 0.167562 0.209523 -0.055390 \n",
"compression-ratio 0.189867 0.259737 0.156433 0.028889 0.001263 \n",
"horsepower 0.615077 -0.087027 0.757976 0.822676 0.566936 \n",
"peak-rpm -0.245800 -0.309974 -0.279361 -0.256733 -0.267392 \n",
"city-mpg -0.633531 -0.049800 -0.749543 -0.650546 -0.582027 \n",
"highway-mpg -0.680635 -0.104812 -0.794889 -0.679571 -0.591309 \n",
"price 0.751265 0.135486 0.834415 0.872335 0.543155 \n",
"city-L/100km 0.673363 0.003811 0.785353 0.745059 0.554610 \n",
"diesel 0.244356 0.281578 0.221046 0.070779 0.054458 \n",
"gas -0.244356 -0.281578 -0.221046 -0.070779 -0.054458 \n",
"\n",
" stroke compression-ratio horsepower peak-rpm \\\n",
"symboling -0.008245 -0.182196 0.075819 0.279740 \n",
"normalized-losses 0.055563 -0.114713 0.217299 0.239543 \n",
"wheel-base 0.158502 0.250313 0.371147 -0.360305 \n",
"length 0.124139 0.159733 0.579821 -0.285970 \n",
"width 0.188829 0.189867 0.615077 -0.245800 \n",
"height -0.062704 0.259737 -0.087027 -0.309974 \n",
"curb-weight 0.167562 0.156433 0.757976 -0.279361 \n",
"engine-size 0.209523 0.028889 0.822676 -0.256733 \n",
"bore -0.055390 0.001263 0.566936 -0.267392 \n",
"stroke 1.000000 0.187923 0.098462 -0.065713 \n",
"compression-ratio 0.187923 1.000000 -0.214514 -0.435780 \n",
"horsepower 0.098462 -0.214514 1.000000 0.107885 \n",
"peak-rpm -0.065713 -0.435780 0.107885 1.000000 \n",
"city-mpg -0.034696 0.331425 -0.822214 -0.115413 \n",
"highway-mpg -0.035201 0.268465 -0.804575 -0.058598 \n",
"price 0.082310 0.071107 0.809575 -0.101616 \n",
"city-L/100km 0.037300 -0.299372 0.889488 0.115830 \n",
"diesel 0.241303 0.985231 -0.169053 -0.475812 \n",
"gas -0.241303 -0.985231 0.169053 0.475812 \n",
"\n",
" city-mpg highway-mpg price city-L/100km diesel \\\n",
"symboling -0.035527 0.036233 -0.082391 0.066171 -0.196735 \n",
"normalized-losses -0.225016 -0.181877 0.133999 0.238567 -0.101546 \n",
"wheel-base -0.470606 -0.543304 0.584642 0.476153 0.307237 \n",
"length -0.665192 -0.698142 0.690628 0.657373 0.211187 \n",
"width -0.633531 -0.680635 0.751265 0.673363 0.244356 \n",
"height -0.049800 -0.104812 0.135486 0.003811 0.281578 \n",
"curb-weight -0.749543 -0.794889 0.834415 0.785353 0.221046 \n",
"engine-size -0.650546 -0.679571 0.872335 0.745059 0.070779 \n",
"bore -0.582027 -0.591309 0.543155 0.554610 0.054458 \n",
"stroke -0.034696 -0.035201 0.082310 0.037300 0.241303 \n",
"compression-ratio 0.331425 0.268465 0.071107 -0.299372 0.985231 \n",
"horsepower -0.822214 -0.804575 0.809575 0.889488 -0.169053 \n",
"peak-rpm -0.115413 -0.058598 -0.101616 0.115830 -0.475812 \n",
"city-mpg 1.000000 0.972044 -0.686571 -0.949713 0.265676 \n",
"highway-mpg 0.972044 1.000000 -0.704692 -0.930028 0.198690 \n",
"price -0.686571 -0.704692 1.000000 0.789898 0.110326 \n",
"city-L/100km -0.949713 -0.930028 0.789898 1.000000 -0.241282 \n",
"diesel 0.265676 0.198690 0.110326 -0.241282 1.000000 \n",
"gas -0.265676 -0.198690 -0.110326 0.241282 -1.000000 \n",
"\n",
" gas \n",
"symboling 0.196735 \n",
"normalized-losses 0.101546 \n",
"wheel-base -0.307237 \n",
"length -0.211187 \n",
"width -0.244356 \n",
"height -0.281578 \n",
"curb-weight -0.221046 \n",
"engine-size -0.070779 \n",
"bore -0.054458 \n",
"stroke -0.241303 \n",
"compression-ratio -0.985231 \n",
"horsepower 0.169053 \n",
"peak-rpm 0.475812 \n",
"city-mpg -0.265676 \n",
"highway-mpg -0.198690 \n",
"price -0.110326 \n",
"city-L/100km 0.241282 \n",
"diesel -1.000000 \n",
"gas 1.000000 "
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" sometimes we would like to know the significant of the correlation estimate. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>P-value</b>: \n",
"<p>What is this P-value? The P-value is the probability value that the correlation between these two variables is statistically significant. Normally, we choose a significance level of 0.05, which means that we are 95% confident that the correlation between the variables is significant.</p>\n",
"\n",
"By convention, when the\n",
"<ul>\n",
" <li>p-value is $<$ 0.001: we say there is strong evidence that the correlation is significant.</li>\n",
" <li>the p-value is $<$ 0.05: there is moderate evidence that the correlation is significant.</li>\n",
" <li>the p-value is $<$ 0.1: there is weak evidence that the correlation is significant.</li>\n",
" <li>the p-value is $>$ 0.1: there is no evidence that the correlation is significant.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can obtain this information using \"stats\" module in the \"scipy\" library."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"from scipy import stats"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Wheel-base vs Price</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the Pearson Correlation Coefficient and P-value of 'wheel-base' and 'price'. "
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.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": 40,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8095745670036559 with a P-value of P = 6.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": 41,
"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": 42,
"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": 43,
"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": 44,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8723351674455185 with a P-value of P = 9.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": 45,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.5431553832626602 with a P-value of P = 8.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": 46,
"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": 47,
"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 is our calculated score value.</p>\n",
"\n",
"<p>If our price variable is strongly correlated with the variable we are analyzing, expect ANOVA to return a sizeable F-test score and a small p-value.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Drive Wheels</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Since ANOVA analyzes the difference between different groups of the same variable, the groupby function will come in handy. Because the ANOVA algorithm averages the data automatically, we do not need to take the average before hand.</p>\n",
"\n",
"<p>Let's see if different types 'drive-wheels' impact 'price', we group the data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's see if different types 'drive-wheels' impact 'price', we group the data."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>rwd</td>\n",
" <td>13495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>rwd</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>fwd</td>\n",
" <td>13950.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4wd</td>\n",
" <td>17450.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>fwd</td>\n",
" <td>15250.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>136</th>\n",
" <td>4wd</td>\n",
" <td>7603.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels price\n",
"0 rwd 13495.0\n",
"1 rwd 16500.0\n",
"3 fwd 13950.0\n",
"4 4wd 17450.0\n",
"5 fwd 15250.0\n",
"136 4wd 7603.0"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_test2=df_gptest[['drive-wheels', 'price']].groupby(['drive-wheels'])\n",
"grouped_test2.head(2)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>13495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>13950.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4wd</td>\n",
" <td>sedan</td>\n",
" <td>17450.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>196</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>16845.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>197</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>19045.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>198</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21485.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>199</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>22470.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>200</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>22625.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>201 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" drive-wheels body-style price\n",
"0 rwd convertible 13495.0\n",
"1 rwd convertible 16500.0\n",
"2 rwd hatchback 16500.0\n",
"3 fwd sedan 13950.0\n",
"4 4wd sedan 17450.0\n",
".. ... ... ...\n",
"196 rwd sedan 16845.0\n",
"197 rwd sedan 19045.0\n",
"198 rwd sedan 21485.0\n",
"199 rwd sedan 22470.0\n",
"200 rwd sedan 22625.0\n",
"\n",
"[201 rows x 3 columns]"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_gptest"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can obtain the values of the method group using the method \"get_group\". "
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"4 17450.0\n",
"136 7603.0\n",
"140 9233.0\n",
"141 11259.0\n",
"144 8013.0\n",
"145 11694.0\n",
"150 7898.0\n",
"151 8778.0\n",
"Name: price, dtype: float64"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_test2.get_group('4wd')['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can use the function 'f_oneway' in the module 'stats' to obtain the <b>F-test score</b> and <b>P-value</b>."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 67.95406500780399 , P = 3.3945443577151245e-23\n"
]
}
],
"source": [
"# ANOVA\n",
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'], grouped_test2.get_group('rwd')['price'], grouped_test2.get_group('4wd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a great result, with a large F test score showing a strong correlation and a P value of almost 0 implying almost certain statistical significance. But does this mean all three tested groups are all this highly correlated? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Separately: fwd and rwd"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 130.5533160959111 , P = 2.2355306355677845e-23\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'], grouped_test2.get_group('rwd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's examine the other groups "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4wd and rwd"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 8.580681368924756 , P = 0.004411492211225333\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('rwd')['price']) \n",
" \n",
"print( \"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>4wd and fwd</h4>"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 0.665465750252303 , P = 0.41620116697845666\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('fwd')['price']) \n",
" \n",
"print(\"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Conclusion: Important Variables</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We now have a better idea of what our data looks like and which variables are important to take into account when predicting the car price. We have narrowed it down to the following variables:</p>\n",
"\n",
"Continuous numerical variables:\n",
"<ul>\n",
" <li>Length</li>\n",
" <li>Width</li>\n",
" <li>Curb-weight</li>\n",
" <li>Engine-size</li>\n",
" <li>Horsepower</li>\n",
" <li>City-mpg</li>\n",
" <li>Highway-mpg</li>\n",
" <li>Wheel-base</li>\n",
" <li>Bore</li>\n",
"</ul>\n",
" \n",
"Categorical variables:\n",
"<ul>\n",
" <li>Drive-wheels</li>\n",
"</ul>\n",
"\n",
"<p>As we now move into building machine learning models to automate our analysis, feeding the model with variables that meaningfully affect our target variable will improve our model's prediction performance.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/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