Skip to content

Instantly share code, notes, and snippets.

@tkhan0
Created January 18, 2021 23:00
Show Gist options
  • Save tkhan0/aafe2c07a3d2253735b755643092828c to your computer and use it in GitHub Desktop.
Save tkhan0/aafe2c07a3d2253735b755643092828c to your computer and use it in GitHub Desktop.
Detecting outliers with Z-score
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Method -1: Z-score\n",
"\n",
"### About the dataset\n",
"\n",
"The dataset is about consists of Placement data of MBA students of a B-school. It includes the following features:\n",
"\n",
"1. serial number (sl_no)\n",
"2. gender(gender)\n",
"3. secondary school percentage(ssc_p)\n",
"4. secondary school specialization(ssc_b)\n",
"5. higher secondary school percentage(hsc_p)\n",
"6. higher secondary school specialization(hsc_b)\n",
"7. degree percentage(degree_p)\n",
"8. degree specialization(degree_t)\n",
"9. workex(workex)\n",
"10. competitive exam percentage(etest_p)\n",
"11. Specialization(specialisation)\n",
"12. mba percentage(mba_p)\n",
"13. status(status)\n",
"14. salary(salary)\n",
"\n",
"You can download the dataset from kaggle https://www.kaggle.com/benroshan/factors-affecting-campus-placement?select=Placement_Data_Full_Class.csv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Methods of Detecting Outliers"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 1. Import the dataset"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(\"C:/Users/tkhan050/Documents/Blogs/Blog - 16 - Z-score/Placement.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sl_no</th>\n",
" <th>gender</th>\n",
" <th>ssc_p</th>\n",
" <th>ssc_b</th>\n",
" <th>hsc_p</th>\n",
" <th>hsc_b</th>\n",
" <th>hsc_s</th>\n",
" <th>degree_p</th>\n",
" <th>degree_t</th>\n",
" <th>workex</th>\n",
" <th>etest_p</th>\n",
" <th>specialisation</th>\n",
" <th>mba_p</th>\n",
" <th>status</th>\n",
" <th>salary</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>M</td>\n",
" <td>67.00</td>\n",
" <td>Others</td>\n",
" <td>91.00</td>\n",
" <td>Others</td>\n",
" <td>Commerce</td>\n",
" <td>58.00</td>\n",
" <td>Sci&amp;Tech</td>\n",
" <td>No</td>\n",
" <td>55.0</td>\n",
" <td>Mkt&amp;HR</td>\n",
" <td>58.80</td>\n",
" <td>Placed</td>\n",
" <td>270000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>M</td>\n",
" <td>79.33</td>\n",
" <td>Central</td>\n",
" <td>78.33</td>\n",
" <td>Others</td>\n",
" <td>Science</td>\n",
" <td>77.48</td>\n",
" <td>Sci&amp;Tech</td>\n",
" <td>Yes</td>\n",
" <td>86.5</td>\n",
" <td>Mkt&amp;Fin</td>\n",
" <td>66.28</td>\n",
" <td>Placed</td>\n",
" <td>200000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>M</td>\n",
" <td>65.00</td>\n",
" <td>Central</td>\n",
" <td>68.00</td>\n",
" <td>Central</td>\n",
" <td>Arts</td>\n",
" <td>64.00</td>\n",
" <td>Comm&amp;Mgmt</td>\n",
" <td>No</td>\n",
" <td>75.0</td>\n",
" <td>Mkt&amp;Fin</td>\n",
" <td>57.80</td>\n",
" <td>Placed</td>\n",
" <td>250000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>M</td>\n",
" <td>56.00</td>\n",
" <td>Central</td>\n",
" <td>52.00</td>\n",
" <td>Central</td>\n",
" <td>Science</td>\n",
" <td>52.00</td>\n",
" <td>Sci&amp;Tech</td>\n",
" <td>No</td>\n",
" <td>66.0</td>\n",
" <td>Mkt&amp;HR</td>\n",
" <td>59.43</td>\n",
" <td>Not Placed</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>5</td>\n",
" <td>M</td>\n",
" <td>85.80</td>\n",
" <td>Central</td>\n",
" <td>73.60</td>\n",
" <td>Central</td>\n",
" <td>Commerce</td>\n",
" <td>73.30</td>\n",
" <td>Comm&amp;Mgmt</td>\n",
" <td>No</td>\n",
" <td>96.8</td>\n",
" <td>Mkt&amp;Fin</td>\n",
" <td>55.50</td>\n",
" <td>Placed</td>\n",
" <td>425000.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sl_no gender ssc_p ssc_b hsc_p hsc_b hsc_s degree_p \\\n",
"0 1 M 67.00 Others 91.00 Others Commerce 58.00 \n",
"1 2 M 79.33 Central 78.33 Others Science 77.48 \n",
"2 3 M 65.00 Central 68.00 Central Arts 64.00 \n",
"3 4 M 56.00 Central 52.00 Central Science 52.00 \n",
"4 5 M 85.80 Central 73.60 Central Commerce 73.30 \n",
"\n",
" degree_t workex etest_p specialisation mba_p status salary \n",
"0 Sci&Tech No 55.0 Mkt&HR 58.80 Placed 270000.0 \n",
"1 Sci&Tech Yes 86.5 Mkt&Fin 66.28 Placed 200000.0 \n",
"2 Comm&Mgmt No 75.0 Mkt&Fin 57.80 Placed 250000.0 \n",
"3 Sci&Tech No 66.0 Mkt&HR 59.43 Not Placed NaN \n",
"4 Comm&Mgmt No 96.8 Mkt&Fin 55.50 Placed 425000.0 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 2. Check if there are any \"na\" values present"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"sl_no 0\n",
"gender 0\n",
"ssc_p 0\n",
"ssc_b 0\n",
"hsc_p 0\n",
"hsc_b 0\n",
"hsc_s 0\n",
"degree_p 0\n",
"degree_t 0\n",
"workex 0\n",
"etest_p 0\n",
"specialisation 0\n",
"mba_p 0\n",
"status 0\n",
"salary 67\n",
"dtype: int64"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isna().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 3. Drop all the \"na\" values"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
"datadrop = df.dropna()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4. Create a function for Z-score using the below formula\n",
"\n",
"<img src = 'http://ai-ml-analytics.com/wp-content/uploads/2020/06/sample-z-score.png'>"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [],
"source": [
"outliers =[]\n",
"def outliers_zscore(data):\n",
" max_dev = 3\n",
" mean = np.mean(data)\n",
" std = np.std(data)\n",
" for i in data:\n",
" Z_score = (i-mean)/std\n",
" if np.abs(Z_score)>max_dev:\n",
" outliers.append(i)\n",
" return outliers"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 5. Pass the column from the dataframe to show the outlier which are basically 3 standard deviations away from the mean"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [],
"source": [
"z_score_outlier = outliers_zscore(datadrop['salary'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 6. Showing the outliers"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[940000.0, 690000.0, 650000.0]"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"z_score_outlier"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Method 2: Using Quantiles\n",
"\n",
"Let's say we have a set of data and we want to determine what are the possible outliers. Before understanding the method of detecting outliers, we need to understand what **Outliers** are and how are they important or not important in different cases.\n",
"\n",
"An **outlier** is basically an extremely high or extremely low value in our dataset.\n",
"\n",
"Ex.,\n",
"1. Suppose the normal salary of a person is \\\\$5k per month. \n",
"But one month he received a salary of $10k. This can be treated as an outlier which might be because of the annual bonus he would have got.\n",
"\n",
"2. Another example we could think of is in case of fraudelent credit card transaction. Suppose a person credic card transactions have always been within the range of \\\\$150-\\\\$200, however there were couple of transactions which were more than \\\\$2000. This is clearly an outlier, which could be regarded as a fraudelent transaction."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Quantiles**: These are basically measures/segments in which the data can be shown. These include percentiles, quartiles, deciles and so on. We calculate these data after arranging them in ascending order.\n",
"\n",
"\n",
"**i. Percentile**: Percentile is defined as the percentage of data that is present below the value of the original value. For example if someone scores a percentile of 90 then the number of students below that are 90 percent of the students.\n",
"\n",
"\n",
"**ii. Decile**: Decile is defined as the 10th percentile, which means the data points that are present below decile is 10 percent of the whole data set.\n",
"\n",
"\n",
"**iii. Quartile**: Quartile is defined as 1/4th of the data or the 25th percentile and can be categorized into 3 quartiles:\n",
"1st Quartile consists of 25 percent of the data, 2nd Quartile is 50 percent of the data and 3rd quartile is 75 percent of the data. We also call the 2nd quartile as the median or 50th percentile or 5th decile.\n",
"\n",
"\n",
"**iv. Interquartile Range(IQR)**: Interquartile range is defined as the difference between the third quartile and the first quartile and can be effective in figuring out the outliers in the dataset.\n",
"\n",
"Our data contains outliers if it is outside **Q1(first quartile) or Q3(3rd Quartile)**. The **3rd quartile** is the **Upper Bound** and the **First Quartile** is **the Lower Bound**\n",
"\n",
"**Upper Bound = Q3(third quartile) + 1.5(IQR)** \n",
"**lower than Q1(first quartile) - 1.5(IQR)**\n",
"\n",
"Now that we have understood what all these means, let’s pull it back together and calculate it using an example:\n",
"\n",
"Ex: 71, 70, 90, 70, 70, 60, 70, 72, 72, 320, 71, 69\n",
"\n",
"1. Rearrange the numbers in order:\n",
"\n",
" 60, 69, 70, 70, 70, 70, 71, 71, 72, 72, 90, 320\n",
" \n",
"\n",
"2. Calculate the median(Q2) : (70+71)/2 = 70.5\n",
"\n",
"3. Split the range into 2 halves with the first half less than 70.5 and the 2nd half greater than 70.5\n",
"\n",
"4. 1st half = 60, 69, 70, 70, 70, 70\n",
"\n",
"5. 2nd half = 71, 71, 72, 72, 90, 320\n",
"\n",
"6. Q1 = calculate the median of the 1st half = (70 + 70)/2 = 70\n",
"\n",
"7. Q3 = calculate the median of the 2nd half = (72 + 72)/2 =72\n",
"\n",
"\n",
"**The interquartile range is : Q3-Q1** = 72 - 70 = 2\n",
"\n",
"**Upper Bound = Q3(third quartile) + 1.5(IQR)** = 72 + 1.5(2) = 75\n",
"\n",
"\n",
"**lower Bound = Q1(first quartile) - 1.5(IQR)** = 70 - 1.5(2) = 67\n",
"\n",
"Anything outside the Upper Bound and Lower Bound is considered an Outlier. So in our example the outliers would be 90, 320\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 1. Calculate the Q1(First Quartile) and Q3(Third Quartile) for the 'salary' column"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [],
"source": [
"quartile1,quartile3=np.percentile(datadrop['salary'],[25,75])"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"240000.0 300000.0\n"
]
}
],
"source": [
"print(quartile1,quartile3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 2. Calculate the Interquartile Range"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"60000.0\n"
]
}
],
"source": [
"interquartile_range = quartile3-quartile1\n",
"print(interquartile_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 3. Calculate the Lower bound and Upper bound. Anything outside the upper and lower bound is an outlier"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [],
"source": [
"lower_bound = quartile1 -(1.5*interquartile_range)\n",
"upper_bound = quartile3 +(1.5*interquartile_range)"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"150000.0 390000.0\n"
]
}
],
"source": [
"print(lower_bound,upper_bound)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4. Boxplot showing the Outliers"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"plt.boxplot(datadrop['salary'])\n",
"plt.show()"
]
}
],
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment