{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Exploratory data Analysis 1.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TOvht7vqQGdR",
"colab_type": "text"
},
"source": [
"# Exploratory data analysis in Python."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "mhA_0CQOTDQy",
"colab_type": "text"
},
"source": [
"## Let us understand how to explore the data in python.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TEfC0QszTKX_",
"colab_type": "text"
},
"source": [
"\n",
"![alt text](https://moriohcdn.b-cdn.net/ff3cc511fb.png)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NMyUUHXcHdqt",
"colab_type": "text"
},
"source": [
"Image Credits: Morioh"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dB_j6LtTTO5j",
"colab_type": "text"
},
"source": [
"## Introduction"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8hg00soETQ3z",
"colab_type": "text"
},
"source": [
"**What is Exploratory Data Analysis ?**\n",
"\n",
"Exploratory Data Analysis or (EDA) is understanding the data sets by summarizing their main characteristics often plotting them visually. This step is very important especially when we arrive at modeling the data in order to apply Machine learning. Plotting in EDA consists of Histograms, Box plot, Scatter plot and many more. It often takes much time to explore the data. Through the process of EDA, we can ask to define the problem statement or definition on our data set which is very important."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZfelutoyTS25",
"colab_type": "text"
},
"source": [
"**How to perform Exploratory Data Analysis ?**\n",
"\n",
"This is one such question that everyone is keen on knowing the answer. Well, the answer is it depends on the data set that you are working. There is no one method or common methods in order to perform EDA, whereas in this tutorial you can understand some common methods and plots that would be used in the EDA process."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "n3VfNkBBw15s",
"colab_type": "text"
},
"source": [
"**What data are we exploring today ?**\n",
"\n",
"\n",
"\n",
"Since I am a huge fan of cars, I got a very beautiful data-set of cars from Kaggle. The data-set can be downloaded from [here](https://www.kaggle.com/CooperUnion/cardataset). To give a piece of brief information about the data set this data contains more of 10, 000 rows and more than 10 columns which contains features of the car such as Engine Fuel Type, Engine HP, Transmission Type, highway MPG, city MPG and many more. So in this tutorial, we will explore the data and make it ready for modeling."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CQDO4JCqTThV",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FPSqz1wzTXvz",
"colab_type": "text"
},
"source": [
"## 1. Importing the required libraries for EDA"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9eLMx1Ebwa92",
"colab_type": "text"
},
"source": [
"Below are the libraries that are used in order to perform EDA (Exploratory data analysis) in this tutorial."
]
},
{
"cell_type": "code",
"metadata": {
"id": "GGyDovL2QDLa",
"colab_type": "code",
"colab": {}
},
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns #visualisation\n",
"import matplotlib.pyplot as plt #visualisation\n",
"%matplotlib inline \n",
"sns.set(color_codes=True)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ye6eXuohTd5Q",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8Y3Z2DbKTfJt",
"colab_type": "text"
},
"source": [
"## 2. Loading the data into the data frame."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ko5zGJFCySaz",
"colab_type": "text"
},
"source": [
"Loading the data into the pandas data frame is certainly one of the most important steps in EDA, as we can see that the value from the data set is comma-separated. So all we have to do is to just read the CSV into a data frame and pandas data frame does the job for us."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LgzUzD61IM8h",
"colab_type": "text"
},
"source": [
"To get or load the dataset into the notebook, all I did was one trivial step. In Google Colab at the left-hand side of the notebook, you will find a > (greater than symbol). When you click that you will find a tab with three options, you just have to select Files. Then you can easily upload your file with the help of the Upload option. No need to mount to the google drive or use any specific libraries just upload the data set and your job is done. One thing to remember in this step is that uploaded files will get deleted when this runtime is recycled. This is how I got the data set into the notebook."
]
},
{
"cell_type": "code",
"metadata": {
"id": "0oVZnezwQ159",
"colab_type": "code",
"outputId": "f1e0fe18-8fa0-482a-e2b9-2ecd87d97d9d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 430
}
},
"source": [
"df = pd.read_csv(\"data.csv\")\n",
"# To display the top 5 rows \n",
"df.head(5) "
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Make
\n",
"
Model
\n",
"
Year
\n",
"
Engine Fuel Type
\n",
"
Engine HP
\n",
"
Engine Cylinders
\n",
"
Transmission Type
\n",
"
Driven_Wheels
\n",
"
Number of Doors
\n",
"
Market Category
\n",
"
Vehicle Size
\n",
"
Vehicle Style
\n",
"
highway MPG
\n",
"
city mpg
\n",
"
Popularity
\n",
"
MSRP
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
BMW
\n",
"
1 Series M
\n",
"
2011
\n",
"
premium unleaded (required)
\n",
"
335.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
2.0
\n",
"
Factory Tuner,Luxury,High-Performance
\n",
"
Compact
\n",
"
Coupe
\n",
"
26
\n",
"
19
\n",
"
3916
\n",
"
46135
\n",
"
\n",
"
\n",
"
1
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
premium unleaded (required)
\n",
"
300.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
2.0
\n",
"
Luxury,Performance
\n",
"
Compact
\n",
"
Convertible
\n",
"
28
\n",
"
19
\n",
"
3916
\n",
"
40650
\n",
"
\n",
"
\n",
"
2
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
premium unleaded (required)
\n",
"
300.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
2.0
\n",
"
Luxury,High-Performance
\n",
"
Compact
\n",
"
Coupe
\n",
"
28
\n",
"
20
\n",
"
3916
\n",
"
36350
\n",
"
\n",
"
\n",
"
3
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
premium unleaded (required)
\n",
"
230.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
2.0
\n",
"
Luxury,Performance
\n",
"
Compact
\n",
"
Coupe
\n",
"
28
\n",
"
18
\n",
"
3916
\n",
"
29450
\n",
"
\n",
"
\n",
"
4
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
premium unleaded (required)
\n",
"
230.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
2.0
\n",
"
Luxury
\n",
"
Compact
\n",
"
Convertible
\n",
"
28
\n",
"
18
\n",
"
3916
\n",
"
34500
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Make Model Year ... city mpg Popularity MSRP\n",
"0 BMW 1 Series M 2011 ... 19 3916 46135\n",
"1 BMW 1 Series 2011 ... 19 3916 40650\n",
"2 BMW 1 Series 2011 ... 20 3916 36350\n",
"3 BMW 1 Series 2011 ... 18 3916 29450\n",
"4 BMW 1 Series 2011 ... 18 3916 34500\n",
"\n",
"[5 rows x 16 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 2
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Fm-9dzdTRKpe",
"colab_type": "code",
"outputId": "7892eaf7-0605-4b92-e139-cf0553041e51",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 413
}
},
"source": [
"df.tail(5) # To display the botton 5 rows"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Make
\n",
"
Model
\n",
"
Year
\n",
"
Engine Fuel Type
\n",
"
Engine HP
\n",
"
Engine Cylinders
\n",
"
Transmission Type
\n",
"
Driven_Wheels
\n",
"
Number of Doors
\n",
"
Market Category
\n",
"
Vehicle Size
\n",
"
Vehicle Style
\n",
"
highway MPG
\n",
"
city mpg
\n",
"
Popularity
\n",
"
MSRP
\n",
"
\n",
" \n",
" \n",
"
\n",
"
11909
\n",
"
Acura
\n",
"
ZDX
\n",
"
2012
\n",
"
premium unleaded (required)
\n",
"
300.0
\n",
"
6.0
\n",
"
AUTOMATIC
\n",
"
all wheel drive
\n",
"
4.0
\n",
"
Crossover,Hatchback,Luxury
\n",
"
Midsize
\n",
"
4dr Hatchback
\n",
"
23
\n",
"
16
\n",
"
204
\n",
"
46120
\n",
"
\n",
"
\n",
"
11910
\n",
"
Acura
\n",
"
ZDX
\n",
"
2012
\n",
"
premium unleaded (required)
\n",
"
300.0
\n",
"
6.0
\n",
"
AUTOMATIC
\n",
"
all wheel drive
\n",
"
4.0
\n",
"
Crossover,Hatchback,Luxury
\n",
"
Midsize
\n",
"
4dr Hatchback
\n",
"
23
\n",
"
16
\n",
"
204
\n",
"
56670
\n",
"
\n",
"
\n",
"
11911
\n",
"
Acura
\n",
"
ZDX
\n",
"
2012
\n",
"
premium unleaded (required)
\n",
"
300.0
\n",
"
6.0
\n",
"
AUTOMATIC
\n",
"
all wheel drive
\n",
"
4.0
\n",
"
Crossover,Hatchback,Luxury
\n",
"
Midsize
\n",
"
4dr Hatchback
\n",
"
23
\n",
"
16
\n",
"
204
\n",
"
50620
\n",
"
\n",
"
\n",
"
11912
\n",
"
Acura
\n",
"
ZDX
\n",
"
2013
\n",
"
premium unleaded (recommended)
\n",
"
300.0
\n",
"
6.0
\n",
"
AUTOMATIC
\n",
"
all wheel drive
\n",
"
4.0
\n",
"
Crossover,Hatchback,Luxury
\n",
"
Midsize
\n",
"
4dr Hatchback
\n",
"
23
\n",
"
16
\n",
"
204
\n",
"
50920
\n",
"
\n",
"
\n",
"
11913
\n",
"
Lincoln
\n",
"
Zephyr
\n",
"
2006
\n",
"
regular unleaded
\n",
"
221.0
\n",
"
6.0
\n",
"
AUTOMATIC
\n",
"
front wheel drive
\n",
"
4.0
\n",
"
Luxury
\n",
"
Midsize
\n",
"
Sedan
\n",
"
26
\n",
"
17
\n",
"
61
\n",
"
28995
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Make Model Year ... city mpg Popularity MSRP\n",
"11909 Acura ZDX 2012 ... 16 204 46120\n",
"11910 Acura ZDX 2012 ... 16 204 56670\n",
"11911 Acura ZDX 2012 ... 16 204 50620\n",
"11912 Acura ZDX 2013 ... 16 204 50920\n",
"11913 Lincoln Zephyr 2006 ... 17 61 28995\n",
"\n",
"[5 rows x 16 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 3
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JjQnr4SPzaL5",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vAmC369yTpMF",
"colab_type": "text"
},
"source": [
"## 3. Checking the types of data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9ESKxikIzA1d",
"colab_type": "text"
},
"source": [
"Here we check for the datatypes because sometimes the MSRP or the price of the car would be stored as a string, if in that case, we have to convert that string to the integer data only then we can plot the data via a graph. Here, in this case, the data is already in integer format so nothing to worry."
]
},
{
"cell_type": "code",
"metadata": {
"id": "qPbKQ0noRptD",
"colab_type": "code",
"outputId": "6a5aea47-ad0c-4118-8471-d91b6432b339",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 312
}
},
"source": [
"df.dtypes"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Make object\n",
"Model object\n",
"Year int64\n",
"Engine Fuel Type object\n",
"Engine HP float64\n",
"Engine Cylinders float64\n",
"Transmission Type object\n",
"Driven_Wheels object\n",
"Number of Doors float64\n",
"Market Category object\n",
"Vehicle Size object\n",
"Vehicle Style object\n",
"highway MPG int64\n",
"city mpg int64\n",
"Popularity int64\n",
"MSRP int64\n",
"dtype: object"
]
},
"metadata": {
"tags": []
},
"execution_count": 4
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "beRJyQAezdX8",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QoHuBhXxT5E9",
"colab_type": "text"
},
"source": [
"## 4. Dropping irrelevant columns"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_3cy877Mze4H",
"colab_type": "text"
},
"source": [
"This step is certainly needed in every EDA because sometimes there would be many columns that we never use in such cases dropping is the only solution. In this case, the columns such as Engine Fuel Type, Market Category, Vehicle style, Popularity, Number of doors, Vehicle Size doesn't make any sense to me so I just dropped for this instance."
]
},
{
"cell_type": "code",
"metadata": {
"id": "uvSkK8swTr9H",
"colab_type": "code",
"outputId": "1734f538-a4a1-45b9-d656-7ddc0124dc35",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 202
}
},
"source": [
"df = df.drop(['Engine Fuel Type', 'Market Category', 'Vehicle Style', 'Popularity', 'Number of Doors', 'Vehicle Size'], axis=1)\n",
"df.head(5)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Make
\n",
"
Model
\n",
"
Year
\n",
"
Engine HP
\n",
"
Engine Cylinders
\n",
"
Transmission Type
\n",
"
Driven_Wheels
\n",
"
highway MPG
\n",
"
city mpg
\n",
"
MSRP
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
BMW
\n",
"
1 Series M
\n",
"
2011
\n",
"
335.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
26
\n",
"
19
\n",
"
46135
\n",
"
\n",
"
\n",
"
1
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
300.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
19
\n",
"
40650
\n",
"
\n",
"
\n",
"
2
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
300.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
20
\n",
"
36350
\n",
"
\n",
"
\n",
"
3
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
230.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
18
\n",
"
29450
\n",
"
\n",
"
\n",
"
4
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
230.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
18
\n",
"
34500
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Make Model Year ... highway MPG city mpg MSRP\n",
"0 BMW 1 Series M 2011 ... 26 19 46135\n",
"1 BMW 1 Series 2011 ... 28 19 40650\n",
"2 BMW 1 Series 2011 ... 28 20 36350\n",
"3 BMW 1 Series 2011 ... 28 18 29450\n",
"4 BMW 1 Series 2011 ... 28 18 34500\n",
"\n",
"[5 rows x 10 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 5
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "20OeQBpWz89v",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "caAownWdUZso",
"colab_type": "text"
},
"source": [
"## 5. Renaming the columns"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UABLiEcyz-2G",
"colab_type": "text"
},
"source": [
"In this instance, most of the column names are very confusing to read, so I just tweaked their column names. This is a good approach it improves the readability of the data set."
]
},
{
"cell_type": "code",
"metadata": {
"id": "1wHW41whURub",
"colab_type": "code",
"outputId": "dec9b1b3-e344-4b33-92fd-6e9f4c03c878",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 202
}
},
"source": [
"df = df.rename(columns={\"Engine HP\": \"HP\", \"Engine Cylinders\": \"Cylinders\", \"Transmission Type\": \"Transmission\", \"Driven_Wheels\": \"Drive Mode\",\"highway MPG\": \"MPG-H\", \"city mpg\": \"MPG-C\", \"MSRP\": \"Price\" })\n",
"df.head(5)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Make
\n",
"
Model
\n",
"
Year
\n",
"
HP
\n",
"
Cylinders
\n",
"
Transmission
\n",
"
Drive Mode
\n",
"
MPG-H
\n",
"
MPG-C
\n",
"
Price
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
BMW
\n",
"
1 Series M
\n",
"
2011
\n",
"
335.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
26
\n",
"
19
\n",
"
46135
\n",
"
\n",
"
\n",
"
1
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
300.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
19
\n",
"
40650
\n",
"
\n",
"
\n",
"
2
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
300.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
20
\n",
"
36350
\n",
"
\n",
"
\n",
"
3
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
230.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
18
\n",
"
29450
\n",
"
\n",
"
\n",
"
4
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
230.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
18
\n",
"
34500
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Make Model Year HP ... Drive Mode MPG-H MPG-C Price\n",
"0 BMW 1 Series M 2011 335.0 ... rear wheel drive 26 19 46135\n",
"1 BMW 1 Series 2011 300.0 ... rear wheel drive 28 19 40650\n",
"2 BMW 1 Series 2011 300.0 ... rear wheel drive 28 20 36350\n",
"3 BMW 1 Series 2011 230.0 ... rear wheel drive 28 18 29450\n",
"4 BMW 1 Series 2011 230.0 ... rear wheel drive 28 18 34500\n",
"\n",
"[5 rows x 10 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 6
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5tcGiOmV0afN",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uiW7x_O4WIDX",
"colab_type": "text"
},
"source": [
"## 6. Dropping the duplicate rows"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9LpR5NW70hXm",
"colab_type": "text"
},
"source": [
"This is often a handy thing to do because a huge data set as in this case contains more than 10, 000 rows often have some duplicate data which might be disturbing, so here I remove all the duplicate value from the data-set. For example prior to removing I had 11914 rows of data but after removing the duplicates 10925 data meaning that I had 989 of duplicate data."
]
},
{
"cell_type": "code",
"metadata": {
"id": "1nBN_BCDWSmv",
"colab_type": "code",
"outputId": "9a070a7d-a4d4-45c7-cac8-acb2c4db0e72",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"source": [
"df.shape"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(11914, 10)"
]
},
"metadata": {
"tags": []
},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "yB8t6o0wH7If",
"colab_type": "code",
"outputId": "d4778cd1-5372-4e27-db62-20635493786e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"source": [
"duplicate_rows_df = df[df.duplicated()]\n",
"print(\"number of duplicate rows: \", duplicate_rows_df.shape)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"number of duplicate rows: (989, 10)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "chhNvMFCIzqI",
"colab_type": "text"
},
"source": [
"Now let us remove the duplicate data because it's ok to remove them."
]
},
{
"cell_type": "code",
"metadata": {
"id": "kuobmetTV820",
"colab_type": "code",
"outputId": "c6d6ce5c-6a38-4cd2-ee99-151124a1f84d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 208
}
},
"source": [
"df.count() # Used to count the number of rows"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Make 11914\n",
"Model 11914\n",
"Year 11914\n",
"HP 11845\n",
"Cylinders 11884\n",
"Transmission 11914\n",
"Drive Mode 11914\n",
"MPG-H 11914\n",
"MPG-C 11914\n",
"Price 11914\n",
"dtype: int64"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_MJKjbzHI40K",
"colab_type": "text"
},
"source": [
"So seen above there are 11914 rows and we are removing 989 rows of duplicate data."
]
},
{
"cell_type": "code",
"metadata": {
"id": "OiOsEF6WVTSj",
"colab_type": "code",
"outputId": "a527c1a2-5d74-42bb-99e2-8112ebffb871",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 202
}
},
"source": [
"df = df.drop_duplicates()\n",
"df.head(5)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Make
\n",
"
Model
\n",
"
Year
\n",
"
HP
\n",
"
Cylinders
\n",
"
Transmission
\n",
"
Drive Mode
\n",
"
MPG-H
\n",
"
MPG-C
\n",
"
Price
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
BMW
\n",
"
1 Series M
\n",
"
2011
\n",
"
335.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
26
\n",
"
19
\n",
"
46135
\n",
"
\n",
"
\n",
"
1
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
300.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
19
\n",
"
40650
\n",
"
\n",
"
\n",
"
2
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
300.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
20
\n",
"
36350
\n",
"
\n",
"
\n",
"
3
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
230.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
18
\n",
"
29450
\n",
"
\n",
"
\n",
"
4
\n",
"
BMW
\n",
"
1 Series
\n",
"
2011
\n",
"
230.0
\n",
"
6.0
\n",
"
MANUAL
\n",
"
rear wheel drive
\n",
"
28
\n",
"
18
\n",
"
34500
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Make Model Year HP ... Drive Mode MPG-H MPG-C Price\n",
"0 BMW 1 Series M 2011 335.0 ... rear wheel drive 26 19 46135\n",
"1 BMW 1 Series 2011 300.0 ... rear wheel drive 28 19 40650\n",
"2 BMW 1 Series 2011 300.0 ... rear wheel drive 28 20 36350\n",
"3 BMW 1 Series 2011 230.0 ... rear wheel drive 28 18 29450\n",
"4 BMW 1 Series 2011 230.0 ... rear wheel drive 28 18 34500\n",
"\n",
"[5 rows x 10 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 10
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "2gMM4lb0Vzor",
"colab_type": "code",
"outputId": "f04e1803-e7de-4cbf-fdeb-8449a8051a07",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 208
}
},
"source": [
"df.count()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Make 10925\n",
"Model 10925\n",
"Year 10925\n",
"HP 10856\n",
"Cylinders 10895\n",
"Transmission 10925\n",
"Drive Mode 10925\n",
"MPG-H 10925\n",
"MPG-C 10925\n",
"Price 10925\n",
"dtype: int64"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zCLUdZOQ1PDP",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JkXUQtyQW3Dy",
"colab_type": "text"
},
"source": [
"## 7. Dropping the missing or null values."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "K5pKvJi41YCp",
"colab_type": "text"
},
"source": [
"This is mostly similar to the previous step but in here all the missing values are detected and are dropped later. Now, this is not a good approach to do so, because many people just replace the missing values with the mean or the average of that column, but in this case, I just dropped that missing values. This is because there is nearly 100 missing value compared to 10, 000 values this is a small number and this is negligible so I just dropped those values."
]
},
{
"cell_type": "code",
"metadata": {
"id": "Tzdlg-1OWjMz",
"colab_type": "code",
"outputId": "7375ab6e-1473-4346-e5b5-0c61189cc716",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 208
}
},
"source": [
"print(df.isnull().sum())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Make 0\n",
"Model 0\n",
"Year 0\n",
"HP 69\n",
"Cylinders 30\n",
"Transmission 0\n",
"Drive Mode 0\n",
"MPG-H 0\n",
"MPG-C 0\n",
"Price 0\n",
"dtype: int64\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iWJqTVxTJQnO",
"colab_type": "text"
},
"source": [
"This is the reason in the above step while counting both Cylinders and Horsepower (HP) had 10856 and 10895 over 10925 rows."
]
},
{
"cell_type": "code",
"metadata": {
"id": "KbbV0xHPWoad",
"colab_type": "code",
"outputId": "17dda8ec-1282-4814-de79-8f5e1aff3a5f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 208
}
},
"source": [
"df = df.dropna() # Dropping the missing values.\n",
"df.count()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Make 10827\n",
"Model 10827\n",
"Year 10827\n",
"HP 10827\n",
"Cylinders 10827\n",
"Transmission 10827\n",
"Drive Mode 10827\n",
"MPG-H 10827\n",
"MPG-C 10827\n",
"Price 10827\n",
"dtype: int64"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2t7L9l2mJSoX",
"colab_type": "text"
},
"source": [
"Now we have removed all the rows which contain the Null or N/A values (Cylinders and Horsepower (HP))."
]
},
{
"cell_type": "code",
"metadata": {
"id": "V-DmX1O4Wtox",
"colab_type": "code",
"outputId": "2d50fc20-3535-413b-e317-75a7f94fa2a2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 208
}
},
"source": [
"print(df.isnull().sum()) # After dropping the values"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Make 0\n",
"Model 0\n",
"Year 0\n",
"HP 0\n",
"Cylinders 0\n",
"Transmission 0\n",
"Drive Mode 0\n",
"MPG-H 0\n",
"MPG-C 0\n",
"Price 0\n",
"dtype: int64\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bk8RAHqQJVJK",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8Py3sQc_ZxyU",
"colab_type": "text"
},
"source": [
"## 8. Detecting Outliers"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1g6CJPofZzHN",
"colab_type": "text"
},
"source": [
"An outlier is a point or set of points that are different from other points. Sometimes they can be very high or very low. It's often a good idea to detect and remove the outliers. Because outliers are one of the primary reasons for resulting in a less accurate model. Hence it's a good idea to remove them. The outlier detection and removing that I am going to perform is called IQR score technique. Often outliers can be seen with visualizations using a box plot. Shown below are the box plot of MSRP, Cylinders, Horsepower and EngineSize. Herein all the plots, you can find some points are outside the box they are none other than outliers. The technique of finding and removing outlier that I am performing in this assignment is taken help of a tutorial from[ towards data science](https://towardsdatascience.com/ways-to-detect-and-remove-the-outliers-404d16608dba)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "vtxX_y6zZ2ri",
"colab_type": "code",
"outputId": "e3f93522-9244-4c32-c34c-103e0834e93b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 309
}
},
"source": [
"sns.boxplot(x=df['Price'])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
""
]
},
"metadata": {
"tags": []
},
"execution_count": 15
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "cFG9hck7aHUx",
"colab_type": "code",
"outputId": "7c09ff98-3725-4d56-9b97-ef6b43d0e17b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 139
}
},
"source": [
"Q1 = df.quantile(0.25)\n",
"Q3 = df.quantile(0.75)\n",
"IQR = Q3 - Q1\n",
"print(IQR)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Year 9.0\n",
"HP 130.0\n",
"Cylinders 2.0\n",
"MPG-H 8.0\n",
"MPG-C 6.0\n",
"Price 21327.5\n",
"dtype: float64\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kCv110_cJiDz",
"colab_type": "text"
},
"source": [
"Don't worry about the above values because it's not important to know each and every one of them because it's just important to know how to use this technique in order to remove the outliers."
]
},
{
"cell_type": "code",
"metadata": {
"id": "igh_mRXeaJrI",
"colab_type": "code",
"outputId": "44660b71-2eb7-4387-c599-e527640a7c21",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"source": [
"df = df[~((df < (Q1 - 1.5 * IQR)) |(df > (Q3 + 1.5 * IQR))).any(axis=1)]\n",
"df.shape"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(9191, 10)"
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9Nh93DCGJkqT",
"colab_type": "text"
},
"source": [
"As seen above there were around 1600 rows were outliers. But you cannot completely remove the outliers because even after you use the above technique there maybe 1–2 outlier unremoved but that ok because there were more than 100 outliers. Something is better than nothing."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Z87kHbgvaQbb",
"colab_type": "text"
},
"source": [
"\n",
"\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WqFPRda8eEp_",
"colab_type": "text"
},
"source": [
"## 9. Plot different features against one another (scatter), against frequency (histogram)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Z-W6Q9-hJosZ",
"colab_type": "text"
},
"source": [
"### Histogram\n",
"\n",
"Histogram refers to the frequency of occurrence of variables in an interval. In this case, there are mainly 10 different types of car manufacturing companies, but it is often important to know who has the most number of cars. To do this histogram is one of the trivial solutions which lets us know the total number of car manufactured by a different company."
]
},
{
"cell_type": "code",
"metadata": {
"id": "dAnd4DSyeHDb",
"colab_type": "code",
"outputId": "44b04e39-9dc7-40fc-9ddb-b7182f4f6e1f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 431
}
},
"source": [
"df.Make.value_counts().nlargest(40).plot(kind='bar', figsize=(10,5))\n",
"plt.title(\"Number of cars by make\")\n",
"plt.ylabel('Number of cars')\n",
"plt.xlabel('Make');"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\npZ0KEZUydtESERmBgIAA/Prrr5g9e7bS7GAiqpjYRUtERERkZNhFS0RERGRkWOARERERGRkWeERE\nRERGpkJPskhNzYBc/voQRBsbCyQn67YQp66xpXFMfWLLW776xDJfw8YyX8PGMt+yG8t8DRtrTPma\nmMhQq1Z1rZ6vQhd4crlQbIGn2KfP877JuNKKLW/56hPLfA0by3wNG8t8y24s8zVsbEXKtyh20RIR\nEREZGRZ4REREREaGBR4RERGRkWGBR0RERGRkWOARERERGRkWeERERERG5o0UeCEhIejWrRuaNGmC\nW7duidvv3bsHPz8/9OrVC35+foiLi9N7HxEREVFF90YKvO7duyMsLAwODg5K24OCgjB06FAcPXoU\nQ4cORWBgoN77iIiIiCq6N1Lgubi4wN7eXmlbcnIyrl+/Di8vLwCAl5cXrl+/jpSUFJ33EREREVEp\n3skiISEBtWvXhqmpKQDA1NQUdnZ2SEhIgCAIOu2ztrYurZdDREREVGZU6FuV2dhYAABycvNhVtlU\naZ+traX47+L2q1M4Vhu6xpVWbHnLV59Y5mvYWOZr2FjmW3Zjma9hYytSvkWVWoFnb2+PxMRE5Ofn\nw9TUFPn5+UhKSoK9vT0EQdBpn7aSk9MhlwuwtbVEn+n7VD7uwLJ+ePo0TdJz2tpaSn5sScSVVmx5\ny1efWOZr2Fjma9hY5lt2Y5mvYWONKV8TE5nYKCVVqS2TYmNjg2bNmiE6OhoAEB0djWbNmsHa2lrn\nfURERET0hlrwFixYgJ9//hnPnj3DyJEjYWVlhYMHD2Lu3LmYOXMm1q5dixo1aiAkJESM0XUfERER\nUUX3Rgq8OXPmYM6cOa9td3R0xJ49e4qN0XUfERERUUXHO1kQERERGRkWeERERERGhgUeERERkZFh\ngUdERERkZFjgERERERkZFnhERERERoYFHhEREZGRYYFHREREZGRY4BEREREZGRZ4REREREaGBR4R\nERGRkWGBR0RERGRkWOARERERGRkWeERERERGhgUeERERkZFhgUdERERkZFjgERERERkZFnhERERE\nRoYFHhEREZGRYYFHREREZGRY4BEREREZGRZ4REREREaGBR4RERGRkWGBR0RERGRkWOARERERGRkW\neERERERGhgUeERERkZFhgUdERERkZFjgERERERkZFnhERERERoYFHhEREZGRYYFHREREZGRY4BER\nEREZGRZ4REREREaGBR4RERGRkWGBR0RERGRkWOARERERGRkWeERERERGhgUeERERkZFhgUdERERk\nZFjgERERERkZFnhERERERoYFHhEREZGRKRMF3okTJ+Dt7Y1+/fqhb9+++PnnnwEA9+7dg5+fH3r1\n6gU/Pz/ExcWJMer2EREREVVkpV7gCYKAL774AkuWLMG+ffuwZMkSBAQEQC6XIygoCEOHDsXRo0cx\ndOhQBAYGinHq9hERERFVZKVe4AGAiYkJ0tLSAABpaWmws7NDamoqrl+/Di8vLwCAl5cXrl+/jpSU\nFCQnJ6vcR0RERFTRVSrtBGQyGVasWIEJEyagWrVqyMjIwIYNG5CQkIDatWvD1NQUAGBqago7Ozsk\nJCRAEASV+6ytrUvz5RARERGVulIv8PLy8rB+/XqsXbsWbdu2xcWLFzFlyhQsWbLE4Me2sbGQ/Fhb\nW0uDPLYk4kortrzlq08s8zVsLPM1bCzzLbuxzNewsRUp36JKvcC7ceMGkpKS0LZtWwBA27ZtUbVq\nVZibmyMxMRH5+fkwNTVFfn4+kpKSYG9vD0EQVO7TRnJyOuRyQdIb+vRpmqTntLW1lPzYkogrrdjy\nlq8+sczXsLHM17CxzLfsxjJfw8YaU74mJjKtGqWAMjAGr06dOnjy5An++ecfAMDdu3eRnJyMBg0a\noFmzZoiOjgYAREdHo1mzZrC2toaNjY3KfUREREQVXam34Nna2mLu3LmYPHkyZDIZAGDRokWwsrLC\n3LlzMXPmTKxduxY1atRASEiIGKduHxEREVFFVuoFHgD07dsXffv2fW27o6Mj9uzZU2yMun1ERERE\nFVmpd9ESERERUcligUdERERkZFjgERERERkZFnhERERERoYFHhEREZGRYYFHREREZGRY4BEREREZ\nmTKxDl55ZlmjKqqYK7+NilufZWXnIe1lZmmkRURERBUYCzw9VTGvhD7T9xW778CyftDtTnZERERE\numMXLREREZGRYYFHREREZGRY4BEREREZGRZ4REREREaGBR4RERGRkWGBR0RERGRkWOARERERGRkW\neERERERGhgUeERERkZFhgUdERERkZFjgERERERkZFnhERERERkanAi8+Ph4PHz4s6VyIiIiIqARI\nKvCmTZuGP//8EwAQERGBjz76CF5eXtizZ49BkyMiIiIi7Ukq8M6ePYsWLVoAALZs2YLNmzdjz549\n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\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "c37WtYYWJuAQ",
"colab_type": "text"
},
"source": [
"### Heat Maps\n",
"\n",
"Heat Maps is a type of plot which is necessary when we need to find the dependent variables. One of the best way to find the relationship between the features can be done using heat maps. In the below heat map we know that the price feature depends mainly on the Engine Size, Horsepower, and Cylinders."
]
},
{
"cell_type": "code",
"metadata": {
"id": "yhHfLVTj6nmy",
"colab_type": "code",
"outputId": "50a65ae0-841a-42ec-87e6-1a99da1ea57b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 544
}
},
"source": [
"plt.figure(figsize=(10,5))\n",
"c= df.corr()\n",
"sns.heatmap(c,cmap=\"BrBG\",annot=True)\n",
"c"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"