Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pavanandhukuri/0b8c58afa12291b0434d3cab350426a0 to your computer and use it in GitHub Desktop.
Save pavanandhukuri/0b8c58afa12291b0434d3cab350426a0 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/DA0101EN_edx_link_Notebook_link_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size = 5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Exploratory Data Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Welcome!</h3>\n",
"In this section, we will explore several methods to see if certain characteristics or features can be used to predict car price. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Table of content</h2>\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"<ol>\n",
" <li><a href=\"#import_data\">Import Data from Module</a></li>\n",
" <li><a href=\"#pattern_visualization\">Analyzing Individual Feature Patterns using Visualization</a></li>\n",
" <li><a href=\"#discriptive_statistics\">Descriptive Statistical Analysis</a></li>\n",
" <li><a href=\"#basic_grouping\">Basics of Grouping</a></li>\n",
" <li><a href=\"#correlation_causation\">Correlation and Causation</a></li>\n",
" <li><a href=\"#anova\">ANOVA</a></li>\n",
"</ol>\n",
" \n",
"Estimated Time Needed: <strong>30 min</strong>\n",
"</div>\n",
" \n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What are the main characteristics which have the most impact on the car price?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"import_data\">1. Import Data from Module 2</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/edx_DA0101EN_objectstorage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\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",
" <td>1</td>\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",
" <td>2</td>\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",
" <td>3</td>\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",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"path='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"pattern_visualization\">2. Analyzing Individual Feature Patterns using Visualization</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To install seaborn we use the pip which is the python package manager."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"! pip install seaborn"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import visualization packages \"Matplotlib\" and \"Seaborn\", don't forget about \"%matplotlib inline\" to plot in a Jupyter notebook."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How to choose the right visualization method?</h4>\n",
"<p>When visualizing individual variables, it is important to first understand what type of variable you are dealing with. This will help us find the right visualization method for that variable.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"symboling int64\n",
"normalized-losses int64\n",
"make object\n",
"aspiration object\n",
"num-of-doors object\n",
"body-style object\n",
"drive-wheels object\n",
"engine-location object\n",
"wheel-base float64\n",
"length float64\n",
"width float64\n",
"height float64\n",
"curb-weight int64\n",
"engine-type object\n",
"num-of-cylinders object\n",
"engine-size int64\n",
"fuel-system object\n",
"bore float64\n",
"stroke float64\n",
"compression-ratio float64\n",
"horsepower float64\n",
"peak-rpm float64\n",
"city-mpg int64\n",
"highway-mpg int64\n",
"price float64\n",
"city-L/100km float64\n",
"horsepower-binned object\n",
"diesel int64\n",
"gas int64\n",
"dtype: object\n"
]
}
],
"source": [
"# list the data types for each column\n",
"print(df.dtypes)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h3>Question #1:</h3>\n",
"\n",
"<b>What is the data type of the column \"peak-rpm\"? </b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"float64\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"for example, we can calculate the correlation between variables of type \"int64\" or \"float64\" using the method \"corr\":"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>symboling</td>\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",
" <td>normalized-losses</td>\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",
" <td>wheel-base</td>\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",
" <td>length</td>\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",
" <td>width</td>\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",
" <td>height</td>\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",
" <td>curb-weight</td>\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",
" <td>engine-size</td>\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",
" <td>bore</td>\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",
" <td>stroke</td>\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",
" <td>compression-ratio</td>\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",
" <td>horsepower</td>\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",
" <td>peak-rpm</td>\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",
" <td>city-mpg</td>\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",
" <td>highway-mpg</td>\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",
" <td>price</td>\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",
" <td>city-L/100km</td>\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",
" <td>diesel</td>\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",
" <td>gas</td>\n",
" <td>0.196735</td>\n",
" <td>0.101546</td>\n",
" <td>-0.307237</td>\n",
" <td>-0.211187</td>\n",
" <td>-0.244356</td>\n",
" <td>-0.281578</td>\n",
" <td>-0.221046</td>\n",
" <td>-0.070779</td>\n",
" <td>-0.054458</td>\n",
" <td>-0.241303</td>\n",
" <td>-0.985231</td>\n",
" <td>0.169053</td>\n",
" <td>0.475812</td>\n",
" <td>-0.265676</td>\n",
" <td>-0.198690</td>\n",
" <td>-0.110326</td>\n",
" <td>0.241282</td>\n",
" <td>-1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses wheel-base length \\\n",
"symboling 1.000000 0.466264 -0.535987 -0.365404 \n",
"normalized-losses 0.466264 1.000000 -0.056661 0.019424 \n",
"wheel-base -0.535987 -0.056661 1.000000 0.876024 \n",
"length -0.365404 0.019424 0.876024 1.000000 \n",
"width -0.242423 0.086802 0.814507 0.857170 \n",
"height -0.550160 -0.373737 0.590742 0.492063 \n",
"curb-weight -0.233118 0.099404 0.782097 0.880665 \n",
"engine-size -0.110581 0.112360 0.572027 0.685025 \n",
"bore -0.140019 -0.029862 0.493244 0.608971 \n",
"stroke -0.008245 0.055563 0.158502 0.124139 \n",
"compression-ratio -0.182196 -0.114713 0.250313 0.159733 \n",
"horsepower 0.075819 0.217299 0.371147 0.579821 \n",
"peak-rpm 0.279740 0.239543 -0.360305 -0.285970 \n",
"city-mpg -0.035527 -0.225016 -0.470606 -0.665192 \n",
"highway-mpg 0.036233 -0.181877 -0.543304 -0.698142 \n",
"price -0.082391 0.133999 0.584642 0.690628 \n",
"city-L/100km 0.066171 0.238567 0.476153 0.657373 \n",
"diesel -0.196735 -0.101546 0.307237 0.211187 \n",
"gas 0.196735 0.101546 -0.307237 -0.211187 \n",
"\n",
" width height curb-weight engine-size bore \\\n",
"symboling -0.242423 -0.550160 -0.233118 -0.110581 -0.140019 \n",
"normalized-losses 0.086802 -0.373737 0.099404 0.112360 -0.029862 \n",
"wheel-base 0.814507 0.590742 0.782097 0.572027 0.493244 \n",
"length 0.857170 0.492063 0.880665 0.685025 0.608971 \n",
"width 1.000000 0.306002 0.866201 0.729436 0.544885 \n",
"height 0.306002 1.000000 0.307581 0.074694 0.180449 \n",
"curb-weight 0.866201 0.307581 1.000000 0.849072 0.644060 \n",
"engine-size 0.729436 0.074694 0.849072 1.000000 0.572609 \n",
"bore 0.544885 0.180449 0.644060 0.572609 1.000000 \n",
"stroke 0.188829 -0.062704 0.167562 0.209523 -0.055390 \n",
"compression-ratio 0.189867 0.259737 0.156433 0.028889 0.001263 \n",
"horsepower 0.615077 -0.087027 0.757976 0.822676 0.566936 \n",
"peak-rpm -0.245800 -0.309974 -0.279361 -0.256733 -0.267392 \n",
"city-mpg -0.633531 -0.049800 -0.749543 -0.650546 -0.582027 \n",
"highway-mpg -0.680635 -0.104812 -0.794889 -0.679571 -0.591309 \n",
"price 0.751265 0.135486 0.834415 0.872335 0.543155 \n",
"city-L/100km 0.673363 0.003811 0.785353 0.745059 0.554610 \n",
"diesel 0.244356 0.281578 0.221046 0.070779 0.054458 \n",
"gas -0.244356 -0.281578 -0.221046 -0.070779 -0.054458 \n",
"\n",
" stroke compression-ratio horsepower peak-rpm \\\n",
"symboling -0.008245 -0.182196 0.075819 0.279740 \n",
"normalized-losses 0.055563 -0.114713 0.217299 0.239543 \n",
"wheel-base 0.158502 0.250313 0.371147 -0.360305 \n",
"length 0.124139 0.159733 0.579821 -0.285970 \n",
"width 0.188829 0.189867 0.615077 -0.245800 \n",
"height -0.062704 0.259737 -0.087027 -0.309974 \n",
"curb-weight 0.167562 0.156433 0.757976 -0.279361 \n",
"engine-size 0.209523 0.028889 0.822676 -0.256733 \n",
"bore -0.055390 0.001263 0.566936 -0.267392 \n",
"stroke 1.000000 0.187923 0.098462 -0.065713 \n",
"compression-ratio 0.187923 1.000000 -0.214514 -0.435780 \n",
"horsepower 0.098462 -0.214514 1.000000 0.107885 \n",
"peak-rpm -0.065713 -0.435780 0.107885 1.000000 \n",
"city-mpg -0.034696 0.331425 -0.822214 -0.115413 \n",
"highway-mpg -0.035201 0.268465 -0.804575 -0.058598 \n",
"price 0.082310 0.071107 0.809575 -0.101616 \n",
"city-L/100km 0.037300 -0.299372 0.889488 0.115830 \n",
"diesel 0.241303 0.985231 -0.169053 -0.475812 \n",
"gas -0.241303 -0.985231 0.169053 0.475812 \n",
"\n",
" city-mpg highway-mpg price city-L/100km diesel \\\n",
"symboling -0.035527 0.036233 -0.082391 0.066171 -0.196735 \n",
"normalized-losses -0.225016 -0.181877 0.133999 0.238567 -0.101546 \n",
"wheel-base -0.470606 -0.543304 0.584642 0.476153 0.307237 \n",
"length -0.665192 -0.698142 0.690628 0.657373 0.211187 \n",
"width -0.633531 -0.680635 0.751265 0.673363 0.244356 \n",
"height -0.049800 -0.104812 0.135486 0.003811 0.281578 \n",
"curb-weight -0.749543 -0.794889 0.834415 0.785353 0.221046 \n",
"engine-size -0.650546 -0.679571 0.872335 0.745059 0.070779 \n",
"bore -0.582027 -0.591309 0.543155 0.554610 0.054458 \n",
"stroke -0.034696 -0.035201 0.082310 0.037300 0.241303 \n",
"compression-ratio 0.331425 0.268465 0.071107 -0.299372 0.985231 \n",
"horsepower -0.822214 -0.804575 0.809575 0.889488 -0.169053 \n",
"peak-rpm -0.115413 -0.058598 -0.101616 0.115830 -0.475812 \n",
"city-mpg 1.000000 0.972044 -0.686571 -0.949713 0.265676 \n",
"highway-mpg 0.972044 1.000000 -0.704692 -0.930028 0.198690 \n",
"price -0.686571 -0.704692 1.000000 0.789898 0.110326 \n",
"city-L/100km -0.949713 -0.930028 0.789898 1.000000 -0.241282 \n",
"diesel 0.265676 0.198690 0.110326 -0.241282 1.000000 \n",
"gas -0.265676 -0.198690 -0.110326 0.241282 -1.000000 \n",
"\n",
" gas \n",
"symboling 0.196735 \n",
"normalized-losses 0.101546 \n",
"wheel-base -0.307237 \n",
"length -0.211187 \n",
"width -0.244356 \n",
"height -0.281578 \n",
"curb-weight -0.221046 \n",
"engine-size -0.070779 \n",
"bore -0.054458 \n",
"stroke -0.241303 \n",
"compression-ratio -0.985231 \n",
"horsepower 0.169053 \n",
"peak-rpm 0.475812 \n",
"city-mpg -0.265676 \n",
"highway-mpg -0.198690 \n",
"price -0.110326 \n",
"city-L/100km 0.241282 \n",
"diesel -1.000000 \n",
"gas 1.000000 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The diagonal elements are always one; we will study correlation more precisely Pearson correlation in-depth at the end of the notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2: </h1>\n",
"\n",
"<p>Find the correlation between the following columns: bore, stroke,compression-ratio , and horsepower.</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[['bore','stroke' ,'compression-ratio','horsepower']]</p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>bore</td>\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",
" <td>stroke</td>\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",
" <td>compression-ratio</td>\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",
" <td>horsepower</td>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" bore stroke compression-ratio horsepower\n",
"bore 1.000000 -0.055390 0.001263 0.566936\n",
"stroke -0.055390 1.000000 0.187923 0.098462\n",
"compression-ratio 0.001263 0.187923 1.000000 -0.214514\n",
"horsepower 0.566936 0.098462 -0.214514 1.000000"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df_temp = df[['bore','stroke','compression-ratio', 'horsepower']]\n",
"df_temp.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": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [],
"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",
" <td>engine-size</td>\n",
" <td>1.000000</td>\n",
" <td>0.872335</td>\n",
" </tr>\n",
" <tr>\n",
" <td>price</td>\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 0x7f876008b5f8>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZoAAAEGCAYAAABcolNbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXzc1Xno/88zu0b7NrLxgi1sIwEBAmYLiePYbkKWZmkIgaQJff1IoWlS6O1Nb5K2SfnlJr9C25sEml8SKKEkaRogNC1uG0JjGeMAxmCzG8mW8b5ptFnb7DPn/vH9zngkjzSSpdGM5Of9eglJZ7YzYzHPnHOe8xwxxqCUUkoViqPYHVBKKTW/aaBRSilVUBpolFJKFZQGGqWUUgWlgUYppVRBuYrdgVLT0NBgli1bVuxuKKXUnLJz584eY0xjrss00IyxbNkyduzYUexuKKXUnCIiB8e7TKfOlFJKFZQGGqWUUgWlgUYppVRBaaBRSilVUBpolFJKFZRmnc2QLR1B7tu6j8P9IZbU+rltTTNrWwLF7pZSShWdjmhmwJaOIF/fuIvgUISaMjfBoQhf37iLLR3BYndNKaWKTgPNDLhv6z7cTsHvcSFifXc7hfu27it215RSqug00MyAw/0hytzOUW1lbidH+kNF6pFSSpUODTQzYEmtn3A8OaotHE+yuNZfpB4ppVTp0EAzA25b00w8aQjFEhhjfY8nDbetaS5215RSqug00MyAtS0BvvHhCwlU+hgIxwlU+vjGhy/UrDOllELTm2fM2paABhallMpBRzRKKaUKSgONUkqpgtJAo5RSqqA00CillCooDTRKKaUKSgONUkqpgtL0ZgVo9WmlVOHoiEZp9WmlVEHpiGaGzOURQXb1aQC/x0UoluC+rfvmzHNQSpUuHdHMgLk+ItDq00qpQtJAMwPm+nk0Wn1aKVVIRQ80IuIUkZdF5D/t3+tE5Dci0ml/r8267ldFZK+I7BaR92W1Xy4ir9uX3SsiYrd7ReQRu327iCwrxHOY6yMCrT6tlCqkogca4A6gPev3rwBtxpiVQJv9OyJyAXAjcCFwHfB9EUm/u/8AuBVYaX9dZ7ffAvQbY1YA3wHuLsQTmOsjAq0+rZQqpKImA4jIYuCDwLeAP7ObPwKstX/+MbAF+LLd/rAxJgrsF5G9wJUicgCoMsZss+/zJ8BHgSfs29xp39djwPdERIwxZiafx21rmvn6xl2EYgnK3E7C8eScGxFo9WmlVKEUe0TzXeB/AamstiZjzHEA+3v63W8RcDjrekfstkX2z2PbR93GGJMABoD6sZ0QkVtFZIeI7Oju7p7yk9ARgVJKja9oIxoR+RAQNMbsFJG1k7lJjjYzQftEtxndYMz9wP0Aq1evPqPRjo4IlFIqt2JOnV0LfFhEPgD4gCoR+WegS0QWGmOOi8hCIJ0jfARYknX7xcAxu31xjvbs2xwRERdQDfQV6gkppZQ6XdGmzowxXzXGLDbGLMNa5N9sjPl9YCNws321m4HH7Z83AjfamWTLsRb9X7Cn14ZE5Go72+yzY26Tvq/r7ceY0fUZpZRSEyvFygB3AY+KyC3AIeATAMaYXSLyKPAmkAC+YIxJp3p9HngIKMNKAnjCbv8R8FM7caAPK6AppZSaRaIf8EdbvXq12bFjR7G7oZRSc4qI7DTGrM51WbGzzpRSSs1zpTh1puahuVx0VCk1PRpo5olSfiNPFx11O2VU0dFvQMn0USlVODp1Ng+UevXouV50VCk1PRpo5oFSfyOf60VHlVLTo1Nns6SQU1uH+0PUlLlHtZXSG/mSWj/BoUjmYDWYW0VHlVLToyOaWTATU1tbOoLcdP/zvPPuzdx0//Ojblvq1aP1GAKlzm4aaGbBdKe28gWqUn8j16KjSp3ddOpsFkxmamuiqbXsQAXg97gIxRLct3VfppjnN+zrHekPsbjEss5Ai44qdTbTQDML8q1R5Ev/nUyg0jdypVSp0qmzWZBvaivf1Fqpr8EopdREdEQzC/JNbR3uD+EU2Nc9TCyZwuN00FDhyYxY5sMJnqW8oVQpVVgaaGbJRFNblV4XncFhnA7B6RASKcPRkxFWBioyty31NZiJaGUApc5uGmhKQKaCdrqQthnTztxeg8mXzKCUmt90jaYEDMeSLKrx4XIKSWNwOYVFNT5GYsn8N54DtDKAUmc3HdGUgHRWWnNjRaYtFEsQqPQVsVczRysDKHV20xFNCSj1DZfTNd+fn1JqYhpoSsB83zm/tiXA9ZctonsoSvuJIbqHolx/2aJ58/yUUhPTqbMSkW+xfy6nB2/pCPLYS0dprPSy1E7Pfuylo1y8uGbOPAel1JnTEc0cUOrnzeRT6scYKKUKSwPNHDDX36gP94dIJFPs6x6m48Qg+7qHSSRTmnWm1FlCA80cMNfTgyu9Lo6ejJBImVEbUiu8OnOr1NlAA80cMNdrnY3akJr+YvSGVKXU/KWBZg6YjfTgiQ5Wm675viFVKTUxDTRzQKHTnwudbLCk1o/L6aC5sYKWBVU0N1bgcjrmzIhMKTU9RZskFxEfsBXw2v14zBjz1yJSBzwCLAMOADcYY/rt23wVuAVIArcbY5602y8HHgLKgF8BdxhjjIh4gZ8AlwO9wCeNMQdm6SnOqELWOit0LbL5UH1aKXXmijmiiQLrjDGXAJcC14nI1cBXgDZjzEqgzf4dEbkAuBG4ELgO+L6IpFfIfwDcCqy0v66z228B+o0xK4DvAHfPxhObawqdbDDfN6QqpSZWtBGNsVaCh+1f3faXAT4CrLXbfwxsAb5stz9sjIkC+0VkL3CliBwAqowx2wBE5CfAR4En7Nvcad/XY8D3RETMBKvQiZQhOBihqsyNb8yb73w1G7XI5nL1aaXU9BR1jUZEnCLyChAEfmOM2Q40GWOOA9jf0+9Oi4DDWTc/Yrctsn8e2z7qNsaYBDAA1Ofox60iskNEdvT2dDMcTXDsZJhjJ8MMRxPzPjtKa5EppQqpqIHGGJM0xlwKLMYanVw0wdUl111M0D7Rbcb2435jzGpjzOr6hsZMeySeJDgY4XBfmP6RGIlkaoLuzV06taWUKqSS2DFnjDkpIluw1la6RGShMea4iCzEGu2ANVJZknWzxcAxu31xjvbs2xwRERdQDfRNtX+JVIr+UIyT4Th+j5Mqn5syz/yaVtOpLaVUoRRtRCMijSJSY/9cBmwAOoCNwM321W4GHrd/3gjcKCJeEVmOtej/gj29NiQiV4uIAJ8dc5v0fV0PbJ5ofSYfYwwj0QTHB8Ic7gsxEI6TSs3vabWZUsh9Okqp0lbMEc1C4Md25pgDeNQY858isg14VERuAQ4BnwAwxuwSkUeBN4EE8AVjTHrH3+c5ld78hP0F8CPgp3biQB9W1tqMiCdT9A5H6R+JUe51UVXmwuuaX6OcmbKlI8iXHnuV4WiCZMrQMxzlS4+9yt9ff4mOopQ6C8h8X+ieqksvu9z88smnz+i2PreTqjI35R4n1uBKAVz3nafZ2z2CUwQRMAaSxrCisZxf/493F7t7SqkZICI7jTGrc11WEms080UkniQST+JyOKj0uaj0uXA5tfjC/t4QDgGHwwq+ImBShv29c6MoqFJqejTQFEB28kC5x3lW7clRSqmx9ON2ARljMntyjp4le3JyaW4oJ2UgZQwGQ8oYUsZqV0rNfxpoxijUXplo1p6ck6HYWZWt9uXrWqj1uxGs11eAWr+bL1/XUuyuKaVmgSYDjOFduNK8/68eYkNrgDUrG6nwFWZ20SFChc9FdZkb91mwjrOlI8h9W/dxpD/E4lo/t61p1owzpeaRiZIBNNCM4V240iy8+bsAuJ3CVcvrWd8a4JrmejyuwgQEv8cKOPNtE6hS6uyhWWdTsKTWz5qWAM/t7SGSSPHM3h6e2dtDucfJO1c2sKG1iUuX1OB0zFz6ciiWIBRL4HE5qC5zU+F1aXq0Umre0BHNGOl9NOFYkmff6qGtPciLB/rIXlKpK/fwnvMbWd8a4PymyhkPCk6HUOVzU1XmntGAVkzpqbPD/SGW6NSZUvOOTp1NQa4NmydDMbbs7qatI8iuY4OjLltcW8a6lgAbWgMzfmKkiFDudVJd5p7TVQfSJ3i6nTLq4DMt3KnU/KGBZgryVQY4PhBmc0eQTe1BDo7ZcHh+UyXrWwO85/xG6iu8M9qvMo8VcLLPjJkrbrr/+dPOuwnFEgQqffz81quL2DOl1EzRNZoZtLC6jE9fdS6funIp+7pHaOsI0tYepHs4yu6uIXZ3DfHDp9/i7UtqWNfaxLtWNlDhnf7LHI4lCceSuJ0OqsrcVHpdmZ32pe5wfwinwL7uYWLJFB6ng4YKz4yd4KmUKm0aaM6QiHBeoILzAhV87l3Lef3oAG3tQZ7e081QJMHOQyfZeegk3920h2ua61nXGuDq5dPPXMsu5lnpc1E1B9KjK70uOoPDOB2C0yEkUoajJyOsDFQUu2tKqVmggWYGOES4ZHENlyyu4U/WreDFA320tQd57q1eookUWzt72NrZQ7nXybtXNrKuNcAli6eXuZYyhoFwnIFwHL/HxauH+3nouYMludiemZ5Nz9KaMe1KqXlNA80MczsdvOO8Bt5xXgOhWIJn9vbS1t7FzoP9jEST/OqNE/zqjRPUV3hYd36A9a0BVgYqppW5tqUjyD2bO3E7hUqvi67BMF/fuItvQEkEm+FYkkU1PnqGY5mpswUVXkZiyfw3VkrNeRpoCsjvcfHeC5p47wVN9I1YmWubO7p48/gQvcMxfrHzCL/YeYQltWVsaG1iXUuARbVlU36ch188jMsh+FxOkimDy+kgZVL88Om3SiLQLKn1ExyK0Nx4aqosnQyglJr/NNCMUajl9bpyD7932SJ+77JFHD1pZa61tQc51BficH+Yf3ruAP/03AFaFlSyoTXA2vMD1JV7JnXfxwfDVGWXyjFWVYMDvSMEhyJFT4++bU0zX9+4i1AsMSq9+bY1zUXrk1Jq9mh68xirV682z29/gXDcyvIKx5MkC1QA0xjD3uAwbR1BNncE6RmOZS5zCFy2tJYNrQGuXdFA+QSZa3/2yKv0jkQpyzqKIBxPUl/u5dufvAQofnq01jpTan7T9OYpcjkdVDodVPrcgHWgWTroROIzt64gIqxsqmRlUyV/+K5mXj86wKb2Lrbu6WE4mmDHwX52HOzH4+rkmuZ6NrQGuHJ53WlZZjdesYR7NncSjifxuR1E4ikSKcONVyzJXCc7Pbrab6VHF6PMzZmGbK0soNTcpSOaMVavXm127Ngx7uWplCEcTxKy37gTqZk/ViCWSPHC/j7aOoJs29dLLHHqMSp9LtastMrfXLy4GocdLF7Y18fDLx7mxGCYBVVl3HjFEq5srhv3MZwOodLnpmoWTgGdbmUArSygVOnTygBTkC/QjBVNWAEnFEsSTaRmPGV3JJrgt509tHUEeflQ/6iaaw0VHrv8TRPnNZaf0QhFRAp+Cuh0KwPcdP/zHOgdZjCcyGStVZW5WFZfoZUFlCoROnVWQF6XE6/LSY2/MKOdcq+L6y5awHUXLaBvJMZTu60kgo4TQ/QMx3h0xxEe3XGEc+v8rG8NsK4lwDk1k89cS58COhwtXPXow/0hasrco9rK3M5JVwboDA4xEIrjyNrw2TMUI54cmrE+KqUKRwPNDHI4hHKvK7Nwnz3amYm1nbpyDx+/bDEfv2wxR/pDmZprR/rDHOwL8eCzB3jw2QNcsLCK9a0B1p7fSK1/cplrYE3ZdQ9F6RuJnTatNp01knR6c/aIJhxPTroIaSyRAiEzTSgCKTGjphSVUqVLp87GmOrU2WQlM6OdBOHYzGWyGWPoDA7T1m5lrvWOjM5cW72sjvUtAd65omHKB6ulp9VeOXSSb/6qvWhrLJf/7/9mMJLAgSACxkAKQ7XPxY6vvReAezft4YFn9jMSS1LucfK5dy7n9g2rpvR8lVJnTqfOSoDTIVR4XZkCm+lMtlA8SXQaox0RYVVTJauaKrl1TTOvHj7JpvYgv+3sZiSW5IX9fbywvw+fy8E7VjSwviXA6mW1k6qPlp5W+/6WtwCD12X13e9xEYoluG/rvkkFirUtAb4BZ5zevKqpiv09wwxFTq3RVPrcLG+wNoDeu2kP92zei0PA5bBGS/ds3gugwUapEqAjmjEKNaKZSCFGO9F4ku37+9jUHmT7/l7iyVP3WeVz8e7zG1nfEuCiRacy18Zz0z8+T5XPhSAg4BTBITAYSfDbL6+bdl/zyTciuvjOJwnHk7gcp4JnIpWizO3ktTvfV/D+KaV0RFPyCjHa8bqdrFnVyJpVjQxHEmzttA5ue+XQSQYjCf7j1eP8x6vHCVR6Mwe3ZZeIybawquzUhlADSWMYjicJVPoIx5JTnpKbqnwjopFYkrFFsR2C1lJTqkQUbUQjIkuAnwALgBRwvzHmHhGpAx4BlgEHgBuMMf32bb4K3AIkgduNMU/a7ZcDDwFlwK+AO4wxRkS89mNcDvQCnzTGHJioX8UY0UwkmTKZkc5MVCnoGY7yVEeQto4ge7qGR13W3FDOupYA61oDLKg6VYfshX193LO506qnlrUh9I51K7myuS6zCbTCU5wzcnREo1TxleQ+GhFZCCw0xrwkIpXATuCjwB8AfcaYu0TkK0CtMebLInIB8HPgSuAcYBOwyhiTFJEXgDuA57ECzb3GmCdE5I+Bi40xfyQiNwIfM8Z8cqJ+lVqgGWum1nYADvWGaOvooq0jyLGTkVGXvW1RFetamli7qpFqv5ufPneAR3ceIRxPUuZ2csPli/nMO5aNuo1DhEqfi0qfe9rn7kxF9hqNQyBlrK871q3QNRqlZklJBpqxRORx4Hv211pjzHE7GG0xxpxvj2YwxvyNff0ngTuxRj1PGWNa7Pab7Nvflr6OMWabiLiAE0CjmeBJl3qgyTZTazvGGDpODNHWHuSp3UH6Q/HMZU6HsLKxghODEcq9Tvwe52kjmlzKPE6qfO4Ja7TNJM06U6q4Sn6NRkSWAW8HtgNNxpjjAHawSacmLcIasaQdsdvi9s9j29O3OWzfV0JEBoB6oGfM498K3AqwdOnSmXpaBZdrbScUSzISTRBPTn6PiYgwFE6wr3sEt1Nobiinxu+m48QQoViSji5rY+RAJE6Fx0Wlz4VTrOMJxgs02bXVKn0uHnp2Pw8+e6BggeD2Das0sChVoiYdaETkXGClMWaTiJQBLmPMtLdmi0gF8K/AnxpjBifYkZ7rAjNB+0S3Gd1gzP3A/WCNaPL1uVT53E58bid15R7iyVSmQkEkniQ1wcg1ew2musxNJJ7i+ECEr17XQjxluPvXHXZ5HRiKJhiKJnAK9I3EeOPoABeeUzVuJYF4MsU9v9nDj58/iEPAKbnTj7VoplLz16Qm0kXkD4HHgPvspsXAv0/3wUXEjRVkfmaM+aXd3GVPmaXXcYJ2+xFgSdbNFwPH7PbFOdpH3caeOqsG+qbb77nA7bTKySyo9nFuvZ+F1WVUl7lz7p95+MXDJJJJeoaj7O8ZoWc4SiKZ5F9fOsra8xtpXVDFomofgUpv5iiCpIFQPMXtD7/Cpx94gR89s5/9PSM5+/LoziNWtloKYklIJA0mZXjgmf3AqfTl4FCEmjI3waEIX9+4iy0dwZz3p2bflo4gN93/PO+8ezM33f+8/tuoKZnsiOYLWIvw2wGMMZ1ZU1pnRKyPwD8C2o0x3866aCNwM3CX/f3xrPZ/EZFvYyUDrAResJMBhkTkart/nwX+Ycx9bQOuBzZPtD4zX4kIZR4nZR4n9VijjMx5O7EkB/tGGArHEYfgsGuJ9Y/ESaSswJE+hsDrclBd62M4mmQ4mqDC6+L4QIQTgxF+tv0QP9t+CJdDaKz0cvPV5/LeixYAEIolRw0jjf01FElwMhTjh0+/RTyZpHd4dNHM7A2hOuIpnux9TNkfBErlqHBV+iYbaKLGmJhkak2JizM/WiTtWuAzwOsi8ord9hdYAeZREbkFOAR8AsAYs0tEHgXeBBLAF4wx6bSrz3MqvfkJ+wusQPZTEdmLNZK5cZp9nhfcTgdup4MqnxtjDInk6bXEklm1xK5sruMOVo46huCOddYxBAd6R/jptoNs3dND0hgSKcPxgQh3PbmbR3Yc4WOXnTNuP8SeftvdNcRQePyimfPhjW4uB8r7tu7D7ZRMrbqpVoZQarKB5mkR+QugTER+B/hj4D+m88DGmGcY/+Tk9ePc5lvAt3K07wAuytEewQ5UKjcRweNyEIoniSVSmU8PDgGP89Q/z5XNdTkX/pfVl9M/EmdhtddKKogkGIokSBrD/t4Rvv2bznEfu8xOgU4XzRQRjLH+KAynAt1svNEVMhDM9UA53erbSk12s8NXgG7gdeA2rL0qf1WoTqnZFaj0YVJkwr5Y7/Q0VflYUO2japy1nbTjg2Fras7tJFDppbnBzznVXnxux6jjpU97XHtTqNsOaKmUwRiTSdN2OaxpvsP9odPuZybf6Aq9RpQdKEWs726ncN/WfTNy/4W2pNZPeMyeralU31ZqsoGmDHjQGPMJY8z1wIN2m5oHjDE4HILH4cDncuBxODI7/P0eFw0VXpbU+Vlc66e+3EuZxzkqy2xhVRmR+Kl0ahHB6XDQ0lTFv37+Gqq9uYPNwb4Q97Z10ljho9rnwuUUUsbgsj/5L62r4HBfiECll5FYYtRtp/pGN9FidqEDweH+EIlkin3dw3ScGGRf9zCJZGrOjAhuW9NMPGlVqDDG+h5PGm5b01zsrqk5YrKBpo3RgaUMa2e+mgeGY0kW1fhwOYWk/Ua/qMZ3Wq0wj8sqNbOwuoxl9f7MaOfTVy2lPxRjT3A489UfinHjFUvwuZ0Mj1NzLGXg3185Rmf3MCcj1p6bRTVlNFR4cbuc3HiFlWR4w+VLiMRTDIRjxJMpRqLx097oJgok+UYshR4xVXpdHD0ZIZEymTWooycjmf1PpW5tS4BvfPhCApU+BsJxApU+PUZbTclk/9J9xphMYSxjzLCI6Lh5nkgfTJZdVDN91PJ40p/8/R4XxwfCDEdHB5PhaJLdJwa5srmO5ARpI82N5ezrHiGZMgxGEta5MwKXLa1heWM5YK0PXXeiiUd3HuFIPEyZ28nvX7WUq8+rB6xA8uePvcpQJEEilaJnKMqfP/Yqf3f9JaxtCXDf1n0TZrVN92C2fDKJjunXwYxpnwPWtgQ0sKgzNtkRzYiIXJb+xS5iGS5Ml9Rsm+7UyPee2puz/Z+3H8TlcOAaJ+XDJfDAZ1fzp+tXUu514rSn61IGdhw8yY33P8+fPfoK39u8l1/tOkFduYfzGsupK/ew8bXj/PtLRzl6Msz/96t2+kZiGMDldGCA/lCcu3/dAVhHQfcMxUaNKHqGYnQGh2bk+ecz2RGjUvPVZEc0fwr8QkTSGyEXAhMWp1Rzx3QPJouNM2SJp2BpvZ/zAhV0dg2TXRTHASytt0YsW3Z3U+f34HNZlaEHowmGInFSBl45PMArhwcAKM/UT3NCIpUpgbO/19rvk86aSxfX3Ndzqn2io6Cn+/zzOZMRo1LzyaQCjTHmRRFpAc7Hyk3qMMbE89xMzSH5pkamk/771fe3Zqa24skULodQ7nVlRgzHB8OZg9XSG0sbK9z0Dse47Nw62uy1lJFYkpFYEodAudfFcDRBMp2plhXr0tWbRaxGt1MIx62stvRR0DA6fbuQU0O3rWnm6xt3EYolRh3cpovp6mwx4dSZiKyzv/8e8LvAKqwd+b9rt6mzwHTTf9e2BPjM1edaRweI4HU7+YN3LOOGK5awsLqMJbV+oonRRUCjCcO59RX85Qdbeds51dSVuym3D1hLGauqQH8ozg33bSM1Xv1QYxgIx1kZqKS+3DNq6qq+3MPKpqrpvCyTpovp6myXb0TzbmAzVpAZywC/zNGu5pnpbpjc0hHksZeO0ljpZan9if6xl45y8eIa1rYE+OJ7VvD1jbtIpFJ4XE7CsQSJlMlknX36qqXcs7mTco+LpiqhPxRnOGqto2QfaTBWykDvcJSPvX0R927eS1OVF7/HVZQRhS6mq7PZhIHGGPPXIuIAnjDGPDpLfVIlZro7w/MFqlxrJH/4zuVc0VxHOJbMZJelS+CcW1fOjVcsYUl9GZs7gvzomQM5H9dgBZorltfxJ+9ZwcMvHqZrKMyS2nI+/+65UwJGqbku7xqNMSYlIl8ENNDMYxOtweRL/7ULCZwmvQIymUA13if+SrseW1OVjw0XNhGKJklkzZV9+qpz+em2A+RK4EoZ+OT9z/P2JTWsa23iGx+9MLN3xeVw0D8So9LnwjVB1QOl1PRN9v+w34jIl0RkiYjUpb8K2jM1a/KtweRL//WM83ElvR9xuiVM0tWnGyq8LK33c05NGTV+T+a4aL/HlbNonmAFm52HTvJ3T+7m4z94jjs37uK3nT2EYgn6QzEO94cJDkYIa6qxUgUz2fTm/wfrQ+sfj2nXtJl54EymtrJHPF6Xi2gicdr9elzW/d22ppkvPfYqR0+GSdp7WSq8Lr72wQvOqL9jD3hb2VTJgZ4Re90mhdvpoNzj5JwaPzdcsZi29iDPvdVLNJFia2cPWzt7KPc6WbOykfWtAS5ZXMPm9iCP7DhM12CEpXV+/ujd551VU2tzubq0Kn2TDTQXYAWZd2IFnN8CPyxUp9TsOtwfwimwr3s4s3O+ocKTcw0m1xSZx+XAbZ9lk04fTqVMZsQBVnHMaNza55JIGryuyR81DeO/EbqdDr6wdgVfeuzVzCmiKTvd+VNXLuXK5jrecV4DoViCZ/b20tbexc6D/YxEkzzxxgmeeOMEVT4XyZShwuui0ufk6Mkwf/nvb/D1D7XyvosWTqmfc9Fcry6tSt9kA82PgUHgXvv3m+y2GwrRKTW7Kr0uOoPDOLPOgzl6MsLKgLXBMN8b0cpAJR0nBhgIJ0gZa7NkdZmLlYFKAO7+dQcj0SQelyMTiEaiSe7+dceks9byvREKIPZqkSC4HEJ9hYdav4eQPW333guaeO8FTfSNxHh6Tzdt7V28eXyIwYg1GhuJJekLCVU+N26n8IMt+7jgnGoqfS4qvNNbyynlEYOeN6MKbbL/55xvjPmcMeYp++tWrM2bag2vd4wAACAASURBVB4YVYsr/ZXVnq+68TXNdZkgA9a6yEA4wTX2+TX7ekbs3fqCIDhERu3czyff49+3dR/JlCGWTJFIQSyZIpkyPPjsAWrLPSyqKWNpnZ/6Ciu9ub7Cy8fevojvfeoy/vmWKyn3OjNHFcSTht6RGCcGo+w6NsAjLx5ib3CYw/1hugYjjEQTU65RVupHVRe6qKhSkw00L9tHJQMgIlcBzxamS2q25avFle+N6Ik3TmSCTFrKWO0zId/j7zo2QF8ofurQNAN9oTi7jg1kru9yOqguc7Og2jeq8vS59eWsbKykqdLL0toyasvcuOyaa/GU4XtPvcUN923jz3/xKr986Qj7uoc51BeieyhKJD65BIJSP49Gz5tRhTbZQHMV8JyIHBCRA8A24N0i8rqIvFaw3qlZsaTWj8vpoLmxgpYFVTQ3VuByOjJvNPneiPZ0DeW833T78nq/VRbGLheTShlSxmqfbP8mevxMcUrJ+spuHyP9Zp8+Z+eL684DrPWlhkoPC6q81JW7ueLcWiq8LrvIZz93/3o3v/u9Z/nI957l3k2dHOgZ4XBfiJOhmHUc9jhKfcSg582oQptsoLkOWI5VKeDd9s8fAD5E7qoBag7J90aT7/LxjgFIt3/l/a3U+N2IA5LGIA6o8bv5yvtbZ6R/KXs4Zcypr+z2fDZcsIBvfvQizqnxE44lWVhTxtc+eAF/+4lLeOyPruEzVy3F53ZkUqhPhuP8dPtBPvb957jriQ42dwQ50DvCsZNhBiPxzAmhaaU+YtASOarQJltU82ChO6KKJ1/68tqWAJe/coSNr53IpCd/+OIFk34jWtsS4O+vv+SMqyPn61+Z25lZ8M820THSuR5jbH9SKUMonuTN40M0VnjxOB0MRxMMRRKE4knC8ST/9fpx/uv14zRUeFjXEmBDaxMrAhX4PS4qfC7KPc45UVRTS+SoQpobR/ypgpvojebeTXvY+NoJHAIul5AysPG1Eyxv2MPtG1ZN+/6ne3u/x5Ez0Pg9pwbs+bK+xru8wuuiayhCtc+FQXDbp4zGE0l6hmMsqvXTcWKInuEYj+44wqM7jnBunZ/1rQHWtQRYXOvnwkXV/OUHWnjouYMFOYZAqVKngUbl9cAz+60g47DeuB0CiVSKB57Zz+0bVuFxSs4zabLL8BfSUDSJA04772bIPvVzS0eQOx55mcFwAgMc7Q/z5vEB7vnk21nbEsh7Qmd2CR4ngjGGeMLaKPp/briUI30hvv3fu3nlyAAGONgX4sFnD/Dgswe4YGEV61sDrD2/kbs/fjHlXiflXhe+KYy2lJrrtMiTymsklgRjiCaSROJJognr9/Rie6Xv9BIwAlT5Zu9zjMsplLmdmS9XVpD72uNvMBBOZPoFVvr11x5/A7D2+fSH4uOe0Dl2jSgcT5I0cPu6lSyt8/P8vp5MkBnrzeOD/MPmvXzih9v40i9e4bGdR9gbHOJwX4j+kVjm8LWz3ZaOIDfd/zzvvHszN93/fMmkfquZoSMalZfX5SAUS1pv0vaGy7g5NTW1qqmK/T3DDEUSmcoClT4XyxsqJrzfmbK83s/e7hEk62CzlIEVDdZi+5F++9Tx7GhoTrVn7/MB6wROIyazzyffGtE/PXswZ5BxO4QNFzSxdU83I7EkLxzo54UD/YjA286p5oYrFnPFsjrKvS4qvdbJoWdjgU+tTDD/nX1/1WrK6sqszyMGO6trTPtta5rxuJwsqPZxflMlC6p9eFzOWVvszpfVNl7u2VS2Xb525CS7jg1wbCDCrmMDvHbkZOayXOtDYO3D+csPtvKV61oo9zgzcc4YeO3oAH/177v4xA+3cfcTHWze3ZXJXBsIxSdMl55vSn2fkZq+ogYaEXlQRIIi8kZWW52I/EZEOu3vtVmXfVVE9orIbhF5X1b75faenr0icq+I9dFURLwi8ojdvl1Els3m85s3HA4aK9zY+xhxCDRWuBF7zabY6bHprLa3L6llQZWPty+p5e/t9RWAMrfVz7Hpz+n25fV+EilrSiz9lUiZzD6fezft4bttnQxGrKOjByMJvtvWyb2b9uTt2+JaP/+8/SCReBK3U3A7IXvpajCS4D9eO87/eORVPvWP27m3rZMXDvRyqC9kBZ3w/A86pb7PSE1fsafOHgK+B/wkq+0rQJsx5i4R+Yr9+5dF5ALgRuBC4Bxgk4isMsYkgR8AtwLPA7/C2vfzBHAL0G+MWSEiNwJ3A5+clWc2j6QXwxdUn9r3EYolCFT6Mr8XOz12ose/7sIm/u2V4znbAVoXVtLRNTzqspSx2gF++PQ+Umb0zFvKWO2Tybo70BvC6RB7ak5wOsGRsgqM/uG7mmnrCLKna5jgUJSHXzzMwy8eZnlDOetbrMy1BdU+fG4riaDcM/+m1/Kdd6TmvqL+xRpjtgJ9Y5o/glWwE/v7R7PaHzbGRI0x+4G9wJUishCoMsZsM1YRqp+MuU36vh4D1qdHO2ry5vrO8RODMSq8oz8xV3idnBiMAfDkrtwLz+n2zNTYmMoD402ZjUdEMl9grQnddOW5/PD3L+d/blhFU6U3M9rZ3zPCA8/s51MPbOf2n7/MIy8eZl9w+NRIZx5Nr922ppmBcJzO4BAdJwbpDA4xEI7Pmb8vlV+xRzS5NBljjgMYY46LSPpj6iKsEUvaEbstbv88tj19m8P2fSVEZACoB3qyH1BEbsUaEbF06dIZfTLzQb7F8MkoZvXizuAQYTuZwWDFiXAsSWfQKpEzXsBIt6cTDMbW0pzsR5bl9X46g8PEk8nM4zsEVjaWs7Tez5OvH+efntvPcMzKjHM5wSkO3PYG0TeODfLGsUG+99ReVp9by4bWAO9Y0UCZfS5PuceF3+vEPYdHOgJg7EKuRnIeZKfmrlIMNOPJ9bdnJmif6DajG4y5H7gfYPXq1VMrzXuWmM7UWLGzikIxKx1ZsIODscrjhCZ5qma9303PSDxnO1hBI1e1m/Sa1gfetpBvb+rMtBusx//A26yzbr6zaU8mvRqAJCRIcU6Vl699qJW29iDP7O0hFEuyfX8f2/f34XM5uHZFA+tbA6w+txaX0wpMfo81xeZ1OZgrg/f7tu6jqszNguqyTJseUzC/lGKg6RKRhfZoZiGQntc4AizJut5i4JjdvjhHe/ZtjoiIC6jm9Kk6VWDFPu8klrACisn8Z3R7Pg0VXnpH4qM+oYjdDrAqUE5H1+lHHqwKlAPwq9eP4+DUCQzp2bdfvX6c2zesYk9wOGcG3IG+MFctr+eKZXVE40m27eujraOLF/b3EUmkaOsI0tYRpLrMzdpV1mmhF55TxUA4jtNh7Svye1343U4cjtINOof7Q9SUuUe1aTLA/FKKgWYjcDNwl/398az2fxGRb2MlA6wEXjDGJEVkyD7GYDvwWeAfxtzXNuB6YLOZ6mEiatqK/UbidDgwJpVJzxax3uidjslNNQ3HkiytK6NnODbqBNL0htX9PbmfR7p9f28Il1NGPV4ylWJ/r3X5eLU/DbC0zs9wzKqvtvb8Rtae38hQJM7Te3rY3NHFq4cHGAjHefzVYzz+6jEWVPky5W+WN5QzHE0gIrx8sJ+fv3CIYwNhltaVl1QJHE0GmP+KGmhE5OfAWqBBRI4Af40VYB4VkVuAQ8AnAIwxu0TkUeBNIAF8wc44A/g8VgZbGVa22RN2+4+An4rIXqyRzI2z8LTUGMV+I0mvkWT2ANnBZirHFASHIjQ3ntqAmp11Fx2nfHV2e8oYEolkJtA5BJyTmNpyOKwTP6t8bqKJJEORBA4RPnTxQj508UK6h6Js7giy8dVjHB+IcGIwws+2H+Jn2w9xXqOVuVbn93Dfb/cxErXSs3uGovzPXwzyNx+7mPdetGBSr0EhlULR0VI+AXU+KGqgMcbcNM5F68e5/reAb+Vo3wFclKM9gh2oVPEU+43kA29byHey1kjAGkWk10jyuW1NM1967FWOngxnqldXeF187YMXTOr2gUovh9PVCThVuWBhtXfyTwLwupx4K5zU+T2ZUU5jpZfl9dYU3YIqL7FEigF7v89b3SO81b3/tPtJJg3xkTh3/bqDloVV+L1Ofvzsfh567gCheIpyj5PPvXP5pAumTtdMJJtMR75ad2DtpXrgmf2MxJKz/vrMB6U4dabmmWK/kWzb10dTlfe0Ejnb9vVx+yTvYzpZUSaVOw15vPZ8xo5yfrHzCG6n4HNZ/zvXl3sYiCRIpQyJlOFk+PREhhRwsGeERCrF/9+2j4e2nSqjMxhJZALzbAabYo0g0rXunA6xat2ZU7Xu1rYEuHfTHu7ZvNcuLGuNxu/ZvBeYvddnrtNAo2ZFMd9IDveHaKjw0pi1wdQYM+k1ovu27rPXWISkEfsNSTLJDPmyzrpH4rgc1nWyp866c2SyTZXX5Rx1jEH60LXqMhdDkQQ/v/Vqfuc7W3PeNgn8zRMdbOkInpaMYIDvb3mLm69djt8zt1On88lX6y5f9fKZMN+n7jTQqHlvSa2fA73DDIZPjWiqylwsq7fWXNL7ZMZKL6F0BocYCMVxOKwgk0gZeoZixJPWPhy300E0RxXm7Ddnh8io35NnOJoZ7/lljjFwCCljGI7EWVBVhjNPttlv3uwa97JIIkXvcJRerOdS7nXh9zjnVOr0TBiJJXGNibMOGf+o8Kkqdvr/bJi/H1OUsl3TXEdwyMoYcwjEkimCQzGuaa4DYFG1L+ft0u2xRArsT7yCXUpGyJT4Hy9opNubG8pJGSshwGBIGUPKWO0zYWzlhkg8iUH4k3UrqPF7Jrzt2xZVT+ox4skUJ0Mxjp0Mc7A3RHAwwlCOY6sLpZDHCCyv91v/PimDMYZUyvr3SSeLlHucp41YU8ZqnwmlUFS00Mc0aKBR8962fX00VnjwOB2kDHicDhorPGzbZ22p+uZH30aV1zmqaGiV18k3P/o2ANx2XZjsNyI4dbCb0+HAaU+HpXf9O+VU+vSXr2uh1u9GgEQyhQC1fjdfvq4FyL2reKL2scYrarr+gibqyicONPfceOmEl9/605088uJhuoeimbaUMQxHE3QPRTnYO8KR/hB9IzEiUyzJM1npxfqXD/VzYiDMy4f6+fPHXp2xN8N81b8/987lpIw1XZYyKfu71T4Til1UND2iCg5FRo2oZjLY6NSZmvfyrdGsbQlw702XjZuskPu8HXfmvJ30eTgukcw0XNKcqv68tiXA311/ybj373JAPMegaOx0zUQKtQa2NzjM3uAw92/dxyVLqlnf0sSaVQ1U+k7ti4olUsQSMU6GyGwU9Xmc+N0zUwA032L9dKWrf4/375NehylU1lmx0/9nY0O1Bho1703mf+SJ3qjT6dkLql0507O/8v5WvvTYqwzb+1ScDqHGe+oTcb77rypz05sjMaB6zCbXQnDkWWv58CXnsGV3kMFIglcOD/DK4QHu3dzJlcvrWN/SxDXNdXizPo0nU9ZoZzhq1W1zOx2UeaaXPp1vsX4m5AvUt29YVbAMs2Kn/8/GhmoNNGrem+7/yPnSs/N9Is6n0CeU1vtd9IYSOduX1k38qflPN6zki+85j3/ZfojHXzlGfzhOPGl4dm8vz+7txe9x8q6VDaxrCXDZ0trTkg/iyRQPTiJ9er5nXU2k2On/szGi0kCj5r2Z/B95vKXv6Uxd5RsxTcZEb9Q3v2P5qKKeaTe/Y/mkaqC9dPAkT77ZRYXPRV25m/5QnJFYkngyRSiW5MldXTy5q4tav5v3tARY3xKgZUFlJjPt5y8eHjd9+jPXLOPF/X1881ft42Zd5Tuqez4odPr/RH8fszGi0kCjzgqlXH16uoEwX/+27etjwQQbVn0uiJw+4CGdVPXwi4dx2WsvYBUTLY8nqfa5WX9BE23tXbxxbJD+UJxfvnSUX750lEU1ZdbBba0BIjlSv8FKn+4Pxfj+lrcAg9tpZXdZj5PMrBFMZmpSjS/f38dsjKg00CiVx2wslk4nEObrX75kiB/+/hXc8tCLZOeMOYEffno1deUeTgyGqfSNfqvwuR30jET5yKXn8JFLz+HEQITNHUE2tXdxoDfE0ZNhfvL8QX7y/MG8/T8+GKbK57LSiu2xj1OEg70jROLJaU9Nnu0m8/db6BGVBhql8ih29el88vUv3xz82pYAP/qDK8Z9I19WX07XYASPy0G6+HkknmJB1anzYxZU+/jUVUv51FVLeat7mLb2IJs7ggSz0qLHaqq0Uq8XVpXROxIdleIbjicJVPo4djKMy+HgwkXVPHDzavwe51m1WXQmlMLfrwYapfIodvppPvn6N5k5+Ik+0f7Ru8/j6xt3kUil8LocjEQTJFKGG69YkvP65zVWcF5jBZ9713LeODrAz7cfZvuB04+Baqj0sbWzm49ftojvP/0W4XgSn9tBJJ4adf+JVIqhSIqhSBwRawqvzOOkzO3EM5Uc8LNUKfz96r+SUnmM3XkfiiVmvYz9RPL1b7wNnZOdKsm+/VAkwTk1fr75kYt470ULJixx4xDh4sU1/M3H38Y3P3Ihy+vL8bkcmdI+u44NcufGN7nryQ4W1ZThcToYDMepL/dyx7qVXGlXbsiWfn69w1GO9Ic41BsiOBTJrN+o05XC36/oOWCjrV692uzYsaPY3VAlJp21U6prBMXqn7GrBAxGEkQnWRkgFEvw7N5e2tq72HGwf1R5l/oKD+vOD7C+NcDKQMWUp8l8bid+jzXi8bpmpkTMfDAbfx8istMYszrnZRpoRtNAo9SZiSaSDIatzZqTfV/pD8XYsrubtvYu3jw+NOqyJbVlrG8NsL6liUW1ZePcw/jSm0XLPS587rOrEGgxaKCZAg00Sk1PMmUYjiQYjMSJJydfpfrYyTCbO4K0tQc52Dd6obplQSUbWgOsPT+Qt35bLg4Ra11nBkvjqNE00EyBBhqlZk4olmAwnCAUy7FRZxzGWKeDbmrvYnNHkJ7hWOYyh8BlS2tZ3xrgnSsaKPeeWT6Tx+WgzO3Er6OdGaOBZgo00Cg18+LJFEORxJSPFkimDK8fHWBTexdb9/RkaqiBFSyuaa5nQ2uAK5bVnXEGWnYm23w/5K2QNNBMgQYapQrnTJIH0mKJFC8e6GNTe5Bt+3oz5wEBVPpcrFnZyPrWABcvrs5bLHQi6bUdv51CraOdydFAMwUaaJSaHZF4ksGwVTdtqu9DI9EEz+ztYVN7kJcPjc5ca6jwsK4lwIbWJs5rLJ9WoBARfG4HfreLMo/u25mIBpop0ECj1OxKpgxDkTiD4QSJMzjium8kxlO7rSSCjhOjM9fOrfOzvjXAupYA59RMPXNtLJdj9GhnMkVJzxYaaKZAA41SxTMStbLVwrEzO63zaH+Yto4uNrUHOdIfHnXZBQurWN8aYO35jdTmOeJ6MnS0M5oGminQQKNU8cUSKQYjcYYjCVJn8B5ljKEzeKrmWu/I6My11efWsq61iXeuqB9VmmU6zvbRjgaaKdBAo1TpSKUMQ5EEA+H4GU2rgTU19+qRk7S1B9na2c1I9NRoyety8I7z6llvZ67NVMbZ2TjaOesDjYhcB9yDVf38AWPMXeNdVwONUqXHGMNILMlAOD7lbLVssUSK5/f3stnOXIsnT73/VflcrFllZa69bdH0MtfGcjsdp8rjzNPRzlkdaETECewBfgc4ArwI3GSMeTPX9TXQKFXaIvEkg5E4I9GpZ6tlG44k+G1nN20dQV4+dHLUKaCBSi/rWqyaa+c1zsyR2mkigtflmHc12c72QHMNcKcx5n32718FMMb8Ta7ra6BRam5IZ6sNRRJTKnWTS89wlKc6grR1BNnTNTzqsuUN5dZpoS0BFlT7xrmHM+d0jD76YK6WxznbA831wHXGmM/Zv38GuMoY88Vc19dAo9TcMxxNTHtaLe1QXyhTc+3oydGZaxedY2eurQpQ7XePcw/T43Zao525Vh7nbA80nwDeNybQXGmM+ZOs69wK3AqwdOnSyw8ezH/8rFKq9ExnE+hYxhh2dw2xqT3IUx1B+kPxzGVOh7D63Fo2tAZ4x4qGUaeDzqS5VAz0bA80OnWm1FkmkUwxELam1c4kPXqsZMrw8qF+2jqC/Lazh1DWPh+fy8G1KxpY3xpg9bm1BQ0GpTzaOdsDjQsrGWA9cBQrGeBTxphdua6vgUap+SOVMgzHEgyEpnZkwUSi8STP7+9jU3sXL+zvG5W5Vl3mZq2duXbhOVUFDQSZYqD2+k6xU6jP6kADICIfAL6Lld78oDHmW+NdVwONUvNTOJbOVpv8kQX5DEXi/LbTqrn26uHRmWsLqnyZ8jfLG8pn7DHHU+wU6rM+0EyFBhql5rdEMsXgGRxZkE/3UJSndgfZ1B5kb3B05tp5jVbm2ntaAjRVzXzm2ljZKdQ+t/U1C4+pgWayNNAodXaYzpEF+RzsHaHNzlw7PhAZddnFi6tZ3xLg3asaqSorTObaWE6HZNKn/R4XzgKMdjTQTIEGGqXOPjO1CXQsYwztx4fY1N7Flt3dnAyfylxzOYQrltWxoTXANefVz8qoI83jcuD3uPB7nHhdM5NUoIFmCjTQKHX2mu6RBfnue+dBK3Ptmc4ewlmjqDK3k2tX1LOhtYnLz60tyIhjPNkp1GXuMz9hVAPNFGigUUrB9I8smEgknmTbW71sag/ywoG+UWtFNWVu1p7fyIbWJloXVs56CvOZnjCqgWYKNNAopbJN98iCfAbCcbbusWquvXZkYNRlC6utzLX1LQHOrS985tpYU6lCrYFmCjTQKKVyMcYwFE0wGI4TS8zstFpa12CEpzqCbOoIsq97ZNRlKwIVmZprjZXegjx+PhOduaOBZgo00Cil8inEnpyx9veM0NbeRVtHkK7BaKZdgEuWVLO+pYk1qxqo9M1O5tpY6RTqTEFQj0sDzWRpoFFKTVah9uRkM8aw69ggbe1BtuzpZmBM5tpVy+tY39rENc11eGcxc22s8wKVGmgmSwONUmqq0ntyBgo4rQZWYNtxsJ/NduZaJOux/B4n71rZwLqWAJctnd3MNdBAMyUaaJRS0zGTFaQnEo4neW5vL20dXbx4oH/UiKrW7+Y951sHt7UsmJ3MNQ00U6CBRik1ExLJFEORBEORmd+TM9ZAKM6WPd20tXfxxrHBUZctqimzkghaAyyt8xesDxpopkADjVJqJhljGIlZo5zIDJe6yeXEQITNHUE2tXdxoDc06rJVTRWZmmsNFTObuaaBZgo00CilCiWaSDIYTjAcTRR0Wi3tre5h2tqDbO4IEhwanbl26dIaNrQEeNeqRiq8rmk/lgaaKdBAo5QqtGTKMByxKg/M1Dk5E0kZwxtHB2jrCPL07m4GI6fSst1O4ermeta3BLi6uf6Mz7XRQDMFGmiUUrMpFEswGE4QihVuT062eDLFiwf6aGsP8txbvUSzMtfKPU7etbKRDa0BLllSM6XMNQ00U6CBRilVDIUudZNLOJbkmb09tHUE2XGgj+ytQPXlHt7T0sj6liZWNVXkzVzTQDMFGmiUUsWUShmGZnFaLa0/FGPL7m7a2oO8eXx05triWitzbX1rgMW1uTPXNNBMgQYapVSpKGQF6YkcOxlms31w28G+0Zlr5y+oZENrgPecH6Cu3JNp10AzBRpolFKlZraz1dKMMbzVbdVc29zRTffwqcw1h8Dbl9ayviXAu1Y2cPGSWg00k6WBRilVqgp5MFs+KWN47cgAbe1Bnt7TzXBWQVGPy0Hntz4wbqCZfvK0UkqpWeF0CDV+D9VlbkZiSQbCcaKzsAkUrJM4L11Sw6VLaviTdSt48UAfm9qDbNvXm7e+mwYapZSaY0SECq+LCq9r1mqrZfO4HFy7ooFrVzQwEk3wzN4e/vju8a+vgUYppeYwn9uJz+2clSMLcin3unjfhQsmvI4GGqWUmgdcTgd15R5q/W6GogkGQrObHj0RDTRKKTWPiAhVPjdVPvesVx0YjwYapZSap/weF36Pi1gixUA4Puvp0WlnVj1tmkTkEyKyS0RSIrJ6zGVfFZG9IrJbRN6X1X65iLxuX3av2PUQRMQrIo/Y7dtFZFnWbW4WkU776+bZen5KKVVKPC4HjZVeltb5qS/34nbO7lt/UQIN8Abwe8DW7EYRuQC4EbgQuA74voikD8H+AXArsNL+us5uvwXoN8asAL4D3G3fVx3w18BVwJXAX4tIbQGfk1JKlTSnQ6j2u1lS56epyofP7cx/oxlQlEBjjGk3xuzOcdFHgIeNMVFjzH5gL3CliCwEqowx24w17vsJ8NGs2/zY/vkxYL092nkf8BtjTJ8xph/4DaeCk1JKndXKvS7OqSljUW0ZFT5XQY97LrU1mkXA81m/H7Hb4vbPY9vTtzkMYIxJiMgAUJ/dnuM2o4jIrVijJZYuXTrtJ6GUUnOF1+UkUOkkWW4YDMcLcvR0wQKNiGwCciVX/6Ux5vHxbpajzUzQfqa3Gd1ozP3A/WCVoBmnb0opNW85HUJtuYcav5vhaIKBcDzvjv/JKligMcZsOIObHQGWZP2+GDhmty/O0Z59myMi4gKqgT67fe2Y22w5gz4ppdRZQ0So9Lmp9LkzVQey65qdiWIlA4xnI3CjnUm2HGvR/wVjzHFgSESuttdfPgs8nnWbdEbZ9cBmex3nSeC9IlJrJwG8125TSik1CT63k0CVj6V1fqrL3FM6cTNbUdZoRORjwD8AjcB/icgrxpj3GWN2icijwJtAAviCMSZdMe7zwENAGfCE/QXwI+CnIrIXayRzI4Axpk9E/jfwon29bxhj+gr/7JRSan5xOR3UV3ip9XsYiiYYDE+t6oAeEzCGHhOglFL5ja06MNHBZ6WWdaaUUmoOGFt1YCKltkajlFJqDklXHZiIBhqllFIFpYFGKaVUQWmgUUopVVAaaJRSShWUBhqllFIFpYFGKaVUQWmgUUopVVAaaJRSShWUBhqllFIFpbXOxhCRbuDgBFdpAHpmqTtnQvs3Pdq/6dH+Tc9c7t+5g/EXBgAABzlJREFUxpjGXBdooJkiEdkxXuG4UqD9mx7t3/Ro/6ZnvvZPp86UUkoVlAYapZRSBaWBZuruL3YH8tD+TY/2b3q0f9MzL/unazRKKaUKSkc0SimlCkoDjVJKqYLSQDMBEXlQRIIi8kZW250iclREXrG/PlCkvi0RkadEpF1EdonIHXZ7nYj8RkQ67e+1Jda/Unn9fCLygoi8avfv/7XbS+X1G69/JfH6ZfXTKSIvi8h/2r+XxOs3Qf9K5vUTkQMi8rrdjx12W8m8fuP074xeP12jmYCIrAGGgZ8YYy6y2+4Eho0xf1/kvi0EFhpjXhKRSmAn8FHgD4A+Y8xdIvIVoNYY8+US6t8NlMbrJ0C5MWZYRNzAM8AdwO9RGq/feP27jhJ4/dJE5M+A1UCVMeZDIvK3lMDrN0H/7qREXj8ROQCsNsb0ZLWVzOs3Tv/u5AxePx3RTMAYsxXoK3Y/cjHGHDfGvGT/PAS0A4uAjwA/tq/2Y6w391LqX0kwlmH7V7f9ZSid12+8/pUMEVkMfBB4IKu5JF4/GLd/pa5kXr+ZpIHmzHxRRF6zp9aKOjUAICLLgLcD24EmY8xxsN7sgUDxemYZ0z8okdfPnlZ5BQgCvzHGlNTrN07/oEReP+C7wP8CUlltJfP6kbt/UDqvnwH+W0R2isitdlspvX65+gdn8PppoJm6HwDnAZcCx4H/U8zOiEgF8K/AnxpjBovZl1xy9K9kXj9jTNIYcymwGLhSRC4qVl9yGad/JfH6iciHgKAxZmcxHj+fCfpXEq+f7VpjzGXA+4Ev2FP1pSRX/87o9dNAM0XGmC77DSAF/CNwZbH6Ys/d/yvwM2PML+3mLnt9JL1OEiyl/pXS65dmjDkJbMFa/yiZ1y8tu38l9PpdC3zYnsd/GFgnIv9M6bx+OftXQq8fxphj9vcg8G92X0rl9cvZvzN9/TTQTFH6j8D2MeCN8a5b4H4I8COg3Rjz7ayLNgI32z/fDDw+232D8ftXQq9fo4jU2D+XARuADkrn9cvZv1J5/YwxXzXGLDbGLANuBDYbY36fEnn9xutfqbx+IlJuJ8kgIuXAe+2+lMTrN17/zvT1c818F+cPEfk5sBZoEJEjwF8Da0XkUqz5ywPAbUXq3rXAZ4DX7Xl8gL8A7gIeFZFbgEPAJ0qsfzeVyOu3EPixiDixPnA9aoz5TxHZRmm8fuP176cl8vqNp1T+/sbztyXy+jUB/2Z9HsMF/Isx5tci8iKl8fqN178z+vvT9GallFIFpVNnSimlCkoDjVJKqYLSQKOUUqqgNNAopZQqKA00SimlCkoDjVKTJCLLJKuSd1b7N0RkQ57b3ikiXypc75QqXbqPRqlpMsZ8vdh9UKqU6YhGqalxisg/inVGzH+LSJmIPCTyf9u7gxCryiiA4/9/RBmJi2hoFxUEpiGWU2BMREhF7aJwIMQ0EkSihUkbA2nR2ohEZlEKEQMFGUjkysbRRhHH0dISghncuKhgGsxyKj0tvu/J86U5j94lsvODB/eee7/73XcX7/C99zjH5wHUZ9RT6gH1HWsflGqROqJOqq/W819v296q7q3bK2pJF9Tt6hEv70uzQt3VurD6hPoJHdQ16qfqbnVKfUXdaOnRcki9rZ43or6tjqkn1IdrvM/SF+WoOqSeVm9v5Mmm61YmmpS6cy+wLSIWAz8Bz7UOqPOAIeDpiBgA+jrGLgSeotSH2lJrwY0Cj9bj/cD8Gh8A9tf45ojoB5YAj6lLgL3AfWprjrXAjqvc8/3AC3Xet4BfIuIB4CCwuu28WyPiEWAD8H6NbaGUb3mQUu/qzms8n5T+IhNNSt2ZiohWSZ1x4K62YwuByYiYqvvDHWM/i4jZ2kjqe0qZj3FgWa0rNUv58O+nJJ9WolmpHgUmgMXAoiglPT4AVtWaaMuBz69yz19ExNmI+AGYAXbX+Ncd9z8Ml/owLajXHaAUpSQi9gDTf/NsUrqi/I0mpe7Mtm1fAG5p27fLsTdGxO+1wvBaYAz4CnicUor9W/VuYBPwUERMqzuBefUaOyhJ4zzwcUT8oT5LWYUAvHyFeS+27V/k8s+AznpUMYf3lNI15Yompd45BdxjafQGMDjHcaOUZDJKWcWsB47VVcsC4Bwwo95B6Q0CXCrjfgZ4A9hZY7siYml9Heny/gcB1AFgJiJmKC2kV9b4k8C/3ugv/ffkiialHomIX9UNwB71R+DwHIfuBzYDByPinHq+xoiI4+oEcBKYBL7sGPsh0BcR3/TgLUyrY5Tk9lKNvQkMq4PAPkqzq7M9mCv9j2T15pR6SJ0fET/XfjzbgO8iYmuD870LTETEe//wOiPAps5VkHozcKF+Lbcc2F67fqY0Z7miSam31qkvAjdRfrwfamoidZzytdprTc1B+ZfZR+oNwG/AugbnStepXNGklFJqVP4ZIKWUUqMy0aSUUmpUJpqUUkqNykSTUkqpUZloUkopNepPMlDiROM4JkEAAAAASUVORK5CYII=\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",
" <td>highway-mpg</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" </tr>\n",
" <tr>\n",
" <td>price</td>\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 0x7f87537db588>"
]
},
"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",
" <td>peak-rpm</td>\n",
" <td>1.000000</td>\n",
" <td>-0.101616</td>\n",
" </tr>\n",
" <tr>\n",
" <td>price</td>\n",
" <td>-0.101616</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" peak-rpm price\n",
"peak-rpm 1.000000 -0.101616\n",
"price -0.101616 1.000000"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['peak-rpm','price']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question 3 a): </h1>\n",
"\n",
"<p>Find the correlation between x=\"stroke\", y=\"price\".</p>\n",
"<p>Hint: if you would like to select those columns use the following syntax: df[[\"stroke\",\"price\"]] </p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>stroke</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>stroke</td>\n",
" <td>1.00000</td>\n",
" <td>0.08231</td>\n",
" </tr>\n",
" <tr>\n",
" <td>price</td>\n",
" <td>0.08231</td>\n",
" <td>1.00000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" stroke price\n",
"stroke 1.00000 0.08231\n",
"price 0.08231 1.00000"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"df[['stroke','price']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"#The correlation is 0.0823, the non-diagonal elements of the table.\n",
"#code:\n",
"df[[\"stroke\",\"price\"]].corr() \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question 3 b):</h1>\n",
"\n",
"<p>Given the correlation results between \"price\" and \"stroke\" do you expect a linear relationship?</p> \n",
"<p>Verify your results using the function \"regplot()\".</p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f8753745fd0>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 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": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f8753736c18>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x=\"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": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f8753600d68>"
]
},
"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=\"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": 18,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f8753580518>"
]
},
"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": [
"# 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": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>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",
" <td>count</td>\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",
" <td>mean</td>\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",
" <td>std</td>\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",
" <td>min</td>\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",
" <td>25%</td>\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",
" <td>50%</td>\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",
" <td>75%</td>\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",
" <td>max</td>\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": 19,
"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": 20,
"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",
" <td>count</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>201</td>\n",
" <td>200</td>\n",
" </tr>\n",
" <tr>\n",
" <td>unique</td>\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",
" <td>top</td>\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",
" <td>freq</td>\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": 20,
"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": 21,
"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": 21,
"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": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>fwd</td>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <td>rwd</td>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4wd</td>\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": 22,
"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": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>value_counts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>fwd</td>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <td>rwd</td>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4wd</td>\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": 23,
"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": 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",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>fwd</td>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <td>rwd</td>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4wd</td>\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": 24,
"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": 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>engine-location</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>front</td>\n",
" <td>198</td>\n",
" </tr>\n",
" <tr>\n",
" <td>rear</td>\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": 25,
"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": 26,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array(['rwd', 'fwd', '4wd'], dtype=object)"
]
},
"execution_count": 26,
"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": 31,
"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": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>4wd</td>\n",
" <td>10241.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>fwd</td>\n",
" <td>9244.779661</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\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": 32,
"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": 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>drive-wheels</th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>4wd</td>\n",
" <td>hatchback</td>\n",
" <td>7603.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>4wd</td>\n",
" <td>sedan</td>\n",
" <td>12647.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>4wd</td>\n",
" <td>wagon</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>fwd</td>\n",
" <td>convertible</td>\n",
" <td>11595.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>fwd</td>\n",
" <td>hardtop</td>\n",
" <td>8249.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>8396.387755</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>9811.800000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>fwd</td>\n",
" <td>wagon</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>23949.600000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>rwd</td>\n",
" <td>hardtop</td>\n",
" <td>24202.714286</td>\n",
" </tr>\n",
" <tr>\n",
" <td>10</td>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>14337.777778</td>\n",
" </tr>\n",
" <tr>\n",
" <td>11</td>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21711.833333</td>\n",
" </tr>\n",
" <tr>\n",
" <td>12</td>\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": 33,
"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": 34,
"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",
" <td>4wd</td>\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",
" <td>fwd</td>\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",
" <td>rwd</td>\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": 34,
"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": 35,
"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",
" <td>4wd</td>\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",
" <td>fwd</td>\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",
" <td>rwd</td>\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": 35,
"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": 36,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>convertible</td>\n",
" <td>21890.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>hardtop</td>\n",
" <td>22208.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>hatchback</td>\n",
" <td>9957.441176</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>sedan</td>\n",
" <td>14459.755319</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\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": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df_group_two = df[['body-style','price']]\n",
"# grouping results\n",
"df_group_two = df_group_two.groupby(['body-style'],as_index=False).mean()\n",
"df_group_two"
]
},
{
"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": 37,
"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": 38,
"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": 39,
"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": 40,
"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",
" <td>symboling</td>\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",
" <td>normalized-losses</td>\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",
" <td>wheel-base</td>\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",
" <td>length</td>\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",
" <td>width</td>\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",
" <td>height</td>\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",
" <td>curb-weight</td>\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",
" <td>engine-size</td>\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",
" <td>bore</td>\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",
" <td>stroke</td>\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",
" <td>compression-ratio</td>\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",
" <td>horsepower</td>\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",
" <td>peak-rpm</td>\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",
" <td>city-mpg</td>\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",
" <td>highway-mpg</td>\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",
" <td>price</td>\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",
" <td>city-L/100km</td>\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",
" <td>diesel</td>\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",
" <td>gas</td>\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": 40,
"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": 41,
"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": 42,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.5846418222655081 with a P-value of P = 8.076488270732955e-20\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['wheel-base'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between wheel-base and price is statistically significant, although the linear relationship isn't extremely strong (~0.585)</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Horsepower vs Price</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'horsepower' and 'price'."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8095745670036559 with a P-value of P = 6.36905742825998e-48\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['horsepower'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"\n",
"<p>Since the p-value is $<$ 0.001, the correlation between horsepower and price is statistically significant, and the linear relationship is quite strong (~0.809, close to 1)</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Length vs Price</h3>\n",
"\n",
"Let's calculate the Pearson Correlation Coefficient and P-value of 'length' and 'price'."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.690628380448364 with a P-value of P = 8.016477466159053e-30\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['length'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between length and price is statistically significant, and the linear relationship is moderately strong (~0.691).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Width vs Price</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'width' and 'price':"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.7512653440522674 with a P-value of P = 9.200335510481426e-38\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['width'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Conclusion:\n",
"\n",
"Since the p-value is < 0.001, the correlation between width and price is statistically significant, and the linear relationship is quite strong (~0.751)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Curb-weight vs Price"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'curb-weight' and 'price':"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8344145257702846 with a P-value of P = 2.1895772388936997e-53\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['curb-weight'], df['price'])\n",
"print( \"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between curb-weight and price is statistically significant, and the linear relationship is quite strong (~0.834).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Engine-size vs Price</h3>\n",
"\n",
"Let's calculate the Pearson Correlation Coefficient and P-value of 'engine-size' and 'price':"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.8723351674455185 with a P-value of P = 9.265491622197996e-64\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['engine-size'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P =\", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"\n",
"<p>Since the p-value is $<$ 0.001, the correlation between engine-size and price is statistically significant, and the linear relationship is very strong (~0.872).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Bore vs Price</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's calculate the Pearson Correlation Coefficient and P-value of 'bore' and 'price':"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is 0.5431553832626602 with a P-value of P = 8.049189483935364e-17\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['bore'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between bore and price is statistically significant, but the linear relationship is only moderate (~0.521).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can relate the process for each 'City-mpg' and 'Highway-mpg':"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>City-mpg vs Price</h3>"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is -0.6865710067844677 with a P-value of P = 2.3211320655676368e-29\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['city-mpg'], df['price'])\n",
"print(\"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h5>Conclusion:</h5>\n",
"<p>Since the p-value is $<$ 0.001, the correlation between city-mpg and price is statistically significant, and the coefficient of ~ -0.687 shows that the relationship is negative and moderately strong.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Highway-mpg vs Price</h3>"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Pearson Correlation Coefficient is -0.7046922650589529 with a P-value of P = 1.7495471144476807e-31\n"
]
}
],
"source": [
"pearson_coef, p_value = stats.pearsonr(df['highway-mpg'], df['price'])\n",
"print( \"The Pearson Correlation Coefficient is\", pearson_coef, \" with a P-value of P = \", p_value ) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Conclusion:\n",
"Since the p-value is < 0.001, the correlation between highway-mpg and price is statistically significant, and the coefficient of ~ -0.705 shows that the relationship is negative and moderately strong."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"anova\">6. ANOVA</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>ANOVA: Analysis of Variance</h3>\n",
"<p>The Analysis of Variance (ANOVA) is a statistical method used to test whether there are significant differences between the means of two or more groups. ANOVA returns two parameters:</p>\n",
"\n",
"<p><b>F-test score</b>: ANOVA assumes the means of all groups are the same, calculates how much the actual means deviate from the assumption, and reports it as the F-test score. A larger score means there is a larger difference between the means.</p>\n",
"\n",
"<p><b>P-value</b>: P-value tells how statistically significant is our calculated score value.</p>\n",
"\n",
"<p>If our price variable is strongly correlated with the variable we are analyzing, expect ANOVA to return a sizeable F-test score and a small p-value.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Drive Wheels</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Since ANOVA analyzes the difference between different groups of the same variable, the groupby function will come in handy. Because the ANOVA algorithm averages the data automatically, we do not need to take the average before hand.</p>\n",
"\n",
"<p>Let's see if different types 'drive-wheels' impact 'price', we group the data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's see if different types 'drive-wheels' impact 'price', we group the data."
]
},
{
"cell_type": "code",
"execution_count": 53,
"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",
" <td>0</td>\n",
" <td>rwd</td>\n",
" <td>13495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>rwd</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>fwd</td>\n",
" <td>13950.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>4wd</td>\n",
" <td>17450.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>fwd</td>\n",
" <td>15250.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>136</td>\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": 53,
"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": 52,
"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",
" <td>0</td>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>13495.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>16500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>13950.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>4wd</td>\n",
" <td>sedan</td>\n",
" <td>17450.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <td>196</td>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>16845.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>197</td>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>19045.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>198</td>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21485.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>199</td>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>22470.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>200</td>\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": 52,
"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": 54,
"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": 54,
"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": 55,
"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": 56,
"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": 57,
"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": 58,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANOVA results: F= 0.665465750252303 , P = 0.41620116697845666\n"
]
}
],
"source": [
"f_val, p_val = stats.f_oneway(grouped_test2.get_group('4wd')['price'], grouped_test2.get_group('fwd')['price']) \n",
" \n",
"print(\"ANOVA results: F=\", f_val, \", P =\", p_val) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Conclusion: Important Variables</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We now have a better idea of what our data looks like and which variables are important to take into account when predicting the car price. We have narrowed it down to the following variables:</p>\n",
"\n",
"Continuous numerical variables:\n",
"<ul>\n",
" <li>Length</li>\n",
" <li>Width</li>\n",
" <li>Curb-weight</li>\n",
" <li>Engine-size</li>\n",
" <li>Horsepower</li>\n",
" <li>City-mpg</li>\n",
" <li>Highway-mpg</li>\n",
" <li>Wheel-base</li>\n",
" <li>Bore</li>\n",
"</ul>\n",
" \n",
"Categorical variables:\n",
"<ul>\n",
" <li>Drive-wheels</li>\n",
"</ul>\n",
"\n",
"<p>As we now move into building machine learning models to automate our analysis, feeding the model with variables that meaningfully affect our target variable will improve our model's prediction performance.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/DA0101EN_edx_link_Notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment