Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save samruddhikhandale/4a1b6e8ab3b2b769dd951fa105c71db8 to your computer and use it in GitHub Desktop.
Save samruddhikhandale/4a1b6e8ab3b2b769dd951fa105c71db8 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=\"http://cocl.us/DA0101EN_NotbookLink_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": null,
"metadata": {
"collapsed": true
},
"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/cognitive_class_DA0101EN_objectstorage\">HERE</a> for free storage"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How to choose the right visualization method?</h4>\n",
"<p>When visualizing individual variables, it is important to first understand what type of variable you are dealing with. This will help us find the right visualization method for that variable.</p>\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"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",
"import pandas as pd\n",
"\n",
"path='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\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": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>symboling</th>\n",
" <td>1.000000</td>\n",
" <td>0.466264</td>\n",
" <td>-0.535987</td>\n",
" <td>-0.365404</td>\n",
" <td>-0.242423</td>\n",
" <td>-0.550160</td>\n",
" <td>-0.233118</td>\n",
" <td>-0.110581</td>\n",
" <td>-0.140019</td>\n",
" <td>-0.008245</td>\n",
" <td>-0.182196</td>\n",
" <td>0.075819</td>\n",
" <td>0.279740</td>\n",
" <td>-0.035527</td>\n",
" <td>0.036233</td>\n",
" <td>-0.082391</td>\n",
" <td>0.066171</td>\n",
" <td>-0.196735</td>\n",
" <td>0.196735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>normalized-losses</th>\n",
" <td>0.466264</td>\n",
" <td>1.000000</td>\n",
" <td>-0.056661</td>\n",
" <td>0.019424</td>\n",
" <td>0.086802</td>\n",
" <td>-0.373737</td>\n",
" <td>0.099404</td>\n",
" <td>0.112360</td>\n",
" <td>-0.029862</td>\n",
" <td>0.055563</td>\n",
" <td>-0.114713</td>\n",
" <td>0.217299</td>\n",
" <td>0.239543</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.181877</td>\n",
" <td>0.133999</td>\n",
" <td>0.238567</td>\n",
" <td>-0.101546</td>\n",
" <td>0.101546</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wheel-base</th>\n",
" <td>-0.535987</td>\n",
" <td>-0.056661</td>\n",
" <td>1.000000</td>\n",
" <td>0.876024</td>\n",
" <td>0.814507</td>\n",
" <td>0.590742</td>\n",
" <td>0.782097</td>\n",
" <td>0.572027</td>\n",
" <td>0.493244</td>\n",
" <td>0.158502</td>\n",
" <td>0.250313</td>\n",
" <td>0.371147</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.543304</td>\n",
" <td>0.584642</td>\n",
" <td>0.476153</td>\n",
" <td>0.307237</td>\n",
" <td>-0.307237</td>\n",
" </tr>\n",
" <tr>\n",
" <th>length</th>\n",
" <td>-0.365404</td>\n",
" <td>0.019424</td>\n",
" <td>0.876024</td>\n",
" <td>1.000000</td>\n",
" <td>0.857170</td>\n",
" <td>0.492063</td>\n",
" <td>0.880665</td>\n",
" <td>0.685025</td>\n",
" <td>0.608971</td>\n",
" <td>0.124139</td>\n",
" <td>0.159733</td>\n",
" <td>0.579821</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.698142</td>\n",
" <td>0.690628</td>\n",
" <td>0.657373</td>\n",
" <td>0.211187</td>\n",
" <td>-0.211187</td>\n",
" </tr>\n",
" <tr>\n",
" <th>width</th>\n",
" <td>-0.242423</td>\n",
" <td>0.086802</td>\n",
" <td>0.814507</td>\n",
" <td>0.857170</td>\n",
" <td>1.000000</td>\n",
" <td>0.306002</td>\n",
" <td>0.866201</td>\n",
" <td>0.729436</td>\n",
" <td>0.544885</td>\n",
" <td>0.188829</td>\n",
" <td>0.189867</td>\n",
" <td>0.615077</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.680635</td>\n",
" <td>0.751265</td>\n",
" <td>0.673363</td>\n",
" <td>0.244356</td>\n",
" <td>-0.244356</td>\n",
" </tr>\n",
" <tr>\n",
" <th>height</th>\n",
" <td>-0.550160</td>\n",
" <td>-0.373737</td>\n",
" <td>0.590742</td>\n",
" <td>0.492063</td>\n",
" <td>0.306002</td>\n",
" <td>1.000000</td>\n",
" <td>0.307581</td>\n",
" <td>0.074694</td>\n",
" <td>0.180449</td>\n",
" <td>-0.062704</td>\n",
" <td>0.259737</td>\n",
" <td>-0.087027</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.104812</td>\n",
" <td>0.135486</td>\n",
" <td>0.003811</td>\n",
" <td>0.281578</td>\n",
" <td>-0.281578</td>\n",
" </tr>\n",
" <tr>\n",
" <th>curb-weight</th>\n",
" <td>-0.233118</td>\n",
" <td>0.099404</td>\n",
" <td>0.782097</td>\n",
" <td>0.880665</td>\n",
" <td>0.866201</td>\n",
" <td>0.307581</td>\n",
" <td>1.000000</td>\n",
" <td>0.849072</td>\n",
" <td>0.644060</td>\n",
" <td>0.167562</td>\n",
" <td>0.156433</td>\n",
" <td>0.757976</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.794889</td>\n",
" <td>0.834415</td>\n",
" <td>0.785353</td>\n",
" <td>0.221046</td>\n",
" <td>-0.221046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>-0.110581</td>\n",
" <td>0.112360</td>\n",
" <td>0.572027</td>\n",
" <td>0.685025</td>\n",
" <td>0.729436</td>\n",
" <td>0.074694</td>\n",
" <td>0.849072</td>\n",
" <td>1.000000</td>\n",
" <td>0.572609</td>\n",
" <td>0.209523</td>\n",
" <td>0.028889</td>\n",
" <td>0.822676</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.679571</td>\n",
" <td>0.872335</td>\n",
" <td>0.745059</td>\n",
" <td>0.070779</td>\n",
" <td>-0.070779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>-0.140019</td>\n",
" <td>-0.029862</td>\n",
" <td>0.493244</td>\n",
" <td>0.608971</td>\n",
" <td>0.544885</td>\n",
" <td>0.180449</td>\n",
" <td>0.644060</td>\n",
" <td>0.572609</td>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.591309</td>\n",
" <td>0.543155</td>\n",
" <td>0.554610</td>\n",
" <td>0.054458</td>\n",
" <td>-0.054458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.008245</td>\n",
" <td>0.055563</td>\n",
" <td>0.158502</td>\n",
" <td>0.124139</td>\n",
" <td>0.188829</td>\n",
" <td>-0.062704</td>\n",
" <td>0.167562</td>\n",
" <td>0.209523</td>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.034696</td>\n",
" <td>-0.035201</td>\n",
" <td>0.082310</td>\n",
" <td>0.037300</td>\n",
" <td>0.241303</td>\n",
" <td>-0.241303</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>-0.182196</td>\n",
" <td>-0.114713</td>\n",
" <td>0.250313</td>\n",
" <td>0.159733</td>\n",
" <td>0.189867</td>\n",
" <td>0.259737</td>\n",
" <td>0.156433</td>\n",
" <td>0.028889</td>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" <td>-0.435780</td>\n",
" <td>0.331425</td>\n",
" <td>0.268465</td>\n",
" <td>0.071107</td>\n",
" <td>-0.299372</td>\n",
" <td>0.985231</td>\n",
" <td>-0.985231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.075819</td>\n",
" <td>0.217299</td>\n",
" <td>0.371147</td>\n",
" <td>0.579821</td>\n",
" <td>0.615077</td>\n",
" <td>-0.087027</td>\n",
" <td>0.757976</td>\n",
" <td>0.822676</td>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" <td>0.107885</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.804575</td>\n",
" <td>0.809575</td>\n",
" <td>0.889488</td>\n",
" <td>-0.169053</td>\n",
" <td>0.169053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>0.279740</td>\n",
" <td>0.239543</td>\n",
" <td>-0.360305</td>\n",
" <td>-0.285970</td>\n",
" <td>-0.245800</td>\n",
" <td>-0.309974</td>\n",
" <td>-0.279361</td>\n",
" <td>-0.256733</td>\n",
" <td>-0.267392</td>\n",
" <td>-0.065713</td>\n",
" <td>-0.435780</td>\n",
" <td>0.107885</td>\n",
" <td>1.000000</td>\n",
" <td>-0.115413</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" <td>0.115830</td>\n",
" <td>-0.475812</td>\n",
" <td>0.475812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-mpg</th>\n",
" <td>-0.035527</td>\n",
" <td>-0.225016</td>\n",
" <td>-0.470606</td>\n",
" <td>-0.665192</td>\n",
" <td>-0.633531</td>\n",
" <td>-0.049800</td>\n",
" <td>-0.749543</td>\n",
" <td>-0.650546</td>\n",
" <td>-0.582027</td>\n",
" <td>-0.034696</td>\n",
" <td>0.331425</td>\n",
" <td>-0.822214</td>\n",
" <td>-0.115413</td>\n",
" <td>1.000000</td>\n",
" <td>0.972044</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.949713</td>\n",
" <td>0.265676</td>\n",
" <td>-0.265676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>0.036233</td>\n",
" <td>-0.181877</td>\n",
" <td>-0.543304</td>\n",
" <td>-0.698142</td>\n",
" <td>-0.680635</td>\n",
" <td>-0.104812</td>\n",
" <td>-0.794889</td>\n",
" <td>-0.679571</td>\n",
" <td>-0.591309</td>\n",
" <td>-0.035201</td>\n",
" <td>0.268465</td>\n",
" <td>-0.804575</td>\n",
" <td>-0.058598</td>\n",
" <td>0.972044</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" <td>-0.930028</td>\n",
" <td>0.198690</td>\n",
" <td>-0.198690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.082391</td>\n",
" <td>0.133999</td>\n",
" <td>0.584642</td>\n",
" <td>0.690628</td>\n",
" <td>0.751265</td>\n",
" <td>0.135486</td>\n",
" <td>0.834415</td>\n",
" <td>0.872335</td>\n",
" <td>0.543155</td>\n",
" <td>0.082310</td>\n",
" <td>0.071107</td>\n",
" <td>0.809575</td>\n",
" <td>-0.101616</td>\n",
" <td>-0.686571</td>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" <td>0.789898</td>\n",
" <td>0.110326</td>\n",
" <td>-0.110326</td>\n",
" </tr>\n",
" <tr>\n",
" <th>city-L/100km</th>\n",
" <td>0.066171</td>\n",
" <td>0.238567</td>\n",
" <td>0.476153</td>\n",
" <td>0.657373</td>\n",
" <td>0.673363</td>\n",
" <td>0.003811</td>\n",
" <td>0.785353</td>\n",
" <td>0.745059</td>\n",
" <td>0.554610</td>\n",
" <td>0.037300</td>\n",
" <td>-0.299372</td>\n",
" <td>0.889488</td>\n",
" <td>0.115830</td>\n",
" <td>-0.949713</td>\n",
" <td>-0.930028</td>\n",
" <td>0.789898</td>\n",
" <td>1.000000</td>\n",
" <td>-0.241282</td>\n",
" <td>0.241282</td>\n",
" </tr>\n",
" <tr>\n",
" <th>diesel</th>\n",
" <td>-0.196735</td>\n",
" <td>-0.101546</td>\n",
" <td>0.307237</td>\n",
" <td>0.211187</td>\n",
" <td>0.244356</td>\n",
" <td>0.281578</td>\n",
" <td>0.221046</td>\n",
" <td>0.070779</td>\n",
" <td>0.054458</td>\n",
" <td>0.241303</td>\n",
" <td>0.985231</td>\n",
" <td>-0.169053</td>\n",
" <td>-0.475812</td>\n",
" <td>0.265676</td>\n",
" <td>0.198690</td>\n",
" <td>0.110326</td>\n",
" <td>-0.241282</td>\n",
" <td>1.000000</td>\n",
" <td>-1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>gas</th>\n",
" <td>0.196735</td>\n",
" <td>0.101546</td>\n",
" <td>-0.307237</td>\n",
" <td>-0.211187</td>\n",
" <td>-0.244356</td>\n",
" <td>-0.281578</td>\n",
" <td>-0.221046</td>\n",
" <td>-0.070779</td>\n",
" <td>-0.054458</td>\n",
" <td>-0.241303</td>\n",
" <td>-0.985231</td>\n",
" <td>0.169053</td>\n",
" <td>0.475812</td>\n",
" <td>-0.265676</td>\n",
" <td>-0.198690</td>\n",
" <td>-0.110326</td>\n",
" <td>0.241282</td>\n",
" <td>-1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses wheel-base length \\\n",
"symboling 1.000000 0.466264 -0.535987 -0.365404 \n",
"normalized-losses 0.466264 1.000000 -0.056661 0.019424 \n",
"wheel-base -0.535987 -0.056661 1.000000 0.876024 \n",
"length -0.365404 0.019424 0.876024 1.000000 \n",
"width -0.242423 0.086802 0.814507 0.857170 \n",
"height -0.550160 -0.373737 0.590742 0.492063 \n",
"curb-weight -0.233118 0.099404 0.782097 0.880665 \n",
"engine-size -0.110581 0.112360 0.572027 0.685025 \n",
"bore -0.140019 -0.029862 0.493244 0.608971 \n",
"stroke -0.008245 0.055563 0.158502 0.124139 \n",
"compression-ratio -0.182196 -0.114713 0.250313 0.159733 \n",
"horsepower 0.075819 0.217299 0.371147 0.579821 \n",
"peak-rpm 0.279740 0.239543 -0.360305 -0.285970 \n",
"city-mpg -0.035527 -0.225016 -0.470606 -0.665192 \n",
"highway-mpg 0.036233 -0.181877 -0.543304 -0.698142 \n",
"price -0.082391 0.133999 0.584642 0.690628 \n",
"city-L/100km 0.066171 0.238567 0.476153 0.657373 \n",
"diesel -0.196735 -0.101546 0.307237 0.211187 \n",
"gas 0.196735 0.101546 -0.307237 -0.211187 \n",
"\n",
" width height curb-weight engine-size bore \\\n",
"symboling -0.242423 -0.550160 -0.233118 -0.110581 -0.140019 \n",
"normalized-losses 0.086802 -0.373737 0.099404 0.112360 -0.029862 \n",
"wheel-base 0.814507 0.590742 0.782097 0.572027 0.493244 \n",
"length 0.857170 0.492063 0.880665 0.685025 0.608971 \n",
"width 1.000000 0.306002 0.866201 0.729436 0.544885 \n",
"height 0.306002 1.000000 0.307581 0.074694 0.180449 \n",
"curb-weight 0.866201 0.307581 1.000000 0.849072 0.644060 \n",
"engine-size 0.729436 0.074694 0.849072 1.000000 0.572609 \n",
"bore 0.544885 0.180449 0.644060 0.572609 1.000000 \n",
"stroke 0.188829 -0.062704 0.167562 0.209523 -0.055390 \n",
"compression-ratio 0.189867 0.259737 0.156433 0.028889 0.001263 \n",
"horsepower 0.615077 -0.087027 0.757976 0.822676 0.566936 \n",
"peak-rpm -0.245800 -0.309974 -0.279361 -0.256733 -0.267392 \n",
"city-mpg -0.633531 -0.049800 -0.749543 -0.650546 -0.582027 \n",
"highway-mpg -0.680635 -0.104812 -0.794889 -0.679571 -0.591309 \n",
"price 0.751265 0.135486 0.834415 0.872335 0.543155 \n",
"city-L/100km 0.673363 0.003811 0.785353 0.745059 0.554610 \n",
"diesel 0.244356 0.281578 0.221046 0.070779 0.054458 \n",
"gas -0.244356 -0.281578 -0.221046 -0.070779 -0.054458 \n",
"\n",
" stroke compression-ratio horsepower peak-rpm \\\n",
"symboling -0.008245 -0.182196 0.075819 0.279740 \n",
"normalized-losses 0.055563 -0.114713 0.217299 0.239543 \n",
"wheel-base 0.158502 0.250313 0.371147 -0.360305 \n",
"length 0.124139 0.159733 0.579821 -0.285970 \n",
"width 0.188829 0.189867 0.615077 -0.245800 \n",
"height -0.062704 0.259737 -0.087027 -0.309974 \n",
"curb-weight 0.167562 0.156433 0.757976 -0.279361 \n",
"engine-size 0.209523 0.028889 0.822676 -0.256733 \n",
"bore -0.055390 0.001263 0.566936 -0.267392 \n",
"stroke 1.000000 0.187923 0.098462 -0.065713 \n",
"compression-ratio 0.187923 1.000000 -0.214514 -0.435780 \n",
"horsepower 0.098462 -0.214514 1.000000 0.107885 \n",
"peak-rpm -0.065713 -0.435780 0.107885 1.000000 \n",
"city-mpg -0.034696 0.331425 -0.822214 -0.115413 \n",
"highway-mpg -0.035201 0.268465 -0.804575 -0.058598 \n",
"price 0.082310 0.071107 0.809575 -0.101616 \n",
"city-L/100km 0.037300 -0.299372 0.889488 0.115830 \n",
"diesel 0.241303 0.985231 -0.169053 -0.475812 \n",
"gas -0.241303 -0.985231 0.169053 0.475812 \n",
"\n",
" city-mpg highway-mpg price city-L/100km diesel \\\n",
"symboling -0.035527 0.036233 -0.082391 0.066171 -0.196735 \n",
"normalized-losses -0.225016 -0.181877 0.133999 0.238567 -0.101546 \n",
"wheel-base -0.470606 -0.543304 0.584642 0.476153 0.307237 \n",
"length -0.665192 -0.698142 0.690628 0.657373 0.211187 \n",
"width -0.633531 -0.680635 0.751265 0.673363 0.244356 \n",
"height -0.049800 -0.104812 0.135486 0.003811 0.281578 \n",
"curb-weight -0.749543 -0.794889 0.834415 0.785353 0.221046 \n",
"engine-size -0.650546 -0.679571 0.872335 0.745059 0.070779 \n",
"bore -0.582027 -0.591309 0.543155 0.554610 0.054458 \n",
"stroke -0.034696 -0.035201 0.082310 0.037300 0.241303 \n",
"compression-ratio 0.331425 0.268465 0.071107 -0.299372 0.985231 \n",
"horsepower -0.822214 -0.804575 0.809575 0.889488 -0.169053 \n",
"peak-rpm -0.115413 -0.058598 -0.101616 0.115830 -0.475812 \n",
"city-mpg 1.000000 0.972044 -0.686571 -0.949713 0.265676 \n",
"highway-mpg 0.972044 1.000000 -0.704692 -0.930028 0.198690 \n",
"price -0.686571 -0.704692 1.000000 0.789898 0.110326 \n",
"city-L/100km -0.949713 -0.930028 0.789898 1.000000 -0.241282 \n",
"diesel 0.265676 0.198690 0.110326 -0.241282 1.000000 \n",
"gas -0.265676 -0.198690 -0.110326 0.241282 -1.000000 \n",
"\n",
" gas \n",
"symboling 0.196735 \n",
"normalized-losses 0.101546 \n",
"wheel-base -0.307237 \n",
"length -0.211187 \n",
"width -0.244356 \n",
"height -0.281578 \n",
"curb-weight -0.221046 \n",
"engine-size -0.070779 \n",
"bore -0.054458 \n",
"stroke -0.241303 \n",
"compression-ratio -0.985231 \n",
"horsepower 0.169053 \n",
"peak-rpm 0.475812 \n",
"city-mpg -0.265676 \n",
"highway-mpg -0.198690 \n",
"price -0.110326 \n",
"city-L/100km 0.241282 \n",
"diesel -1.000000 \n",
"gas 1.000000 "
]
},
"execution_count": 2,
"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": 3,
"metadata": {
"collapsed": 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>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>bore</th>\n",
" <td>1.000000</td>\n",
" <td>-0.055390</td>\n",
" <td>0.001263</td>\n",
" <td>0.566936</td>\n",
" </tr>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>-0.055390</td>\n",
" <td>1.000000</td>\n",
" <td>0.187923</td>\n",
" <td>0.098462</td>\n",
" </tr>\n",
" <tr>\n",
" <th>compression-ratio</th>\n",
" <td>0.001263</td>\n",
" <td>0.187923</td>\n",
" <td>1.000000</td>\n",
" <td>-0.214514</td>\n",
" </tr>\n",
" <tr>\n",
" <th>horsepower</th>\n",
" <td>0.566936</td>\n",
" <td>0.098462</td>\n",
" <td>-0.214514</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" bore stroke compression-ratio horsepower\n",
"bore 1.000000 -0.055390 0.001263 0.566936\n",
"stroke -0.055390 1.000000 0.187923 0.098462\n",
"compression-ratio 0.001263 0.187923 1.000000 -0.214514\n",
"horsepower 0.566936 0.098462 -0.214514 1.000000"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"import pandas as pd\n",
"\n",
"path='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df[['bore','stroke' ,'compression-ratio','horsepower']].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"df[['bore', 'stroke', 'compression-ratio', 'horsepower']].corr() \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Continuous numerical variables:</h2> \n",
"\n",
"<p>Continuous numerical variables are variables that may contain any value within some range. Continuous numerical variables can have the type \"int64\" or \"float64\". A great way to visualize these variables is by using scatterplots with fitted lines.</p>\n",
"\n",
"<p>In order to start understanding the (linear) relationship between an individual variable and the price. We can do this by using \"regplot\", which plots the scatterplot plus the fitted regression line for the data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's see several examples of different linear relationships:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Positive linear relationship</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's find the scatterplot of \"engine-size\" and \"price\" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"# Engine size as potential predictor variable of price\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"\n",
"path='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"\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
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>engine-size</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>engine-size</th>\n",
" <td>1.000000</td>\n",
" <td>0.872335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>0.872335</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" engine-size price\n",
"engine-size 1.000000 0.872335\n",
"price 0.872335 1.000000"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[[\"engine-size\", \"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Highway mpg is a potential predictor variable of price "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fbb98e17f28>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>As the highway-mpg goes up, the price goes down: this indicates an inverse/negative relationship between these two variables. Highway mpg could potentially be a predictor of price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can examine the correlation between 'highway-mpg' and 'price' and see it's approximately -0.704"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>peak-rpm</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>1.000000</td>\n",
" <td>-0.101616</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.101616</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" peak-rpm price\n",
"peak-rpm 1.000000 -0.101616\n",
"price -0.101616 1.000000"
]
},
"execution_count": 12,
"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": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>stroke</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>stroke</th>\n",
" <td>1.00000</td>\n",
" <td>0.08231</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>0.08231</td>\n",
" <td>1.00000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" stroke price\n",
"stroke 1.00000 0.08231\n",
"price 0.08231 1.00000"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"path='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df[[\"stroke\",\"price\"]].corr()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"#The correlation is 0.0823, the non-diagonal elements of the table.\n",
"#code:\n",
"df[[\"stroke\",\"price\"]].corr() \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question 3 b):</h1>\n",
"\n",
"<p>Given the correlation results between \"price\" and \"stroke\" do you expect a linear relationship?</p> \n",
"<p>Verify your results using the function \"regplot()\".</p>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fbb759d9278>"
]
},
"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": [
"# 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": 18,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fbb75b74898>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x=\"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": null,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"sns.boxplot(x=\"engine-location\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Here we see that the distribution of price between these two engine-location categories, front and rear, are distinct enough to take engine-location as a potential good predictor of price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's examine \"drive-wheels\" and \"price\"."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fbb915079b0>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# drive-wheels\n",
"sns.boxplot(x=\"drive-wheels\", y=\"price\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Here we see that the distribution of price between the different drive-wheels categories differs; as such drive-wheels could potentially be a predictor of price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"discriptive_statistics\">3. Descriptive Statistical Analysis</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Let's first take a look at the variables by utilizing a description method.</p>\n",
"\n",
"<p>The <b>describe</b> function automatically computes basic statistics for all continuous variables. Any NaN values are automatically skipped in these statistics.</p>\n",
"\n",
"This will show:\n",
"<ul>\n",
" <li>the count of that variable</li>\n",
" <li>the mean</li>\n",
" <li>the standard deviation (std)</li> \n",
" <li>the minimum value</li>\n",
" <li>the IQR (Interquartile Range: 25%, 50% and 75%)</li>\n",
" <li>the maximum value</li>\n",
"<ul>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can apply the method \"describe\" as follows:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>bore</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>201.000000</td>\n",
" <td>201.00000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>197.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" <td>201.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.840796</td>\n",
" <td>122.00000</td>\n",
" <td>98.797015</td>\n",
" <td>0.837102</td>\n",
" <td>0.915126</td>\n",
" <td>53.766667</td>\n",
" <td>2555.666667</td>\n",
" <td>126.875622</td>\n",
" <td>3.330692</td>\n",
" <td>3.256904</td>\n",
" <td>10.164279</td>\n",
" <td>103.405534</td>\n",
" <td>5117.665368</td>\n",
" <td>25.179104</td>\n",
" <td>30.686567</td>\n",
" <td>13207.129353</td>\n",
" <td>9.944145</td>\n",
" <td>0.099502</td>\n",
" <td>0.900498</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>1.254802</td>\n",
" <td>31.99625</td>\n",
" <td>6.066366</td>\n",
" <td>0.059213</td>\n",
" <td>0.029187</td>\n",
" <td>2.447822</td>\n",
" <td>517.296727</td>\n",
" <td>41.546834</td>\n",
" <td>0.268072</td>\n",
" <td>0.319256</td>\n",
" <td>4.004965</td>\n",
" <td>37.365700</td>\n",
" <td>478.113805</td>\n",
" <td>6.423220</td>\n",
" <td>6.815150</td>\n",
" <td>7947.066342</td>\n",
" <td>2.534599</td>\n",
" <td>0.300083</td>\n",
" <td>0.300083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-2.000000</td>\n",
" <td>65.00000</td>\n",
" <td>86.600000</td>\n",
" <td>0.678039</td>\n",
" <td>0.837500</td>\n",
" <td>47.800000</td>\n",
" <td>1488.000000</td>\n",
" <td>61.000000</td>\n",
" <td>2.540000</td>\n",
" <td>2.070000</td>\n",
" <td>7.000000</td>\n",
" <td>48.000000</td>\n",
" <td>4150.000000</td>\n",
" <td>13.000000</td>\n",
" <td>16.000000</td>\n",
" <td>5118.000000</td>\n",
" <td>4.795918</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.000000</td>\n",
" <td>101.00000</td>\n",
" <td>94.500000</td>\n",
" <td>0.801538</td>\n",
" <td>0.890278</td>\n",
" <td>52.000000</td>\n",
" <td>2169.000000</td>\n",
" <td>98.000000</td>\n",
" <td>3.150000</td>\n",
" <td>3.110000</td>\n",
" <td>8.600000</td>\n",
" <td>70.000000</td>\n",
" <td>4800.000000</td>\n",
" <td>19.000000</td>\n",
" <td>25.000000</td>\n",
" <td>7775.000000</td>\n",
" <td>7.833333</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1.000000</td>\n",
" <td>122.00000</td>\n",
" <td>97.000000</td>\n",
" <td>0.832292</td>\n",
" <td>0.909722</td>\n",
" <td>54.100000</td>\n",
" <td>2414.000000</td>\n",
" <td>120.000000</td>\n",
" <td>3.310000</td>\n",
" <td>3.290000</td>\n",
" <td>9.000000</td>\n",
" <td>95.000000</td>\n",
" <td>5125.369458</td>\n",
" <td>24.000000</td>\n",
" <td>30.000000</td>\n",
" <td>10295.000000</td>\n",
" <td>9.791667</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2.000000</td>\n",
" <td>137.00000</td>\n",
" <td>102.400000</td>\n",
" <td>0.881788</td>\n",
" <td>0.925000</td>\n",
" <td>55.500000</td>\n",
" <td>2926.000000</td>\n",
" <td>141.000000</td>\n",
" <td>3.580000</td>\n",
" <td>3.410000</td>\n",
" <td>9.400000</td>\n",
" <td>116.000000</td>\n",
" <td>5500.000000</td>\n",
" <td>30.000000</td>\n",
" <td>34.000000</td>\n",
" <td>16500.000000</td>\n",
" <td>12.368421</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>3.000000</td>\n",
" <td>256.00000</td>\n",
" <td>120.900000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>59.800000</td>\n",
" <td>4066.000000</td>\n",
" <td>326.000000</td>\n",
" <td>3.940000</td>\n",
" <td>4.170000</td>\n",
" <td>23.000000</td>\n",
" <td>262.000000</td>\n",
" <td>6600.000000</td>\n",
" <td>49.000000</td>\n",
" <td>54.000000</td>\n",
" <td>45400.000000</td>\n",
" <td>18.076923</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses wheel-base length width \\\n",
"count 201.000000 201.00000 201.000000 201.000000 201.000000 \n",
"mean 0.840796 122.00000 98.797015 0.837102 0.915126 \n",
"std 1.254802 31.99625 6.066366 0.059213 0.029187 \n",
"min -2.000000 65.00000 86.600000 0.678039 0.837500 \n",
"25% 0.000000 101.00000 94.500000 0.801538 0.890278 \n",
"50% 1.000000 122.00000 97.000000 0.832292 0.909722 \n",
"75% 2.000000 137.00000 102.400000 0.881788 0.925000 \n",
"max 3.000000 256.00000 120.900000 1.000000 1.000000 \n",
"\n",
" height curb-weight engine-size bore stroke \\\n",
"count 201.000000 201.000000 201.000000 201.000000 197.000000 \n",
"mean 53.766667 2555.666667 126.875622 3.330692 3.256904 \n",
"std 2.447822 517.296727 41.546834 0.268072 0.319256 \n",
"min 47.800000 1488.000000 61.000000 2.540000 2.070000 \n",
"25% 52.000000 2169.000000 98.000000 3.150000 3.110000 \n",
"50% 54.100000 2414.000000 120.000000 3.310000 3.290000 \n",
"75% 55.500000 2926.000000 141.000000 3.580000 3.410000 \n",
"max 59.800000 4066.000000 326.000000 3.940000 4.170000 \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg \\\n",
"count 201.000000 201.000000 201.000000 201.000000 201.000000 \n",
"mean 10.164279 103.405534 5117.665368 25.179104 30.686567 \n",
"std 4.004965 37.365700 478.113805 6.423220 6.815150 \n",
"min 7.000000 48.000000 4150.000000 13.000000 16.000000 \n",
"25% 8.600000 70.000000 4800.000000 19.000000 25.000000 \n",
"50% 9.000000 95.000000 5125.369458 24.000000 30.000000 \n",
"75% 9.400000 116.000000 5500.000000 30.000000 34.000000 \n",
"max 23.000000 262.000000 6600.000000 49.000000 54.000000 \n",
"\n",
" price city-L/100km diesel gas \n",
"count 201.000000 201.000000 201.000000 201.000000 \n",
"mean 13207.129353 9.944145 0.099502 0.900498 \n",
"std 7947.066342 2.534599 0.300083 0.300083 \n",
"min 5118.000000 4.795918 0.000000 0.000000 \n",
"25% 7775.000000 7.833333 0.000000 1.000000 \n",
"50% 10295.000000 9.791667 0.000000 1.000000 \n",
"75% 16500.000000 12.368421 0.000000 1.000000 \n",
"max 45400.000000 18.076923 1.000000 1.000000 "
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The default setting of \"describe\" skips variables of type object. We can apply the method \"describe\" on the variables of type 'object' as follows:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>engine-type</th>\n",
" <th>num-of-cylinders</th>\n",
" <th>fuel-system</th>\n",
" <th>horsepower-binned</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>201</td>\n",
" <td>200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>unique</th>\n",
" <td>22</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>6</td>\n",
" <td>7</td>\n",
" <td>8</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>top</th>\n",
" <td>toyota</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>ohc</td>\n",
" <td>four</td>\n",
" <td>mpfi</td>\n",
" <td>Low</td>\n",
" </tr>\n",
" <tr>\n",
" <th>freq</th>\n",
" <td>32</td>\n",
" <td>165</td>\n",
" <td>115</td>\n",
" <td>94</td>\n",
" <td>118</td>\n",
" <td>198</td>\n",
" <td>145</td>\n",
" <td>157</td>\n",
" <td>92</td>\n",
" <td>115</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" make aspiration num-of-doors body-style drive-wheels \\\n",
"count 201 201 201 201 201 \n",
"unique 22 2 2 5 3 \n",
"top toyota std four sedan fwd \n",
"freq 32 165 115 94 118 \n",
"\n",
" engine-location engine-type num-of-cylinders fuel-system \\\n",
"count 201 201 201 201 \n",
"unique 2 6 7 8 \n",
"top front ohc four mpfi \n",
"freq 198 145 157 92 \n",
"\n",
" horsepower-binned \n",
"count 200 \n",
"unique 3 \n",
"top Low \n",
"freq 115 "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe(include=['object'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Value Counts</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Value-counts is a good way of understanding how many units of each characteristic/variable we have. We can apply the \"value_counts\" method on the column 'drive-wheels'. Don’t forget the method \"value_counts\" only works on Pandas series, not Pandas Dataframes. As a result, we only include one bracket \"df['drive-wheels']\" not two brackets \"df[['drive-wheels']]\".</p>"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"fwd 118\n",
"rwd 75\n",
"4wd 8\n",
"Name: drive-wheels, dtype: int64"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can convert the series to a Dataframe as follows :"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels\n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].value_counts().to_frame()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's repeat the above steps but save the results to the dataframe \"drive_wheels_counts\" and rename the column 'drive-wheels' to 'value_counts'."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>value_counts</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drive_wheels_counts = df['drive-wheels'].value_counts().to_frame()\n",
"drive_wheels_counts.rename(columns={'drive-wheels': 'value_counts'}, inplace=True)\n",
"drive_wheels_counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Now let's rename the index to 'drive-wheels':"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>value_counts</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"drive-wheels \n",
"fwd 118\n",
"rwd 75\n",
"4wd 8"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drive_wheels_counts.index.name = 'drive-wheels'\n",
"drive_wheels_counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can repeat the above process for the variable 'engine-location'."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>value_counts</th>\n",
" </tr>\n",
" <tr>\n",
" <th>engine-location</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>front</th>\n",
" <td>198</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rear</th>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value_counts\n",
"engine-location \n",
"front 198\n",
"rear 3"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# engine-location as variable\n",
"engine_loc_counts = df['engine-location'].value_counts().to_frame()\n",
"engine_loc_counts.rename(columns={'engine-location': 'value_counts'}, inplace=True)\n",
"engine_loc_counts.index.name = 'engine-location'\n",
"engine_loc_counts.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Examining the value counts of the engine location would not be a good predictor variable for the price. This is because we only have three cars with a rear engine and 198 with an engine in the front, this result is skewed. Thus, we are not able to draw any conclusions about the engine location.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"basic_grouping\">4. Basics of Grouping</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The \"groupby\" method groups data by different categories. The data is grouped based on one or several variables and analysis is performed on the individual groups.</p>\n",
"\n",
"<p>For example, let's group by the variable \"drive-wheels\". We see that there are 3 different categories of drive wheels.</p>"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array(['rwd', 'fwd', '4wd'], dtype=object)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['drive-wheels'].unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>If we want to know, on average, which type of drive wheel is most valuable, we can group \"drive-wheels\" and then average them.</p>\n",
"\n",
"<p>We can select the columns 'drive-wheels', 'body-style' and 'price', then assign it to the variable \"df_group_one\".</p>"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"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": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4wd</td>\n",
" <td>10241.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>fwd</td>\n",
" <td>9244.779661</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>rwd</td>\n",
" <td>19757.613333</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels price\n",
"0 4wd 10241.000000\n",
"1 fwd 9244.779661\n",
"2 rwd 19757.613333"
]
},
"execution_count": 30,
"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": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>drive-wheels</th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4wd</td>\n",
" <td>hatchback</td>\n",
" <td>7603.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4wd</td>\n",
" <td>sedan</td>\n",
" <td>12647.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4wd</td>\n",
" <td>wagon</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>fwd</td>\n",
" <td>convertible</td>\n",
" <td>11595.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>fwd</td>\n",
" <td>hardtop</td>\n",
" <td>8249.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>fwd</td>\n",
" <td>hatchback</td>\n",
" <td>8396.387755</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>fwd</td>\n",
" <td>sedan</td>\n",
" <td>9811.800000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>fwd</td>\n",
" <td>wagon</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>rwd</td>\n",
" <td>convertible</td>\n",
" <td>23949.600000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>rwd</td>\n",
" <td>hardtop</td>\n",
" <td>24202.714286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>rwd</td>\n",
" <td>hatchback</td>\n",
" <td>14337.777778</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>rwd</td>\n",
" <td>sedan</td>\n",
" <td>21711.833333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>rwd</td>\n",
" <td>wagon</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" drive-wheels body-style price\n",
"0 4wd hatchback 7603.000000\n",
"1 4wd sedan 12647.333333\n",
"2 4wd wagon 9095.750000\n",
"3 fwd convertible 11595.000000\n",
"4 fwd hardtop 8249.000000\n",
"5 fwd hatchback 8396.387755\n",
"6 fwd sedan 9811.800000\n",
"7 fwd wagon 9997.333333\n",
"8 rwd convertible 23949.600000\n",
"9 rwd hardtop 24202.714286\n",
"10 rwd hatchback 14337.777778\n",
"11 rwd sedan 21711.833333\n",
"12 rwd wagon 16994.222222"
]
},
"execution_count": 31,
"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": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"5\" halign=\"left\">price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>body-style</th>\n",
" <th>convertible</th>\n",
" <th>hardtop</th>\n",
" <th>hatchback</th>\n",
" <th>sedan</th>\n",
" <th>wagon</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7603.000000</td>\n",
" <td>12647.333333</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>11595.0</td>\n",
" <td>8249.000000</td>\n",
" <td>8396.387755</td>\n",
" <td>9811.800000</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>23949.6</td>\n",
" <td>24202.714286</td>\n",
" <td>14337.777778</td>\n",
" <td>21711.833333</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" price \\\n",
"body-style convertible hardtop hatchback sedan \n",
"drive-wheels \n",
"4wd NaN NaN 7603.000000 12647.333333 \n",
"fwd 11595.0 8249.000000 8396.387755 9811.800000 \n",
"rwd 23949.6 24202.714286 14337.777778 21711.833333 \n",
"\n",
" \n",
"body-style wagon \n",
"drive-wheels \n",
"4wd 9095.750000 \n",
"fwd 9997.333333 \n",
"rwd 16994.222222 "
]
},
"execution_count": 32,
"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": 33,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"5\" halign=\"left\">price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>body-style</th>\n",
" <th>convertible</th>\n",
" <th>hardtop</th>\n",
" <th>hatchback</th>\n",
" <th>sedan</th>\n",
" <th>wagon</th>\n",
" </tr>\n",
" <tr>\n",
" <th>drive-wheels</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4wd</th>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>7603.000000</td>\n",
" <td>12647.333333</td>\n",
" <td>9095.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fwd</th>\n",
" <td>11595.0</td>\n",
" <td>8249.000000</td>\n",
" <td>8396.387755</td>\n",
" <td>9811.800000</td>\n",
" <td>9997.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rwd</th>\n",
" <td>23949.6</td>\n",
" <td>24202.714286</td>\n",
" <td>14337.777778</td>\n",
" <td>21711.833333</td>\n",
" <td>16994.222222</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" price \\\n",
"body-style convertible hardtop hatchback sedan \n",
"drive-wheels \n",
"4wd 0.0 0.000000 7603.000000 12647.333333 \n",
"fwd 11595.0 8249.000000 8396.387755 9811.800000 \n",
"rwd 23949.6 24202.714286 14337.777778 21711.833333 \n",
"\n",
" \n",
"body-style wagon \n",
"drive-wheels \n",
"4wd 9095.750000 \n",
"fwd 9997.333333 \n",
"rwd 16994.222222 "
]
},
"execution_count": 33,
"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": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>body-style</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>convertible</td>\n",
" <td>21890.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>hardtop</td>\n",
" <td>22208.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>hatchback</td>\n",
" <td>9957.441176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>sedan</td>\n",
" <td>14459.755319</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>wagon</td>\n",
" <td>12371.960000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" body-style price\n",
"0 convertible 21890.500000\n",
"1 hardtop 22208.500000\n",
"2 hatchback 9957.441176\n",
"3 sedan 14459.755319\n",
"4 wagon 12371.960000"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"gbtest1 = df[[\"body-style\",\"price\"]]\n",
"gbtest = gbtest1.groupby([\"body-style\"],as_index=False).mean()\n",
"gbtest"
]
},
{
"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": 40,
"metadata": {
"collapsed": true
},
"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": 41,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXMAAAD8CAYAAACFK0QrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAFt5JREFUeJzt3X2sXdV95vHvc68NpOQFggm1sFuiiZWWRBMglqFiNGJCSwwTYUYlEkgT3AySqwhUUKvMQP8IE5hWiUaTdBgyJG5wMZ1MCCJvntQp9RAiGim8GGpendRWJgkuFh4w4UUJcez7zB9n3czJ5dx79r13X5+z934+0tY5Z5119vkdEL+7+O211pZtIiKi2SZGHUBERCxeknlERAskmUdEtECSeURECySZR0S0QJJ5REQLDE3mko6T9JCkxyQ9JenjA/ocK+lLkvZKelDSaUsRbEREDFZlZP5z4H223wOcAayXdM6MPlcCL9p+B/Bp4JP1hhkREXMZmszd82p5ubwcM1cabQC2lud3A+dLUm1RRkTEnJZV6SRpEngEeAfwGdsPzuhyKvAMgO3Dkl4CTgKen3GeTcAmACaWvVfHnbCo4MdOS1fT/vaa1aMOoXZ7n3151CEsiVNO+rVRh7Aknvn+k8/bPnkx55h48ypz+LVKff2zF+6xvX4x33e0VUrmto8AZ0g6AfiqpHfbfrKvy6BR+Osym+3NwGaAieNP9jGn//4CQh5fU4cPjTqEJXHX9r8YdQi1u/jjO0YdwpL4ow+dOeoQlsS1/+Kf/WjRJzn8GsveeXGlrr/Y9VcrFv19R9m8ZrPY/gnwbWDmX6x9wGoAScuAtwAHa4gvIqIeEpqYrHQ0UZXZLCeXETmS3gD8LvC9Gd22ARvL80uBbzk7eEXEWBETy46pdDRRlTLLSmBrqZtPAHfZ/oakG4GdtrcBtwF/LWkvvRH5ZUsWcUTEQpSReVsNTea2HwdeV4iz/bG+568BH6w3tIiI+gjQZIeTeUREK0hMdHlkHhHRFp0us0REtELXa+YREW0gxMSy5aMOY8kkmUdEN2RkHhHRDknmERFNJ2VqYkRE04mMzCMimk8TTDZ0qX4VSeYR0Q3KyDwiovFEZrNERLRCknlERNNlnnlERBskmUdENJ4kJpZnNktERLOlzBIR0Q5J5hERLTAxoVGHsGSSzCOiEyShJPOIiOabnJwYdQhLJsk8IrpBZGQeEdF0vV0Tk8wjIhpOTCjJPCKi2VJmiYhohyTziIiGk2ByWZJ5RETjqcU186GTLiWtlnSfpN2SnpJ0zYA+50l6SdKucnxsacKNiFgYSUxMVDuaqMrI/DDwJ7YflfQm4BFJO2w/PaPf39v+QP0hRkTUo80186Ejc9v7bT9anr8C7AZOXerAIiLqpglVOuY8xyzVCklvlbRD0p7yeGJpl6SbJe2V9Liks/rOtbH03yNpY1/7eyU9UT5zsyrUh+a1tlXSacCZwIMD3v4dSY9J+qakd83nvBERS04wIVU6hpiuVvw2cA5wlaTTgeuAe22vAe4trwEuBNaUYxNwK/SSP3ADcDawDrhh+g9A6bOp73PrhwVVOZlLeiPwZeBa2y/PePtR4Ddtvwf4b8DXZjnHJkk7Je304deqfnVExKIJMbFsotIxlzmqFRuAraXbVuCS8nwDcId7HgBOkLQSeD+ww/ZB2y8CO4D15b032/6ubQN39J1rVpWSuaTl9BL5F2x/ZcCPe9n2q+X5dmC5pBUD+m22vdb2Wi07rspXR0TUQ8znAuiK6YFnOTYNPOWvVitOsb0fegkfeFvpdirwTN/H9pW2udr3DWif09ALoKVWcxuw2/anZunz68Bzti1pHb0/Ei8MO3dExNE0j6mJz9teO+Rcv1KtmOPcg97wAtrnVGU2y7nAh4AnJO0qbX8K/AaA7c8ClwIfkXQY+BlwWfnfg4iIsdDbaKumcw2uVjwnaaXt/aVUcqC07wNW9318FfBsaT9vRvu3S/uqAf3nNDSZ2/4Og/9S9Pe5Bbhl2LkiIkZG9dxpaI5qxTZgI/CJ8vj1vvarJd1J72LnSyXh3wP8ed9FzwuA620flPSKpHPolW+uoHctck5ZARoRHSEm6rk5xWzVik8Ad0m6Evgx8MHy3nbgImAv8FPgwwAlad8EPFz63Wj7YHn+EeB24A3AN8sxpyTziOgE1TQyH1KtOH9AfwNXzXKuLcCWAe07gXfPJ64k84jojDavAE0yj4hOkGAyyTwiovmSzCMiGk4oyTwioukkOGbIUv0mSzKPiE6QYFlG5hERzSZSM4+IaD6lZh4R0Xi9kXlq5hERjZeReUREw01Imc0SEdEGk9X3M2+cJPOI6IQs54+IaIkk84iIhsuioYiIFhC5ABoR0XipmUdEtECW80dEtEFG5hERzZf9zCMiWiLJPCKi4SZyc4qIiBZIzTwiovmEsjdLREQbTCSZR0Q0m4DJ9uZyhl4NkLRa0n2Sdkt6StI1A/pI0s2S9kp6XNJZSxNuRMQCCSYmVOlooioj88PAn9h+VNKbgEck7bD9dF+fC4E15TgbuLU8RkSMBQHLW3zbuKG/zPZ+24+W568Au4FTZ3TbANzhngeAEyStrD3aiIgFmi6zVDmaaF41c0mnAWcCD85461Tgmb7X+0rb/hmf3wRsAli9ehV77v3z+UU77h76+qgjWBq7vzbqCGq356O/NeoQloQnfjLqEJbEtXWcRM0toVRR+f85JL0R+DJwre2XZ7494CN+XYO92fZa22tPPumk+UUaEbEIojebpcrRRJVG5pKW00vkX7D9lQFd9gGr+16vAp5dfHgREfVpagmliiqzWQTcBuy2/alZum0DriizWs4BXrK9f5a+ERFHnQTLJycqHU1UZWR+LvAh4AlJu0rbnwK/AWD7s8B24CJgL/BT4MP1hxoRsXDTZZa2GprMbX+HwTXx/j4GrqorqIiIpdDmMktWgEZEJ4jmXtysopnFoYiI+Sq7JlY5hp5K2iLpgKQn+9r+o6R/krSrHBf1vXd9WSH/fUnv72tfX9r2Srqur/3tkh6UtEfSlyQdMyymJPOI6IRezbzaUcHtwPoB7Z+2fUY5tgNIOh24DHhX+cx/lzQpaRL4DL0V9KcDl5e+AJ8s51oDvAhcOSygJPOI6ITp5fxVjmFs3w8crPjVG4A7bf/c9v+hN1FkXTn22v6B7UPAncCGMoPwfcDd5fNbgUuGfUmSeUR0g2ByotoBrJC0s+/YVPFbri6bDW6RdGJpm22F/GztJwE/sX14RvuccgE0IjphnlMTn7e9dp5fcStwE73V7zcB/wX4d8y+Qn7QYNpz9J9TknlEdMTS3mnI9nO//CbpL4FvlJdzrZAf1P48vc0Kl5XReaUV9SmzREQnLPXeLDN2iv03wPRMl23AZZKOlfR2eluFPwQ8DKwpM1eOoXeRdFtZt3MfcGn5/EZg6C5+GZlHRCf0lvPXMzKX9EXgPHq19X3ADcB5ks6gVxL5IfCHALafknQX8DS9+0NcZftIOc/VwD3AJLDF9lPlK/4DcKek/wT8A70tVeaUZB4RnVFXlcX25QOaZ024tv8M+LMB7dvpbYcys/0H9Ga7VJZkHhGdMTH3ziSNlmQeEZ0g6huZj6Mk84jojBbfaCjJPCI6QhmZR0Q0npZ4nvmoJZlHRGekzBIR0QItzuVJ5hHRDZ2/bVxERFu0OJcnmUdEd7R5M6ok84joBJXbxrVVknlEdEbKLBERDSdSZomIaAW1eGieZB4R3aAsGoqIaDwBNd2bYiwlmUdEZ7S5zDL0eoCkLZIOSHpylvfPk/SSpF3l+Fj9YUZELE5vBWi1o4mqjMxvB24B7pijz9/b/kAtEUVELJGG5ulKhiZz2/dLOm3pQ4mIWEpq9d4sdU27/B1Jj0n6pqR3zdZJ0iZJOyXt/L8vvFDTV0dEVFBuTlHlaKI6LoA+Cvym7VclXQR8DVgzqKPtzcBmgPeeeYZr+O6IiEpko6kjow5jySx6ZG77ZduvlufbgeWSViw6soiImslTlY4mWvTIXNKvA8/ZtqR19P5ApIYSEWPG0NBEXcXQZC7pi8B5wApJ+4AbgOUAtj8LXAp8RNJh4GfAZbZTQomI8dPi1FRlNsvlQ96/hd7UxYiI8eWOj8wjItqiqfXwKpLMI6IjDFOHRx3Ekkkyj4huMCmzREQ0n2EqyTwiovFSM4+IaIMk84iIhrOhxcv5k8wjojNSZomIaLwsGoqIaIcWJ/O69jOPiBhv08v5qxxDDLqdpqS3StohaU95PLG0S9LNkvZKelzSWX2f2Vj675G0sa/9vZKeKJ+5WRVuXppkHhGdIGrdAvd2YP2MtuuAe22vAe4trwEupHePhzXAJuBW6CV/ehsXng2sA26Y/gNQ+mzq+9zM73qdJPOI6AjDkSPVjmFnsu8HDs5o3gBsLc+3Apf0td/hngeAEyStBN4P7LB90PaLwA5gfXnvzba/W3agvaPvXLNKzTwiumF+y/lXSNrZ93pzuVPaXE6xvR/A9n5JbyvtpwLP9PXbV9rmat83oH1OSeYR0RnzmJr4vO21dX3tgDYvoH1OKbNEREfUdwF0Fs+VEgnl8UBp3wes7uu3Cnh2SPuqAe1zSjKPiO5Y2mS+DZiekbIR+Hpf+xVlVss5wEulHHMPcIGkE8uFzwuAe8p7r0g6p8xiuaLvXLNKmSUiuqHG5fyz3E7zE8Bdkq4Efgx8sHTfDlwE7AV+Cny4F44PSroJeLj0u9H29EXVj9CbMfMG4JvlmFOSeUR0hPHhX9Rzptlvp3n+gL4GrprlPFuALQPadwLvnk9MSeYR0Q0mG21FRDSdMa4wh7ypkswjohtM7jQUEdF82c88IqL5XN8F0HGUZB4RHWGckXlERMNlNktERBu41RdAhy7nH7QJ+4z3Z914PSJibBh85Eilo4mq7M1yO3NvjD5w4/WIiPFSZrNUORpoaJnF9v2STpujyy83XgcekHSCpJXT+/pGRIyFzGYZarYN1l+XzCVtojd6Z/XqVTPfjohYQplnPkzljdTLnTo2A5ysY33NW1Jeb4JP3X31qEOo3c/WXTrqEJbEG/fcP+oQxldmsww12wbrERFjwxh3eTZLBbNtvB4RMT6mR+ZdvQA6yybsywFsf5ZZNl6PiBgrNv7FoVFHsWSqzGaZbRP26fdn3Xg9ImJ8tHvRUFaARkR3NLSEUkWSeUR0g7PRVkREK7R5NkuSeUR0g42PJJlHRDSabaZ+cXjUYSyZJPOI6AaTkXlERBskmUdENJxtphq6V3kVSeYR0RmZzRIR0XSZzRIR0XyZzRIR0RJTGZlHRDRcpiZGRLRAauYREc1nMpslIqL5bKYO5QJoRESzGaYyMo+IaDaTmnlERPMZ3OLl/BOjDiAi4ugwnpqqdAwj6YeSnpC0S9LO0vZWSTsk7SmPJ5Z2SbpZ0l5Jj0s6q+88G0v/PZI2LubXJZlHRDeUeeZVjor+le0zbK8tr68D7rW9Bri3vAa4EFhTjk3ArdBL/sANwNnAOuCG6T8AC5FkHhGdYJsjhw5XOhZoA7C1PN8KXNLXfod7HgBOkLQSeD+ww/ZB2y8CO4D1C/3yJPOI6Ih5lVlWSNrZd2x63cng7yQ90vfeKbb3A5THt5X2U4Fn+j67r7TN1r4guQAaEd0wv+X8z/eVTwY51/azkt4G7JD0vTn6anA0s7YvSEbmEdENBh9xpWPoqexny+MB4Kv0at7PlfIJ5fFA6b4PWN338VXAs3O0L0iSeUR0gjFTR6YqHXORdLykN00/By4AngS2AdMzUjYCXy/PtwFXlFkt5wAvlTLMPcAFkk4sFz4vKG0LkjJLRHSDwVMLrmL0OwX4qiTo5dD/aftvJT0M3CXpSuDHwAdL/+3ARcBe4KfAhwFsH5R0E/Bw6Xej7YMLDapSMpe0HvivwCTwedufmPH+HwD/Gfin0nSL7c8vNKiIiLrZcOTQ4hcN2f4B8J4B7S8A5w9oN3DVLOfaAmxZdFBUSOaSJoHPAL9Hr8bzsKRttp+e0fVLtq+uI6iIiNq5Wj28qaqMzNcBe8tfIyTdSW/e5MxkHhEx1qZanMyrXACtOhfy98tS1bslrR7wfkTE6NS/AnSsVEnmVeZC/i/gNNv/HPjf/P9VUL96ImnT9CT812jvhjcRMX4MTE250tFEVcosQ+dClsL/tL8EPjnoRLY3A5sBTtaxzfwnFhHNZNdyAXRcVRmZPwyskfR2SccAl9GbN/lL0xPli4uB3fWFGBGxeK5x0dA4Gjoyt31Y0tX0JrNPAltsPyXpRmCn7W3AH0m6GDgMHAT+YAljjoiYv5LM26rSPHPb2+lNfO9v+1jf8+uB6+sNLSKiTh66urPJsgI0IrqhvhWgYynJPCI6wbR7nnmSeUR0g81Ui2ezJJlHRCfYGZlHRLRClZs1N1WSeUR0g52ReURE42WeeURE85l53QO0cZLMI6IbbI4cSjKPiGg0G6acMktEROMdSTKPiGg2Ay2+/plkHhHdkZF5RETDTRkOZaOtiIjmS5klIqLhjFNmiYhoulwAjYhoiSTziIiGszObJSKi8Uxms0RENF5q5hERLZEyS0REw/Vq5qOOYukkmUdEZ2RkHhHRcAbau5t5knlEdIRxZrNERDRdbzZLknlERLO1/ALoRJVOktZL+r6kvZKuG/D+sZK+VN5/UNJpdQcaEbEY0yPzKscww3LiKAxN5pImgc8AFwKnA5dLOn1GtyuBF22/A/g08Mm6A42IWKwjrnbMpWJOPOqqjMzXAXtt/8D2IeBOYMOMPhuAreX53cD5klRfmBERizNFbzl/lWOIKjnxqKtSMz8VeKbv9T7g7Nn62D4s6SXgJOD5/k6SNgGbysuff44fPbmQoMfcCmb87qb73KUfbd1vgo9CC/9d0c7fBPDOxZ7geQ7d8zl+tKJi9+Mk7ex7vdn25vK8Sk486qok80Ej7Jl/uqr0ofzD2AwgaafttRW+v1Ha+Lva+Jugnb+rjb8Jer9rseewvb6OWKiY7462KmWWfcDqvtergGdn6yNpGfAW4GAdAUZEjJkqOfGoq5LMHwbWSHq7pGOAy4BtM/psAzaW55cC37JbPKEzIrqsSk486oaWWUoN/GrgHmAS2GL7KUk3AjttbwNuA/5a0l56I/LLKnz35uFdGqmNv6uNvwna+bva+JtgjH7XbDlxxGGhDKAjIpqv0qKhiIgYb0nmEREtMJJkPo5LYRdL0hZJByS1Zu68pNWS7pO0W9JTkq4ZdUx1kHScpIckPVZ+18dHHVNdJE1K+gdJ3xh1LHWR9ENJT0jaVccUxbY66jXzshT2H4HfozfF52HgcttPH9VAaibpXwKvAnfYfveo46mDpJXAStuPSnoT8AhwSQv+XQk43varkpYD3wGusf3AiENbNEl/DKwF3mz7A6OOpw6Sfgistd3GxVC1GcXIfCyXwi6W7ftp2dx62/ttP1qevwLsprf6rdHc82p5ubwcjZ8JIGkV8K+Bz486ljj6RpHMBy2FbXyCaLuyE+aZwIOjjaQepRyxCzgA7LDdht/1F8C/p3031DHwd5IeKVuCxACjSOZjuRQ2ZifpjcCXgWttvzzqeOpg+4jtM+it3lsnqdGlMUkfAA7YfmTUsSyBc22fRW+XwqtKSTNmGEUyH8ulsDFYqSl/GfiC7a+MOp662f4J8G2grn07RuVc4OJSX74TeJ+k/zHakOph+9nyeAD4Kr1SbcwwimQ+lkth4/XKhcLbgN22PzXqeOoi6WRJJ5TnbwB+F/jeaKNaHNvX215l+zR6/019y/a/HXFYiybp+HLxHUnHAxcArZkxVqejnsxtHwaml8LuBu4ah6WwiyXpi8B3gXdK2ifpylHHVINzgQ/RG+XtKsdFow6qBiuB+yQ9Tm9wscN2a6bytcwpwHckPQY8BPyN7b8dcUxjKcv5IyJaICtAIyJaIMk8IqIFkswjIlogyTwiogWSzCMiWiDJPCKiBZLMIyJa4P8BhKqO/dvZlsQAAAAASUVORK5CYII=\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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": 42,
"metadata": {
"collapsed": true
},
"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": 43,
"metadata": {
"collapsed": 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": 44,
"metadata": {
"collapsed": 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": 45,
"metadata": {
"collapsed": 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": 46,
"metadata": {
"collapsed": 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": 47,
"metadata": {
"collapsed": 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": 48,
"metadata": {
"collapsed": 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": 49,
"metadata": {
"collapsed": 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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"grouped_test2=df_gptest[['drive-wheels', 'price']].groupby(['drive-wheels'])\n",
"grouped_test2.head(2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"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": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"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_NotbookLink_Top_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 3",
"language": "python",
"name": "python3"
},
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment