{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Project: Analyzing Fuel Economy Data for 2008 and 2018\n",
"\n",
"--by Lu Tang"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Table of Contents\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" \n",
"# Introduction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fuel Economy Data is provided by the U.S. Environmental Protection Agency, Office of Mobile Sources, National Vehicle and Fuel Emissions Laboratory.\n",
"\n",
"What is Fuel Economy? Excerpt from Wikipedia page on Fuel Economy in Automobiles:\n",
">- The fuel economy of an automobile is the fuel efficiency relationship between the distance traveled and the amount of fuel consumed by the vehicle. Consumption can be expressed in terms of volume of fuel to travel a distance, or the distance travelled per unit volume of fuel consumed.\n",
"\n",
"This project will compare Fuel Economy Data for 2008 and 2018, and analyze the changes in vehicles and its fuel efficiency.\n",
"\n",
"Data Source\n",
"https://www.epa.gov/compliance-and-fuel-economy-data/data-cars-used-testing-fuel-economy\n",
"\n",
"Data Download\n",
"https://www.fueleconomy.gov/feg/download.shtml\n",
"\n",
"Documentation \n",
"https://www.fueleconomy.gov/feg/EPAGreenGuide/GreenVehicleGuideDocumentation.pdf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Attribute Description\n",
">- `Model`-- Vehicle make and model\n",
">- `Disp`l-- Engine displacement - the size of an engine in liters\n",
">- `Cyl`-- The number of cylinders in a particular engine\n",
">- `Trans`-- Transmission Type and Number of Gears\n",
">- `Drive`-- Drive axle type (2WD = 2-wheel drive, 4WD = 4-wheel/all-wheel drive)\n",
">- `Fuel`--\tFuel Type\n",
">- `Cert Region`*--\tCertification Region Code\n",
">- `Sales Area`**--\tCertification Region Code\n",
">- `Stnd`--\tVehicle emissions standard code (View Vehicle Emissions Standards here)\n",
">- `Stnd Description`*-- Vehicle emissions standard description\n",
">- `Underhood ID`--\tThis is a 12-digit ID number that can be found on the underhood emission label of every vehicle. It's required by the EPA to designate its \"test group\" or \"engine family.\" This is explained more here\n",
">- `Veh Class`-- EPA Vehicle Class\n",
">- `Air Pollution Score`--\tAir pollution score (smog rating, scoring ranges from 1 (worst) to 10 (best)).\n",
">- `City MPG`-- Estimated city mpg (miles/gallon)\n",
">- `Hwy MPG`-- Estimated highway mpg (miles/gallon)\n",
">- `Cmb MPG`-- Estimated combined mpg (miles/gallon)\n",
">- `Greenhouse Gas Score`-- Greenhouse gas rating (Vehicles that score a 10 are the cleanest)\n",
">- `SmartWay`--\tYes, No, or Elite\n",
">- `Comb CO2`*-- Combined city/highway CO2 tailpipe emissions in grams per mile\n",
">- *Not included in 2008 dataset\n",
">- ** Not included in 2018 dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The project will answer the following questions:\n",
"\n",
"Q1: Compare the distributions of greenhouse gas score in 2008 and 2018.\n",
"\n",
"Q2: How has the distribution of combined mpg changed from 2008 to 2018?\n",
"\n",
"Q3: Describe the correlation between displacement and combined mpg\n",
"\n",
"Q4: Describe the correlation between greenhouse gas score and combined mpg.\n",
"\n",
"Q5: Are more unique models using alternative sources of fuel? By how much?\n",
"\n",
"Q6: How much have vehicle classes improved in fuel economy?\n",
"\n",
"Q7: What are the characteristics of SmartWay vehicles? Have they changed over time?\n",
"\n",
"Q8: For all of the models that were produced in 2008 that are still being produced now, how much has the mpg improved and which vehicle improved the most?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" \n",
"# Data Wrangling"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step1. Assessing Data"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Model \n",
" Displ \n",
" Cyl \n",
" Trans \n",
" Drive \n",
" Fuel \n",
" Sales Area \n",
" Stnd \n",
" Underhood ID \n",
" Veh Class \n",
" Air Pollution Score \n",
" FE Calc Appr \n",
" City MPG \n",
" Hwy MPG \n",
" Cmb MPG \n",
" Unadj Cmb MPG \n",
" Greenhouse Gas Score \n",
" SmartWay \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA MDX \n",
" 3.7 \n",
" (6 cyl) \n",
" Auto-S5 \n",
" 4WD \n",
" Gasoline \n",
" CA \n",
" U2 \n",
" 8HNXT03.7PKR \n",
" SUV \n",
" 7 \n",
" Drv \n",
" 15 \n",
" 20 \n",
" 17 \n",
" 22.0527 \n",
" 4 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Model Displ Cyl Trans Drive Fuel Sales Area Stnd \\\n",
"0 ACURA MDX 3.7 (6 cyl) Auto-S5 4WD Gasoline CA U2 \n",
"\n",
" Underhood ID Veh Class Air Pollution Score FE Calc Appr City MPG Hwy MPG \\\n",
"0 8HNXT03.7PKR SUV 7 Drv 15 20 \n",
"\n",
" Cmb MPG Unadj Cmb MPG Greenhouse Gas Score SmartWay \n",
"0 17 22.0527 4 no "
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Load data for 2008\n",
"import pandas as pd\n",
"df_08=pd.read_csv('all_alpha_08.csv')\n",
"df_08.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Model \n",
" Displ \n",
" Cyl \n",
" Trans \n",
" Drive \n",
" Fuel \n",
" Cert Region \n",
" Stnd \n",
" Stnd Description \n",
" Underhood ID \n",
" Veh Class \n",
" Air Pollution Score \n",
" City MPG \n",
" Hwy MPG \n",
" Cmb MPG \n",
" Greenhouse Gas Score \n",
" SmartWay \n",
" Comb CO2 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA RDX \n",
" 3.5 \n",
" 6.0 \n",
" SemiAuto-6 \n",
" 2WD \n",
" Gasoline \n",
" FA \n",
" T3B125 \n",
" Federal Tier 3 Bin 125 \n",
" JHNXT03.5GV3 \n",
" small SUV \n",
" 3 \n",
" 20 \n",
" 28 \n",
" 23 \n",
" 5 \n",
" No \n",
" 386 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Model Displ Cyl Trans Drive Fuel Cert Region Stnd \\\n",
"0 ACURA RDX 3.5 6.0 SemiAuto-6 2WD Gasoline FA T3B125 \n",
"\n",
" Stnd Description Underhood ID Veh Class Air Pollution Score \\\n",
"0 Federal Tier 3 Bin 125 JHNXT03.5GV3 small SUV 3 \n",
"\n",
" City MPG Hwy MPG Cmb MPG Greenhouse Gas Score SmartWay Comb CO2 \n",
"0 20 28 23 5 No 386 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Load data for 2018\n",
"df_18=pd.read_csv('all_alpha_18.csv')\n",
"df_18.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 2404 entries, 0 to 2403\n",
"Data columns (total 18 columns):\n",
"Model 2404 non-null object\n",
"Displ 2404 non-null float64\n",
"Cyl 2205 non-null object\n",
"Trans 2205 non-null object\n",
"Drive 2311 non-null object\n",
"Fuel 2404 non-null object\n",
"Sales Area 2404 non-null object\n",
"Stnd 2404 non-null object\n",
"Underhood ID 2404 non-null object\n",
"Veh Class 2404 non-null object\n",
"Air Pollution Score 2404 non-null object\n",
"FE Calc Appr 2205 non-null object\n",
"City MPG 2205 non-null object\n",
"Hwy MPG 2205 non-null object\n",
"Cmb MPG 2205 non-null object\n",
"Unadj Cmb MPG 2205 non-null float64\n",
"Greenhouse Gas Score 2205 non-null object\n",
"SmartWay 2404 non-null object\n",
"dtypes: float64(2), object(16)\n",
"memory usage: 338.1+ KB\n"
]
}
],
"source": [
"df_08.info()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 1611 entries, 0 to 1610\n",
"Data columns (total 18 columns):\n",
"Model 1611 non-null object\n",
"Displ 1609 non-null float64\n",
"Cyl 1609 non-null float64\n",
"Trans 1611 non-null object\n",
"Drive 1611 non-null object\n",
"Fuel 1611 non-null object\n",
"Cert Region 1611 non-null object\n",
"Stnd 1611 non-null object\n",
"Stnd Description 1611 non-null object\n",
"Underhood ID 1611 non-null object\n",
"Veh Class 1611 non-null object\n",
"Air Pollution Score 1611 non-null int64\n",
"City MPG 1611 non-null object\n",
"Hwy MPG 1611 non-null object\n",
"Cmb MPG 1611 non-null object\n",
"Greenhouse Gas Score 1611 non-null int64\n",
"SmartWay 1611 non-null object\n",
"Comb CO2 1611 non-null object\n",
"dtypes: float64(2), int64(2), object(14)\n",
"memory usage: 226.6+ KB\n"
]
}
],
"source": [
"df_18.info()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(25, 0)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum(df_08.duplicated()), sum(df_18.duplicated())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analysis\n",
"> Columns and datatypes in two datasets are not consistent, and there are missing data and duplicated data too"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 2. Cleaning Columns, filter, drop nulls and dedupe."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 2_1. Drop extraneous columns\n",
"Drop features that aren't consistent (not present in both datasets) or aren't relevant to our questions. Use pandas' drop function."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Model', 'Displ', 'Cyl', 'Trans', 'Drive', 'Fuel', 'Sales Area', 'Stnd',\n",
" 'Underhood ID', 'Veh Class', 'Air Pollution Score', 'FE Calc Appr',\n",
" 'City MPG', 'Hwy MPG', 'Cmb MPG', 'Unadj Cmb MPG',\n",
" 'Greenhouse Gas Score', 'SmartWay'],\n",
" dtype='object')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# view columns in 2008 dataset\n",
"df_08.columns"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Model', 'Displ', 'Cyl', 'Trans', 'Drive', 'Fuel', 'Cert Region',\n",
" 'Stnd', 'Stnd Description', 'Underhood ID', 'Veh Class',\n",
" 'Air Pollution Score', 'City MPG', 'Hwy MPG', 'Cmb MPG',\n",
" 'Greenhouse Gas Score', 'SmartWay', 'Comb CO2'],\n",
" dtype='object')"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# view columns in 2018 dataset\n",
"df_18.columns"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# drop columns from 2008 dataset\n",
"df_08.drop(['Stnd', 'Underhood ID', 'FE Calc Appr', 'Unadj Cmb MPG'],axis=1, inplace=True)\n",
"\n",
"# drop columns from 2018 dataset\n",
"df_18.drop(['Stnd', 'Stnd Description', 'Underhood ID', 'Comb CO2'],axis=1, inplace=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 2_2. Rename columns"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Model \n",
" Displ \n",
" Cyl \n",
" Trans \n",
" Drive \n",
" Fuel \n",
" Cert Region \n",
" Veh Class \n",
" Air Pollution Score \n",
" City MPG \n",
" Hwy MPG \n",
" Cmb MPG \n",
" Greenhouse Gas Score \n",
" SmartWay \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA MDX \n",
" 3.7 \n",
" (6 cyl) \n",
" Auto-S5 \n",
" 4WD \n",
" Gasoline \n",
" CA \n",
" SUV \n",
" 7 \n",
" 15 \n",
" 20 \n",
" 17 \n",
" 4 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Model Displ Cyl Trans Drive Fuel Cert Region Veh Class \\\n",
"0 ACURA MDX 3.7 (6 cyl) Auto-S5 4WD Gasoline CA SUV \n",
"\n",
" Air Pollution Score City MPG Hwy MPG Cmb MPG Greenhouse Gas Score SmartWay \n",
"0 7 15 20 17 4 no "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# rename Sales Area to Cert Region\n",
"df_08.rename({'Sales Area':'Cert Region'}, axis=1, inplace=True)\n",
"\n",
"# confirm changes\n",
"df_08.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" cert_region \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA MDX \n",
" 3.7 \n",
" (6 cyl) \n",
" Auto-S5 \n",
" 4WD \n",
" Gasoline \n",
" CA \n",
" SUV \n",
" 7 \n",
" 15 \n",
" 20 \n",
" 17 \n",
" 4 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel cert_region veh_class \\\n",
"0 ACURA MDX 3.7 (6 cyl) Auto-S5 4WD Gasoline CA SUV \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"0 7 15 20 17 4 no "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# replace spaces with underscores and lowercase labels for 2008 dataset\n",
"df_08.rename(columns=lambda x:x.strip().lower().replace(' ','_'), inplace=True)\n",
"\n",
"# confirm changes\n",
"df_08.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" cert_region \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA RDX \n",
" 3.5 \n",
" 6.0 \n",
" SemiAuto-6 \n",
" 2WD \n",
" Gasoline \n",
" FA \n",
" small SUV \n",
" 3 \n",
" 20 \n",
" 28 \n",
" 23 \n",
" 5 \n",
" No \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel cert_region veh_class \\\n",
"0 ACURA RDX 3.5 6.0 SemiAuto-6 2WD Gasoline FA small SUV \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"0 3 20 28 23 5 No "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# replace spaces with underscores and lowercase labels for 2018 dataset\n",
"df_18.rename(columns=lambda x:x.strip().lower().replace(' ','_'), inplace=True)\n",
"\n",
"# confirm changes\n",
"df_18.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# confirm column labels for 2008 and 2018 datasets are identical \n",
"(df_08.columns==df_18.columns).all()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 2_3. Filter data by Certification Region to compare with the same standard\n",
"\n",
"For consistency, only compare cars certified by California standards. Filter both datasets using query to select only rows where cert_region is CA. Then, drop the cert_region columns, since it will no longer provide any useful information (all value are 'CA')."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"FA 1157\n",
"CA 1084\n",
"FC 163\n",
"Name: cert_region, dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the unique value in cert_region for 2008 data\n",
"df_08['cert_region'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"FA 813\n",
"CA 798\n",
"Name: cert_region, dtype: int64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the unique value in cert_region for 2018 data\n",
"df_18['cert_region'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# filter datasets for rows following California standards\n",
"df_08 = df_08[df_08['cert_region']=='CA']\n",
"# using query method (same as above)\n",
"df_18 = df_18.query('cert_region == \"CA\"')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"CA 1084\n",
"Name: cert_region, dtype: int64"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# confirm only certification region is California\n",
"df_08['cert_region'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"CA 798\n",
"Name: cert_region, dtype: int64"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# confirm only certification region is California\n",
"df_18['cert_region'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"# drop certification region columns form both datasets\n",
"df_08.drop('cert_region', axis=1, inplace=True)\n",
"df_18.drop('cert_region', axis=1, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((1084, 13), (798, 13))"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the columns and row number after the change \n",
"df_08.shape, df_18.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 2_4. Cleaning data with Missing Values"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"model 0\n",
"displ 0\n",
"cyl 75\n",
"trans 75\n",
"drive 37\n",
"fuel 0\n",
"veh_class 0\n",
"air_pollution_score 0\n",
"city_mpg 75\n",
"hwy_mpg 75\n",
"cmb_mpg 75\n",
"greenhouse_gas_score 75\n",
"smartway 0\n",
"dtype: int64"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# view missing value count for each feature in 2008\n",
"df_08.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"model 0\n",
"displ 1\n",
"cyl 1\n",
"trans 0\n",
"drive 0\n",
"fuel 0\n",
"veh_class 0\n",
"air_pollution_score 0\n",
"city_mpg 0\n",
"hwy_mpg 0\n",
"cmb_mpg 0\n",
"greenhouse_gas_score 0\n",
"smartway 0\n",
"dtype: int64"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# view missing value count for each feature in 2018\n",
"df_18.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# As the number of missing data is less than 7%, and each car is different, so filling missing value can be inaccurate\n",
"# in this case we can drop rows with any null values in both datasets\n",
"df_08.dropna(inplace=True)\n",
"df_18.dropna(inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# checks if any of columns in 2008 have null values - should print False\n",
"df_08.isnull().sum().any()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# checks if any of columns in 2018 have null values - should print False\n",
"df_18.isnull().sum().any()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 2_5. Dedupe Data"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(23, 3)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# print number of duplicates in 2008 and 2018 datasets\n",
"sum(df_08.duplicated()), sum(df_18.duplicated())"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"# drop duplicates in both datasets\n",
"df_08.drop_duplicates(inplace=True)\n",
"df_18.drop_duplicates(inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0, 0)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# print number of duplicates again to confirm dedupe - should both be 0\n",
"df_08.duplicated().sum(), df_18.duplicated().sum()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"# save progress for the next section\n",
"df_08.to_csv('data_08_v1.csv', index=False)\n",
"df_18.to_csv('data_18_v1.csv', index=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 3. Fix Datatypes"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"# Load data\n",
"df_08=pd.read_csv('data_08_v1.csv')\n",
"df_18=pd.read_csv('data_18_v1.csv')"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 986 entries, 0 to 985\n",
"Data columns (total 13 columns):\n",
"model 986 non-null object\n",
"displ 986 non-null float64\n",
"cyl 986 non-null object\n",
"trans 986 non-null object\n",
"drive 986 non-null object\n",
"fuel 986 non-null object\n",
"veh_class 986 non-null object\n",
"air_pollution_score 986 non-null object\n",
"city_mpg 986 non-null object\n",
"hwy_mpg 986 non-null object\n",
"cmb_mpg 986 non-null object\n",
"greenhouse_gas_score 986 non-null object\n",
"smartway 986 non-null object\n",
"dtypes: float64(1), object(12)\n",
"memory usage: 100.2+ KB\n"
]
}
],
"source": [
"# check datatype in 2008 dataset\n",
"df_08.info()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 794 entries, 0 to 793\n",
"Data columns (total 13 columns):\n",
"model 794 non-null object\n",
"displ 794 non-null float64\n",
"cyl 794 non-null float64\n",
"trans 794 non-null object\n",
"drive 794 non-null object\n",
"fuel 794 non-null object\n",
"veh_class 794 non-null object\n",
"air_pollution_score 794 non-null int64\n",
"city_mpg 794 non-null object\n",
"hwy_mpg 794 non-null object\n",
"cmb_mpg 794 non-null object\n",
"greenhouse_gas_score 794 non-null int64\n",
"smartway 794 non-null object\n",
"dtypes: float64(2), int64(2), object(9)\n",
"memory usage: 80.7+ KB\n"
]
}
],
"source": [
"# check datatype in 2018 dataset\n",
"df_18.info()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA MDX \n",
" 3.7 \n",
" (6 cyl) \n",
" Auto-S5 \n",
" 4WD \n",
" Gasoline \n",
" SUV \n",
" 7 \n",
" 15 \n",
" 20 \n",
" 17 \n",
" 4 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"0 ACURA MDX 3.7 (6 cyl) Auto-S5 4WD Gasoline SUV \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"0 7 15 20 17 4 no "
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_08.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA RDX \n",
" 3.5 \n",
" 6.0 \n",
" SemiAuto-6 \n",
" 2WD \n",
" Gasoline \n",
" small SUV \n",
" 3 \n",
" 20 \n",
" 28 \n",
" 23 \n",
" 5 \n",
" No \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"0 ACURA RDX 3.5 6.0 SemiAuto-6 2WD Gasoline small SUV \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"0 3 20 28 23 5 No "
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_18.head(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 3_1. Fix `cyl` datatypes"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(6 cyl) 409\n",
"(4 cyl) 283\n",
"(8 cyl) 199\n",
"(5 cyl) 48\n",
"(12 cyl) 30\n",
"(10 cyl) 14\n",
"(2 cyl) 2\n",
"(16 cyl) 1\n",
"Name: cyl, dtype: int64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check value counts for the 2008 cyl column\n",
"df_08['cyl'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[This](https://stackoverflow.com/questions/35376387/extract-int-from-string-in-pandas) explains how to extract ints from strings in Pandas."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"# Extract number from strings in the 2008 cyl column using regular expressions\n",
"df_08['cyl'] = df_08['cyl'].str.extract('(\\d+)').astype(int)\n",
"\n",
"# Alternative way, without regular expressions, but only works in a certain format\n",
"\n",
"# df_08['cyl']=(df_08['cyl'].str.split(' ',n=1, expand=True).iloc[:,0].str[1:].astype(int))"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6 409\n",
"4 283\n",
"8 199\n",
"5 48\n",
"12 30\n",
"10 14\n",
"2 2\n",
"16 1\n",
"Name: cyl, dtype: int64"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check value counts for 2008 cyl column again to confirm the change\n",
"df_08['cyl'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4.0 365\n",
"6.0 246\n",
"8.0 153\n",
"3.0 18\n",
"12.0 9\n",
"5.0 2\n",
"16.0 1\n",
"Name: cyl, dtype: int64"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_18['cyl'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**For the column 'cyl' in 2018 dataset is already only number and the data type is float**"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"# Convert floats to ints in the 2018 cyl column.\n",
"df_18['cyl']=df_18['cyl'].astype(int)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 3_2. Fix ` air_pollution_score` datatypes"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"515 7\n",
"646 9.5\n",
"134 6\n",
"368 6\n",
"893 7\n",
"603 6\n",
"193 6\n",
"586 6\n",
"757 6\n",
"221 6\n",
"Name: air_pollution_score, dtype: object"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_08['air_pollution_score'].sample(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Try using Pandas to_numeric or astype function to convert the 2008 air_pollution_score column to float -- this won't work"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"# df_08['air_pollution_score'] = df_08['air_pollution_score'].astype(float)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Figuring out the issue\n",
"> According to the error after running the above code, the air pollution score value in one of the rows is \"6/4\" "
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 582 \n",
" MERCEDES-BENZ C300 \n",
" 3.0 \n",
" 6 \n",
" Auto-L7 \n",
" 2WD \n",
" ethanol/gas \n",
" small car \n",
" 6/4 \n",
" 13/18 \n",
" 19/25 \n",
" 15/21 \n",
" 7/6 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"582 MERCEDES-BENZ C300 3.0 6 Auto-L7 2WD ethanol/gas small car \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"582 6/4 13/18 19/25 15/21 7/6 no "
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Find out the row(s) that contain '6/4'\n",
"df_08[df_08.air_pollution_score == '6/4']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**It's not just the air pollution score!**\n",
"\n",
"The mpg columns and greenhouse gas scores also seem to have the same problem - maybe that's why these were all saved as strings! According to [this link](http://www.fueleconomy.gov/feg/findacarhelp.shtml#airPollutionScore), which I found from the PDF documentation:\n",
"\n",
" \"If a vehicle can operate on more than one type of fuel, an estimate is provided for each fuel type.\"\n",
" \n",
"So all vehicles with more than one fuel type, or hybrids, like the one above (it uses ethanol AND gas) will have a string that holds two values - one for each. This is a little tricky, so I'm going to show you how to do it with the 2008 dataset, and then you'll try it with the 2018 dataset."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 582 \n",
" MERCEDES-BENZ C300 \n",
" 3.0 \n",
" 6 \n",
" Auto-L7 \n",
" 2WD \n",
" ethanol/gas \n",
" small car \n",
" 6/4 \n",
" 13/18 \n",
" 19/25 \n",
" 15/21 \n",
" 7/6 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"582 MERCEDES-BENZ C300 3.0 6 Auto-L7 2WD ethanol/gas small car \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"582 6/4 13/18 19/25 15/21 7/6 no "
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# First, let's get all the hybrids in 2008\n",
"hb_08 = df_08[df_08['fuel'].str.contains('/')]\n",
"hb_08.head()"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 52 \n",
" BMW 330e \n",
" 2.0 \n",
" 4 \n",
" SemiAuto-8 \n",
" 2WD \n",
" Gasoline/Electricity \n",
" small car \n",
" 3 \n",
" 28/66 \n",
" 34/78 \n",
" 30/71 \n",
" 10 \n",
" Yes \n",
" \n",
" \n",
" 78 \n",
" BMW 530e \n",
" 2.0 \n",
" 4 \n",
" SemiAuto-8 \n",
" 2WD \n",
" Gasoline/Electricity \n",
" small car \n",
" 7 \n",
" 27/70 \n",
" 31/75 \n",
" 29/72 \n",
" 10 \n",
" Elite \n",
" \n",
" \n",
" 79 \n",
" BMW 530e \n",
" 2.0 \n",
" 4 \n",
" SemiAuto-8 \n",
" 4WD \n",
" Gasoline/Electricity \n",
" small car \n",
" 7 \n",
" 27/66 \n",
" 31/68 \n",
" 28/67 \n",
" 10 \n",
" Elite \n",
" \n",
" \n",
" 92 \n",
" BMW 740e \n",
" 2.0 \n",
" 4 \n",
" SemiAuto-8 \n",
" 4WD \n",
" Gasoline/Electricity \n",
" large car \n",
" 3 \n",
" 25/62 \n",
" 29/68 \n",
" 27/64 \n",
" 9 \n",
" Yes \n",
" \n",
" \n",
" 189 \n",
" CHEVROLET Impala \n",
" 3.6 \n",
" 6 \n",
" SemiAuto-6 \n",
" 2WD \n",
" Ethanol/Gas \n",
" large car \n",
" 5 \n",
" 14/18 \n",
" 20/28 \n",
" 16/22 \n",
" 4 \n",
" No \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel \\\n",
"52 BMW 330e 2.0 4 SemiAuto-8 2WD Gasoline/Electricity \n",
"78 BMW 530e 2.0 4 SemiAuto-8 2WD Gasoline/Electricity \n",
"79 BMW 530e 2.0 4 SemiAuto-8 4WD Gasoline/Electricity \n",
"92 BMW 740e 2.0 4 SemiAuto-8 4WD Gasoline/Electricity \n",
"189 CHEVROLET Impala 3.6 6 SemiAuto-6 2WD Ethanol/Gas \n",
"\n",
" veh_class air_pollution_score city_mpg hwy_mpg cmb_mpg \\\n",
"52 small car 3 28/66 34/78 30/71 \n",
"78 small car 7 27/70 31/75 29/72 \n",
"79 small car 7 27/66 31/68 28/67 \n",
"92 large car 3 25/62 29/68 27/64 \n",
"189 large car 5 14/18 20/28 16/22 \n",
"\n",
" greenhouse_gas_score smartway \n",
"52 10 Yes \n",
"78 10 Elite \n",
"79 10 Elite \n",
"92 9 Yes \n",
"189 4 No "
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# hybrids in 2018\n",
"hb_18 = df_18[df_18['fuel'].str.contains('/')]\n",
"hb_18.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Strategy\n",
"> Take each hybrid row and split them into two new rows - one with values for the first fuel type (values before the \"/\"), and the other with values for the second fuel type (values after the \"/\"). "
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 582 \n",
" MERCEDES-BENZ C300 \n",
" 3.0 \n",
" 6 \n",
" Auto-L7 \n",
" 2WD \n",
" ethanol/gas \n",
" small car \n",
" 6/4 \n",
" 13/18 \n",
" 19/25 \n",
" 15/21 \n",
" 7/6 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"582 MERCEDES-BENZ C300 3.0 6 Auto-L7 2WD ethanol/gas small car \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"582 6/4 13/18 19/25 15/21 7/6 no "
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create two copies of the 2008 hybrids dataframe\n",
"df1 = hb_08.copy() # data on first fuel type of each hybrid vehicle\n",
"df2 = hb_08.copy() # data on second fuel type of each hybrid vehicle\n",
"\n",
"# Each one should look like this\n",
"df1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For this next part, we're going use Pandas' apply function. See the docs [here](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html)."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"# columns to split by \"/\"\n",
"split_columns = ['fuel', 'air_pollution_score', 'city_mpg', 'hwy_mpg', 'cmb_mpg', 'greenhouse_gas_score']\n",
"\n",
"# apply split function to each column of each dataframe copy\n",
"for c in split_columns:\n",
" df1[c] = df1[c].apply(lambda x: x.split(\"/\")[0])\n",
" df2[c] = df2[c].apply(lambda x: x.split(\"/\")[1])"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 582 \n",
" MERCEDES-BENZ C300 \n",
" 3.0 \n",
" 6 \n",
" Auto-L7 \n",
" 2WD \n",
" ethanol \n",
" small car \n",
" 6 \n",
" 13 \n",
" 19 \n",
" 15 \n",
" 7 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"582 MERCEDES-BENZ C300 3.0 6 Auto-L7 2WD ethanol small car \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"582 6 13 19 15 7 no "
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# this dataframe holds info for the FIRST fuel type of the hybrid, aka the values before the \"/\"s\n",
"df1"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 582 \n",
" MERCEDES-BENZ C300 \n",
" 3.0 \n",
" 6 \n",
" Auto-L7 \n",
" 2WD \n",
" gas \n",
" small car \n",
" 4 \n",
" 18 \n",
" 25 \n",
" 21 \n",
" 6 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"582 MERCEDES-BENZ C300 3.0 6 Auto-L7 2WD gas small car \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"582 4 18 25 21 6 no "
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# this dataframe holds info for the SECOND fuel type of the hybrid, aka the values after the \"/\"s\n",
"df2"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 582 \n",
" MERCEDES-BENZ C300 \n",
" 3.0 \n",
" 6 \n",
" Auto-L7 \n",
" 2WD \n",
" ethanol \n",
" small car \n",
" 6 \n",
" 13 \n",
" 19 \n",
" 15 \n",
" 7 \n",
" no \n",
" \n",
" \n",
" 582 \n",
" MERCEDES-BENZ C300 \n",
" 3.0 \n",
" 6 \n",
" Auto-L7 \n",
" 2WD \n",
" gas \n",
" small car \n",
" 4 \n",
" 18 \n",
" 25 \n",
" 21 \n",
" 6 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"582 MERCEDES-BENZ C300 3.0 6 Auto-L7 2WD ethanol small car \n",
"582 MERCEDES-BENZ C300 3.0 6 Auto-L7 2WD gas small car \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"582 6 13 19 15 7 no \n",
"582 4 18 25 21 6 no "
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# combine dataframes to add to the original dataframe\n",
"new_rows = df1.append(df2)\n",
"\n",
"# now we have separate rows for each fuel type of each vehicle!\n",
"new_rows"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"# drop the original hybrid rows\n",
"df_08.drop(hb_08.index, inplace=True)\n",
"\n",
"# add in our newly separated rows\n",
"df_08 = df_08.append(new_rows, ignore_index=True)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [model, displ, cyl, trans, drive, fuel, veh_class, air_pollution_score, city_mpg, hwy_mpg, cmb_mpg, greenhouse_gas_score, smartway]\n",
"Index: []"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check that all the original hybrid rows with \"/\"s are gone\n",
"df_08[df_08['fuel'].str.contains('/')]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(987, 13)"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check the number of rows after changing\n",
"df_08.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Repeat this process for the 2018 dataset***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Split values for `fuel`, `city_mpg`, `hwy_mpg`, `cmb_mpg`**\n",
"\n",
"We don't need to split for `air_pollution_score` or `greenhouse_gas_score` here because these columns are already ints in the 2018 dataset."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [model, displ, cyl, trans, drive, fuel, veh_class, air_pollution_score, city_mpg, hwy_mpg, cmb_mpg, greenhouse_gas_score, smartway]\n",
"Index: []"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create two copies of the 2018 hybrids dataframe, hb_18\n",
"df1 = hb_18.copy()\n",
"df2 = hb_18.copy()\n",
"\n",
"# list of columns to split\n",
"split_columns = ['fuel', 'city_mpg', 'hwy_mpg', 'cmb_mpg']\n",
"\n",
"# apply split function to each column of each dataframe copy\n",
"for c in split_columns:\n",
" df1[c] = df1[c].apply(lambda x: x.split('/')[0])\n",
" df2[c] = df2[c].apply(lambda x: x.split('/')[1])\n",
"\n",
"# append the two dataframes\n",
"new_rows = df1.append(df2)\n",
"\n",
"# drop each hybrid row from the original 2018 dataframe\n",
"# do this by using Pandas drop function with hb_18's index (the rows with '/')\n",
"df_18.drop(hb_18.index, inplace=True)\n",
"\n",
"# append new_rows to df_18\n",
"df_18 = df_18.append(new_rows)\n",
"\n",
"# check that they're gone\n",
"df_18[df_18['fuel'].str.contains('/')]"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(832, 13)"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check the number of rows after changing\n",
"df_18.shape"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"# convert string to float for 2008 air pollution column\n",
"df_08['air_pollution_score']=df_08['air_pollution_score'].astype(float)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"# convert int to float for 2018 air pollution column\n",
"df_18['air_pollution_score']=df_18['air_pollution_score'].astype(float)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 3_3. Fix `city_mpg`, `hwy_mpg`, `cmb_mpg` datatypes"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"# convert mpg columns to floats\n",
"mpg_columns = ['city_mpg', 'hwy_mpg', 'cmb_mpg']\n",
"for c in mpg_columns:\n",
" df_08[c] = df_08[c].astype(float)\n",
" df_18[c] = df_18[c].astype(float)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Step 3_4 Fix `greenhouse_gas_score` datatypes"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"# Convert strings to ints in the 2008 column.\n",
"df_08['greenhouse_gas_score']=df_08['greenhouse_gas_score'].astype(int)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# double check if the two dataset have the same datatype\n",
"(df_08.dtypes == df_18.dtypes).all()"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"# Save your final CLEAN datasets as new files\n",
"df_08.to_csv('clean_08.csv', index=False)\n",
"df_18.to_csv('clean_18.csv', index=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" \n",
"## Exploratory Data Analysis"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"# import library for visualization\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"# Load cleaned data\n",
"df_08=pd.read_csv('clean_08.csv')\n",
"df_18=pd.read_csv('clean_18.csv')"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA MDX \n",
" 3.7 \n",
" 6 \n",
" Auto-S5 \n",
" 4WD \n",
" Gasoline \n",
" SUV \n",
" 7.0 \n",
" 15.0 \n",
" 20.0 \n",
" 17.0 \n",
" 4 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"0 ACURA MDX 3.7 6 Auto-S5 4WD Gasoline SUV \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score \\\n",
"0 7.0 15.0 20.0 17.0 4 \n",
"\n",
" smartway \n",
"0 no "
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# view the data\n",
"df_08.head(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Q1: Compare the distributions of greenhouse gas score in 2008 and 2018."
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_08['greenhouse_gas_score'].hist()"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAADmZJREFUeJzt3W9sXfV9x/H3d6TbaLIVUIqVJtHcSREra1SgFmJDmpwxrUCqhT1gAjEaGJv3gDI6RZrSPqHSVCkPRrdV6pCywkhVRoaAiQiiriirhSatrAlFBJohIuqBIUvK6Cim1Tp33z3wiWJHTvzn/jnX37xfknXP+fl3z+97f/L95Pjne04iM5Ek1fUzbRcgSeotg16SijPoJak4g16SijPoJak4g16SijPoJak4g16SijPoJam4VW0XALB27docHh5uu4yOvPfee6xevbrtMgaG8zGX83GKczFXJ/Nx6NChtzLzgwv1G4igHx4e5uDBg22X0ZHx8XFGR0fbLmNgOB9zOR+nOBdzdTIfEfEfi+nn0o0kFWfQS1JxBr0kFWfQS1JxBr0kFWfQS1JxBr0kFWfQS1JxBr0kFTcQV8ZKCxne+VRrY0/s2tra2FI3eEYvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJUnEEvScUZ9JJU3IJBHxEbI+KbEXEkIl6KiLub9osi4umIeKV5vLBpj4j4UkQcjYgXIuKKXr8ISdKZLeaMfhrYkZkfAa4C7oyIS4GdwIHM3AQcaPYBrgM2NV9jwH1dr1qStGgLBn1mHsvM55rtd4EjwHpgG7Cn6bYHuKHZ3gZ8NWd8C7ggItZ1vXJJ0qIsaY0+IoaBy4FngaHMPAYz/xgAFzfd1gOvz3raZNMmSWrBqsV2jIg1wGPAZzLzhxFxxq7ztOU8xxtjZmmHoaEhxsfHF1vKQJqamlrxr6Gbuj0fOzZPd+1YS9WN1+HPxynOxVz9mI9FBX1EvI+ZkH8oMx9vmo9HxLrMPNYszZxo2ieBjbOevgF48/RjZuZuYDfAyMhIjo6OLu8VDIjx8XFW+mvopm7Px207n+rasZZq4pbRjo/hz8cpzsVc/ZiPxXzqJoD7gSOZ+cVZ39oHbG+2twNPzGr/VPPpm6uAd04u8UiS+m8xZ/RXA7cChyPi+abtc8Au4JGIuAN4Dbix+d5+4HrgKPAj4PauVixJWpIFgz4z/4X5190BrpmnfwJ3dliXJKlLvDJWkooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekopb1XYBWrrhnU+1NvbErq2tjS1peTyjl6TiPKPXkiz2t4kdm6e5rcXfPCSd4hm9JBVn0EtScQa9JBVn0EtScQa9JBVn0EtScQa9JBVn0EtScQsGfUQ8EBEnIuLFWW2fj4g3IuL55uv6Wd/7bEQcjYiXI+ITvSpckrQ4izmjfxC4dp72v8zMy5qv/QARcSlwE/CrzXP+JiLO61axkqSlWzDoM/MZ4O1FHm8bsDcz/yczvwccBa7soD5JUoc6WaP/dES80CztXNi0rQden9VnsmmTJLUkMnPhThHDwJOZ+dFmfwh4C0jgz4F1mfkHEfFl4F8z82tNv/uB/Zn52DzHHAPGAIaGhj6+d+/errygtkxNTbFmzZq+jHX4jXf6Mk4nhs6H4z9uu4ru2Lz+Ax0fo58/H4POuZirk/nYsmXLocwcWajfsu5emZnHT25HxN8CTza7k8DGWV03AG+e4Ri7gd0AIyMjOTo6upxSBsb4+Dj9eg0r4a6QOzZPc+/hGjdHnbhltONj9PPnY9A5F3P1Yz6WtXQTEetm7f4ucPITOfuAmyLi5yLiw8Am4N86K1GS1IkFT7ki4mFgFFgbEZPAPcBoRFzGzNLNBPDHAJn5UkQ8AnwXmAbuzMyf9qZ0SdJiLBj0mXnzPM33n6X/F4AvdFKUJKl7vDJWkooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekooz6CWpOINekopb1XYB0qAb3vlUx8fYsXma25Z4nIldWzseVwLP6CWpPINekooz6CWpOINekopbMOgj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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_18['greenhouse_gas_score'].hist()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analysis\n",
">- Green gas score is getting lower in 2018"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Q2: How has the distribution of combined mpg changed from 2008 to 2018?"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_08['cmb_mpg'].hist()"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_18['cmb_mpg'].hist()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analysis\n",
"> combined mpg (mile per gallon) is becoming less in 2018"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Q3: Describe the correlation between displacement and combined mpg"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" displ \n",
" cmb_mpg \n",
" \n",
" \n",
" \n",
" \n",
" displ \n",
" 1.000000 \n",
" -0.818799 \n",
" \n",
" \n",
" cmb_mpg \n",
" -0.818799 \n",
" 1.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" displ cmb_mpg\n",
"displ 1.000000 -0.818799\n",
"cmb_mpg -0.818799 1.000000"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_08[['displ','cmb_mpg']].corr()"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Correlation between displacement and combined mpg for 2008')"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_08.plot(x='cmb_mpg', y='displ', kind='scatter')\n",
"plt.title(\"Correlation between displacement and combined mpg for 2008\")"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" displ \n",
" cmb_mpg \n",
" \n",
" \n",
" \n",
" \n",
" displ \n",
" 1.00000 \n",
" -0.57488 \n",
" \n",
" \n",
" cmb_mpg \n",
" -0.57488 \n",
" 1.00000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" displ cmb_mpg\n",
"displ 1.00000 -0.57488\n",
"cmb_mpg -0.57488 1.00000"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_18[['displ','cmb_mpg']].corr()"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Correlation between displacement and combined mpg for 2018')"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_18.plot(x='cmb_mpg', y='displ', kind='scatter')\n",
"plt.title(\"Correlation between displacement and combined mpg for 2018\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analysis\n",
">- For both 2008 and 2018, the two variables, displacement and combined mpg are negitively correlated\n",
">- The correlation rate is less in 2018 (-0.57488), compared with 2008 (-0.818799)\n",
">- We can conclude that bigger the size of the engine, the less cmb_mpg (miles per gallon) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Q4: Describe the correlation between greenhouse gas score and combined mpg."
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" greenhouse_gas_score \n",
" cmb_mpg \n",
" \n",
" \n",
" \n",
" \n",
" greenhouse_gas_score \n",
" 1.000000 \n",
" 0.947607 \n",
" \n",
" \n",
" cmb_mpg \n",
" 0.947607 \n",
" 1.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" greenhouse_gas_score cmb_mpg\n",
"greenhouse_gas_score 1.000000 0.947607\n",
"cmb_mpg 0.947607 1.000000"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_08[['greenhouse_gas_score','cmb_mpg']].corr()"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_08.plot(x='cmb_mpg', y='greenhouse_gas_score', kind='scatter')"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" greenhouse_gas_score \n",
" cmb_mpg \n",
" \n",
" \n",
" \n",
" \n",
" greenhouse_gas_score \n",
" 1.000000 \n",
" 0.814982 \n",
" \n",
" \n",
" cmb_mpg \n",
" 0.814982 \n",
" 1.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" greenhouse_gas_score cmb_mpg\n",
"greenhouse_gas_score 1.000000 0.814982\n",
"cmb_mpg 0.814982 1.000000"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_18[['greenhouse_gas_score','cmb_mpg']].corr()"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_18.plot(x='cmb_mpg', y='greenhouse_gas_score', kind='scatter')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analysis \n",
"> Positive correlation. The higher the green score, the higher the cmb_mpg "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Q5: Are more unique models using alternative sources of fuel? By how much?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First look at what the sources of fuel are and which ones are alternative sources."
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Gasoline 984\n",
"gas 1\n",
"CNG 1\n",
"ethanol 1\n",
"Name: fuel, dtype: int64"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_08.fuel.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Gasoline 749\n",
"Ethanol 26\n",
"Gas 26\n",
"Diesel 19\n",
"Electricity 12\n",
"Name: fuel, dtype: int64"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_18.fuel.value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Looks like the alternative sources of fuel available in 2008 are CNG and ethanol, and those in 2018 are ethanol and electricity. "
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# how many unique models used alternative sources of fuel in 2008\n",
"alt_08 = df_08.query('fuel in [\"CNG\", \"ethanol\"]').model.nunique()\n",
"alt_08"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"26"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# how many unique models used alternative sources of fuel in 2018\n",
"alt_18 = df_18.query('fuel in [\"Ethanol\", \"Electricity\"]').model.nunique()\n",
"alt_18"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since 2008, the number of unique models using alternative sources of fuel increased by 24. We can also look at proportions."
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(377, 357)"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# total unique models each year\n",
"total_08 = df_08.model.nunique()\n",
"total_18 = df_18.model.nunique()\n",
"total_08, total_18"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.005305039787798408, 0.07282913165266107)"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"prop_08 = alt_08/total_08\n",
"prop_18 = alt_18/total_18\n",
"prop_08, prop_18"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# visualize the proportion of Unique Models in using alternative sources of fuel in 2008 and 2018\n",
"plt.bar([\"2008\", \"2018\"], [prop_08, prop_18])\n",
"plt.title(\"Proportion of Unique Models Using Alternative Fuels\")\n",
"plt.xlabel(\"Year\")\n",
"plt.ylabel(\"Proportion of Unique Models\");"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 388 \n",
" HONDA Civic \n",
" 1.8 \n",
" 4 \n",
" Auto-L5 \n",
" 2WD \n",
" CNG \n",
" small car \n",
" 9.5 \n",
" 24.0 \n",
" 36.0 \n",
" 28.0 \n",
" 9 \n",
" yes \n",
" \n",
" \n",
" 985 \n",
" MERCEDES-BENZ C300 \n",
" 3.0 \n",
" 6 \n",
" Auto-L7 \n",
" 2WD \n",
" ethanol \n",
" small car \n",
" 6.0 \n",
" 13.0 \n",
" 19.0 \n",
" 15.0 \n",
" 7 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"388 HONDA Civic 1.8 4 Auto-L5 2WD CNG small car \n",
"985 MERCEDES-BENZ C300 3.0 6 Auto-L7 2WD ethanol small car \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score \\\n",
"388 9.5 24.0 36.0 28.0 9 \n",
"985 6.0 13.0 19.0 15.0 7 \n",
"\n",
" smartway \n",
"388 yes \n",
"985 no "
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# subset the dataframe with only the model using alternative fuel, CNG and ethanol for 2008\n",
"df_alt_08=df_08.query('fuel in [\"CNG\", \"ethanol\"]')\n",
"df_alt_08"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(38, 13)\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model \n",
" displ \n",
" cyl \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 760 \n",
" CHEVROLET Impala \n",
" 3.6 \n",
" 6 \n",
" SemiAuto-6 \n",
" 2WD \n",
" Ethanol \n",
" large car \n",
" 5.0 \n",
" 14.0 \n",
" 20.0 \n",
" 16.0 \n",
" 4 \n",
" No \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model displ cyl trans drive fuel veh_class \\\n",
"760 CHEVROLET Impala 3.6 6 SemiAuto-6 2WD Ethanol large car \n",
"\n",
" air_pollution_score city_mpg hwy_mpg cmb_mpg greenhouse_gas_score \\\n",
"760 5.0 14.0 20.0 16.0 4 \n",
"\n",
" smartway \n",
"760 No "
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# subset the dataframe with only the model using alternative fuel, Ethanol and Electricity for 2018\n",
"df_alt_18=df_18.query('fuel in [\"Ethanol\", \"Electricity\"]')\n",
"print(df_alt_18.shape)\n",
"df_alt_18.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"displ 2.40\n",
"cyl 5.00\n",
"air_pollution_score 7.75\n",
"city_mpg 18.50\n",
"hwy_mpg 27.50\n",
"cmb_mpg 21.50\n",
"greenhouse_gas_score 8.00\n",
"dtype: float64"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_alt_08.mean()"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"([0, 1, 2, 3, 4, 5, 6], )"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# plotting the mean value for 2008 alternative fuel\n",
"plt.bar(x=df_alt_08.mean().index, height=df_alt_08.mean(),width=0.5)\n",
"plt.title(\"Alternative Fuels in 2008\")\n",
"plt.xticks(rotation =45)"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"displ 3.536842\n",
"cyl 5.763158\n",
"air_pollution_score 4.157895\n",
"city_mpg 32.447368\n",
"hwy_mpg 35.736842\n",
"cmb_mpg 33.631579\n",
"greenhouse_gas_score 5.552632\n",
"dtype: float64"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# calculate the mean values\n",
"df_alt_18.mean()"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"([0, 1, 2, 3, 4, 5, 6], )"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# plotting the mean value for 2018 alternative fuel\n",
"plt.bar(x=df_alt_18.mean().index, height=df_alt_18.mean(),width=0.5,color='g')\n",
"plt.title(\"Alternative Fuels in 2018\")\n",
"plt.xticks(rotation =45)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Q6: How much have vehicle classes improved in fuel economy? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look at the average fuel economy for each vehicle class for both years."
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"veh_class\n",
"SUV 18.471429\n",
"large car 18.509091\n",
"midsize car 21.601449\n",
"minivan 19.117647\n",
"pickup 16.277108\n",
"small car 21.105105\n",
"station wagon 22.366667\n",
"van 14.952381\n",
"Name: cmb_mpg, dtype: float64"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"veh_08 = df_08.groupby('veh_class').cmb_mpg.mean()\n",
"veh_08"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"veh_class\n",
"large car 23.409091\n",
"midsize car 27.884058\n",
"minivan 20.800000\n",
"pickup 18.589744\n",
"small SUV 24.074074\n",
"small car 25.421053\n",
"special purpose 18.500000\n",
"standard SUV 18.197674\n",
"station wagon 27.529412\n",
"Name: cmb_mpg, dtype: float64"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"veh_18 = df_18.groupby('veh_class').cmb_mpg.mean()\n",
"veh_18"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"veh_class\n",
"SUV NaN\n",
"large car 4.900000\n",
"midsize car 6.282609\n",
"minivan 1.682353\n",
"pickup 2.312635\n",
"small SUV NaN\n",
"small car 4.315948\n",
"special purpose NaN\n",
"standard SUV NaN\n",
"station wagon 5.162745\n",
"van NaN\n",
"Name: cmb_mpg, dtype: float64"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# how much they've increased by for each vehicle class\n",
"inc = veh_18 - veh_08\n",
"inc"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# only plot the classes that exist in both years\n",
"inc.dropna(inplace=True)\n",
"plt.subplots(figsize=(8, 5))\n",
"plt.bar(inc.index, inc)\n",
"plt.title('Improvements in Fuel Economy from 2008 to 2018 by Vehicle Class')\n",
"plt.xlabel('Vehicle Class')\n",
"plt.ylabel('Increase in Average Combined MPG');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Q7: What are the characteristics of SmartWay vehicles? Have they changed over time?"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"no 607\n",
"yes 380\n",
"Name: smartway, dtype: int64"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# smartway labels for 2008\n",
"df_08.smartway.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"# get all smartway vehicles in 2008\n",
"smart_08 = df_08.query('smartway == \"yes\"')"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" displ \n",
" cyl \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 380.000000 \n",
" 380.000000 \n",
" 380.000000 \n",
" 380.000000 \n",
" 380.000000 \n",
" 380.000000 \n",
" 380.000000 \n",
" \n",
" \n",
" mean \n",
" 2.602895 \n",
" 4.826316 \n",
" 7.365789 \n",
" 20.984211 \n",
" 28.413158 \n",
" 23.736842 \n",
" 6.868421 \n",
" \n",
" \n",
" std \n",
" 0.623436 \n",
" 1.002025 \n",
" 1.148195 \n",
" 3.442672 \n",
" 3.075194 \n",
" 3.060379 \n",
" 0.827338 \n",
" \n",
" \n",
" min \n",
" 1.300000 \n",
" 4.000000 \n",
" 6.000000 \n",
" 17.000000 \n",
" 22.000000 \n",
" 20.000000 \n",
" 6.000000 \n",
" \n",
" \n",
" 25% \n",
" 2.275000 \n",
" 4.000000 \n",
" 7.000000 \n",
" 19.000000 \n",
" 26.000000 \n",
" 22.000000 \n",
" 6.000000 \n",
" \n",
" \n",
" 50% \n",
" 2.400000 \n",
" 4.000000 \n",
" 7.000000 \n",
" 20.000000 \n",
" 28.000000 \n",
" 23.000000 \n",
" 7.000000 \n",
" \n",
" \n",
" 75% \n",
" 3.000000 \n",
" 6.000000 \n",
" 7.000000 \n",
" 22.000000 \n",
" 30.000000 \n",
" 25.000000 \n",
" 7.000000 \n",
" \n",
" \n",
" max \n",
" 5.000000 \n",
" 8.000000 \n",
" 9.500000 \n",
" 48.000000 \n",
" 45.000000 \n",
" 46.000000 \n",
" 10.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" displ cyl air_pollution_score city_mpg hwy_mpg \\\n",
"count 380.000000 380.000000 380.000000 380.000000 380.000000 \n",
"mean 2.602895 4.826316 7.365789 20.984211 28.413158 \n",
"std 0.623436 1.002025 1.148195 3.442672 3.075194 \n",
"min 1.300000 4.000000 6.000000 17.000000 22.000000 \n",
"25% 2.275000 4.000000 7.000000 19.000000 26.000000 \n",
"50% 2.400000 4.000000 7.000000 20.000000 28.000000 \n",
"75% 3.000000 6.000000 7.000000 22.000000 30.000000 \n",
"max 5.000000 8.000000 9.500000 48.000000 45.000000 \n",
"\n",
" cmb_mpg greenhouse_gas_score \n",
"count 380.000000 380.000000 \n",
"mean 23.736842 6.868421 \n",
"std 3.060379 0.827338 \n",
"min 20.000000 6.000000 \n",
"25% 22.000000 6.000000 \n",
"50% 23.000000 7.000000 \n",
"75% 25.000000 7.000000 \n",
"max 46.000000 10.000000 "
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# explore smartway vehicles in 2008\n",
"smart_08.describe()"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"No 724\n",
"Yes 91\n",
"Elite 17\n",
"Name: smartway, dtype: int64"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# smartway labels for 2018\n",
"df_18.smartway.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [],
"source": [
"# get all smartway vehicles in 2018\n",
"smart_18 = df_18.query('smartway in [\"Yes\", \"Elite\"]')"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" displ \n",
" cyl \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 108.000000 \n",
" 108.000000 \n",
" 108.000000 \n",
" 108.000000 \n",
" 108.000000 \n",
" 108.000000 \n",
" 108.000000 \n",
" \n",
" \n",
" mean \n",
" 1.787963 \n",
" 3.935185 \n",
" 5.212963 \n",
" 34.907407 \n",
" 41.472222 \n",
" 37.361111 \n",
" 7.925926 \n",
" \n",
" \n",
" std \n",
" 0.408031 \n",
" 0.416329 \n",
" 1.798498 \n",
" 16.431982 \n",
" 13.095236 \n",
" 14.848429 \n",
" 1.197378 \n",
" \n",
" \n",
" min \n",
" 1.200000 \n",
" 3.000000 \n",
" 3.000000 \n",
" 25.000000 \n",
" 27.000000 \n",
" 26.000000 \n",
" 7.000000 \n",
" \n",
" \n",
" 25% \n",
" 1.500000 \n",
" 4.000000 \n",
" 3.000000 \n",
" 28.000000 \n",
" 36.000000 \n",
" 31.000000 \n",
" 7.000000 \n",
" \n",
" \n",
" 50% \n",
" 1.700000 \n",
" 4.000000 \n",
" 5.500000 \n",
" 28.500000 \n",
" 37.000000 \n",
" 32.000000 \n",
" 7.000000 \n",
" \n",
" \n",
" 75% \n",
" 2.000000 \n",
" 4.000000 \n",
" 7.000000 \n",
" 31.250000 \n",
" 40.250000 \n",
" 35.000000 \n",
" 9.000000 \n",
" \n",
" \n",
" max \n",
" 3.500000 \n",
" 6.000000 \n",
" 7.000000 \n",
" 113.000000 \n",
" 99.000000 \n",
" 106.000000 \n",
" 10.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" displ cyl air_pollution_score city_mpg hwy_mpg \\\n",
"count 108.000000 108.000000 108.000000 108.000000 108.000000 \n",
"mean 1.787963 3.935185 5.212963 34.907407 41.472222 \n",
"std 0.408031 0.416329 1.798498 16.431982 13.095236 \n",
"min 1.200000 3.000000 3.000000 25.000000 27.000000 \n",
"25% 1.500000 4.000000 3.000000 28.000000 36.000000 \n",
"50% 1.700000 4.000000 5.500000 28.500000 37.000000 \n",
"75% 2.000000 4.000000 7.000000 31.250000 40.250000 \n",
"max 3.500000 6.000000 7.000000 113.000000 99.000000 \n",
"\n",
" cmb_mpg greenhouse_gas_score \n",
"count 108.000000 108.000000 \n",
"mean 37.361111 7.925926 \n",
"std 14.848429 1.197378 \n",
"min 26.000000 7.000000 \n",
"25% 31.000000 7.000000 \n",
"50% 32.000000 7.000000 \n",
"75% 35.000000 9.000000 \n",
"max 106.000000 10.000000 "
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smart_18.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analysis\n",
">- In 2018, there are Elite as a new type of SmartWay drive, and compared with 2008, city_mpg, hwy_mpg, cmb_mpg and greenhouse_gas_score all increased in 2018, while air_pollution_score decreased, and vehicles with SmartWay in 2018 have smaller size of engine and smaller number of cyliners, we can conclude that SmartWay helps fuel efficiency and the technology has improved over time "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Q8: For all of the models that were produced in 2008 that are still being produced now, how much has the mpg improved and which vehicle improved the most?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Q8_1. Create combined dataset"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model_2008 \n",
" displ_2008 \n",
" cyl_2008 \n",
" trans_2008 \n",
" drive_2008 \n",
" fuel_2008 \n",
" veh_class_2008 \n",
" air_pollut_2008 \n",
" city_mpg_2008 \n",
" hwy_mpg_2008 \n",
" cmb_mpg_2008 \n",
" greenhouse_2008 \n",
" smartway_2008 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA MDX \n",
" 3.7 \n",
" 6 \n",
" Auto-S5 \n",
" 4WD \n",
" Gasoline \n",
" SUV \n",
" 7.0 \n",
" 15.0 \n",
" 20.0 \n",
" 17.0 \n",
" 4 \n",
" no \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" model_2008 displ_2008 cyl_2008 trans_2008 drive_2008 fuel_2008 \\\n",
"0 ACURA MDX 3.7 6 Auto-S5 4WD Gasoline \n",
"\n",
" veh_class_2008 air_pollut_2008 city_mpg_2008 hwy_mpg_2008 cmb_mpg_2008 \\\n",
"0 SUV 7.0 15.0 20.0 17.0 \n",
"\n",
" greenhouse_2008 smartway_2008 \n",
"0 4 no "
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# rename 2008 columns\n",
"df_08.rename(columns=lambda x: x[:10] + \"_2008\", inplace=True)\n",
"\n",
"# view to check names\n",
"df_08.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" model_2008 \n",
" displ_2008 \n",
" cyl_2008 \n",
" trans_2008 \n",
" drive_2008 \n",
" fuel_2008 \n",
" veh_class_2008 \n",
" air_pollut_2008 \n",
" city_mpg_2008 \n",
" hwy_mpg_2008 \n",
" ... \n",
" trans \n",
" drive \n",
" fuel \n",
" veh_class \n",
" air_pollution_score \n",
" city_mpg \n",
" hwy_mpg \n",
" cmb_mpg \n",
" greenhouse_gas_score \n",
" smartway \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" ACURA RDX \n",
" 2.3 \n",
" 4 \n",
" Auto-S5 \n",
" 4WD \n",
" Gasoline \n",
" SUV \n",
" 7.0 \n",
" 17.0 \n",
" 22.0 \n",
" ... \n",
" SemiAuto-6 \n",
" 2WD \n",
" Gasoline \n",
" small SUV \n",
" 3.0 \n",
" 20.0 \n",
" 28.0 \n",
" 23.0 \n",
" 5 \n",
" No \n",
" \n",
" \n",
" 1 \n",
" ACURA RDX \n",
" 2.3 \n",
" 4 \n",
" Auto-S5 \n",
" 4WD \n",
" Gasoline \n",
" SUV \n",
" 7.0 \n",
" 17.0 \n",
" 22.0 \n",
" ... \n",
" SemiAuto-6 \n",
" 4WD \n",
" Gasoline \n",
" small SUV \n",
" 3.0 \n",
" 19.0 \n",
" 27.0 \n",
" 22.0 \n",
" 4 \n",
" No \n",
" \n",
" \n",
" 2 \n",
" AUDI A3 \n",
" 2.0 \n",
" 4 \n",
" Man-6 \n",
" 2WD \n",
" Gasoline \n",
" station wagon \n",
" 7.0 \n",
" 21.0 \n",
" 29.0 \n",
" ... \n",
" AMS-6 \n",
" 4WD \n",
" Gasoline \n",
" small car \n",
" 7.0 \n",
" 24.0 \n",
" 31.0 \n",
" 27.0 \n",
" 6 \n",
" No \n",
" \n",
" \n",
" 3 \n",
" AUDI A3 \n",
" 2.0 \n",
" 4 \n",
" Man-6 \n",
" 2WD \n",
" Gasoline \n",
" station wagon \n",
" 7.0 \n",
" 21.0 \n",
" 29.0 \n",
" ... \n",
" AMS-7 \n",
" 2WD \n",
" Gasoline \n",
" small car \n",
" 7.0 \n",
" 26.0 \n",
" 35.0 \n",
" 29.0 \n",
" 6 \n",
" No \n",
" \n",
" \n",
" 4 \n",
" AUDI A3 \n",
" 2.0 \n",
" 4 \n",
" Auto-S6 \n",
" 2WD \n",
" Gasoline \n",
" station wagon \n",
" 7.0 \n",
" 22.0 \n",
" 29.0 \n",
" ... \n",
" AMS-6 \n",
" 4WD \n",
" Gasoline \n",
" small car \n",
" 7.0 \n",
" 24.0 \n",
" 31.0 \n",
" 27.0 \n",
" 6 \n",
" No \n",
" \n",
" \n",
"
\n",
"
5 rows × 26 columns
\n",
"
"
],
"text/plain": [
" model_2008 displ_2008 cyl_2008 trans_2008 drive_2008 fuel_2008 \\\n",
"0 ACURA RDX 2.3 4 Auto-S5 4WD Gasoline \n",
"1 ACURA RDX 2.3 4 Auto-S5 4WD Gasoline \n",
"2 AUDI A3 2.0 4 Man-6 2WD Gasoline \n",
"3 AUDI A3 2.0 4 Man-6 2WD Gasoline \n",
"4 AUDI A3 2.0 4 Auto-S6 2WD Gasoline \n",
"\n",
" veh_class_2008 air_pollut_2008 city_mpg_2008 hwy_mpg_2008 ... \\\n",
"0 SUV 7.0 17.0 22.0 ... \n",
"1 SUV 7.0 17.0 22.0 ... \n",
"2 station wagon 7.0 21.0 29.0 ... \n",
"3 station wagon 7.0 21.0 29.0 ... \n",
"4 station wagon 7.0 22.0 29.0 ... \n",
"\n",
" trans drive fuel veh_class air_pollution_score city_mpg \\\n",
"0 SemiAuto-6 2WD Gasoline small SUV 3.0 20.0 \n",
"1 SemiAuto-6 4WD Gasoline small SUV 3.0 19.0 \n",
"2 AMS-6 4WD Gasoline small car 7.0 24.0 \n",
"3 AMS-7 2WD Gasoline small car 7.0 26.0 \n",
"4 AMS-6 4WD Gasoline small car 7.0 24.0 \n",
"\n",
" hwy_mpg cmb_mpg greenhouse_gas_score smartway \n",
"0 28.0 23.0 5 No \n",
"1 27.0 22.0 4 No \n",
"2 31.0 27.0 6 No \n",
"3 35.0 29.0 6 No \n",
"4 31.0 27.0 6 No \n",
"\n",
"[5 rows x 26 columns]"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# merge datasets\n",
"df_combined = df_08.merge(df_18, left_on='model_2008', right_on='model', how='inner')\n",
"\n",
"# view to check merge\n",
"df_combined.head()"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['model_2008', 'displ_2008', 'cyl_2008', 'trans_2008', 'drive_2008',\n",
" 'fuel_2008', 'veh_class_2008', 'air_pollut_2008', 'city_mpg_2008',\n",
" 'hwy_mpg_2008', 'cmb_mpg_2008', 'greenhouse_2008', 'smartway_2008',\n",
" 'model', 'displ', 'cyl', 'trans', 'drive', 'fuel', 'veh_class',\n",
" 'air_pollution_score', 'city_mpg', 'hwy_mpg', 'cmb_mpg',\n",
" 'greenhouse_gas_score', 'smartway'],\n",
" dtype='object')"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_combined.columns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Q8_2. Create a new dataframe, `model_mpg`, that contain the mean combined mpg values in 2008 and 2018 for each unique model\n",
"\n",
"To do this, group by `model` and find the mean `cmb_mpg_2008` and mean `cmb_mpg` for each."
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [],
"source": [
"df = df_combined"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" cmb_mpg_2008 \n",
" cmb_mpg \n",
" \n",
" \n",
" model \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ACURA RDX \n",
" 19.000000 \n",
" 22.5 \n",
" \n",
" \n",
" AUDI A3 \n",
" 23.333333 \n",
" 28.0 \n",
" \n",
" \n",
" AUDI A4 \n",
" 21.000000 \n",
" 27.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" cmb_mpg_2008 cmb_mpg\n",
"model \n",
"ACURA RDX 19.000000 22.5\n",
"AUDI A3 23.333333 28.0\n",
"AUDI A4 21.000000 27.0"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_mpg = df.groupby('model').mean()[['cmb_mpg_2008', 'cmb_mpg']]\n",
"model_mpg.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Q8_3. Create a new column, `mpg_change`, with the change in mpg\n",
"Subtract the mean mpg in 2008 from that in 2018 to get the change in mpg"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(72, 3)\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" cmb_mpg_2008 \n",
" cmb_mpg \n",
" mpg_change \n",
" \n",
" \n",
" model \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ACURA RDX \n",
" 19.000000 \n",
" 22.5 \n",
" 3.500000 \n",
" \n",
" \n",
" AUDI A3 \n",
" 23.333333 \n",
" 28.0 \n",
" 4.666667 \n",
" \n",
" \n",
" AUDI A4 \n",
" 21.000000 \n",
" 27.0 \n",
" 6.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" cmb_mpg_2008 cmb_mpg mpg_change\n",
"model \n",
"ACURA RDX 19.000000 22.5 3.500000\n",
"AUDI A3 23.333333 28.0 4.666667\n",
"AUDI A4 21.000000 27.0 6.000000"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_mpg['mpg_change'] = model_mpg['cmb_mpg'] - model_mpg['cmb_mpg_2008']\n",
"print(model_mpg.shape)\n",
"model_mpg.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Q8_4. Find the vehicle that improved the most\n",
"Find the max mpg change, and then use query or indexing to see what model it is!"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"16.53333333333334"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"max_change = model_mpg['mpg_change'].max()\n",
"max_change"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" cmb_mpg_2008 \n",
" cmb_mpg \n",
" mpg_change \n",
" \n",
" \n",
" model \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" VOLVO XC 90 \n",
" 15.666667 \n",
" 32.2 \n",
" 16.533333 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" cmb_mpg_2008 cmb_mpg mpg_change\n",
"model \n",
"VOLVO XC 90 15.666667 32.2 16.533333"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_mpg[model_mpg['mpg_change'] == max_change]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pandas also has a useful [`idxmax`](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.idxmax.html) function you can use to find the index of the row containing a column's maximum value!"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'VOLVO XC 90'"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"idx = model_mpg.mpg_change.idxmax()\n",
"idx"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"cmb_mpg_2008 15.666667\n",
"cmb_mpg 32.200000\n",
"mpg_change 16.533333\n",
"Name: VOLVO XC 90, dtype: float64"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_mpg.loc[idx]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analysis:\n",
">- VOLVO XC 90 is the model that has improved the most, with maximus increase in combine mile per gallon of 16.53."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" \n",
"## Conclusions\n",
"\n",
"This project analyzes two dataset, 2008 and 2018. Data cleaning is a big portion in this project as the dataset we downloaded from EPA (Environmental Protection Agency) website is not cleaned, and many columns and data types are not consistent in the two year data. We also did comprehensive analysis to answer the questions we have posted, and visualized some of the conclusions.\n",
"\n",
"**Summarize some of the featured findings:**\n",
"\n",
">- Although the proportion of unique models using alternative fuels increased largely in 2018, Green gas score and the combined mpg (mile per gallon) decreased in 2018\n",
">- Compared with 2008, the midsize car improved the most for fuel efficiency, followed by station wagon and large car. Although most cars are small car, the changes in small cars is not significant.\n",
">- Vehicles with SmartWay drive are more fuel efficiency, and the technique in SmartWay drive has improved over time, smaller size of engine, smaller number of cyliner, while lower pollution score, higher average mile per gallon and higher Greenhouse Gas Score.\n",
">- 72 car models have imporved mile per gallon, and among those, VOLVO XC 90 is the model that has improved the most, with maximus increase in combine mile per gallon of 16.53.\n",
"\n",
"**Limitation of the project**\n",
">- This project focuses on data cleaning and analyzing changes on fuel efficiency over time. Statistical test and data modeling are not employed for this project."
]
}
],
"metadata": {
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}