{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 212,
   "id": "16cea173-32ee-4641-a729-1642051ed227",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "df = pd.read_csv('healthcare-dataset-stroke-data.csv')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "id": "96d68c51-e5d3-4dba-89fc-823f32d498f8",
   "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>id</th>\n",
       "      <th>gender</th>\n",
       "      <th>age</th>\n",
       "      <th>hypertension</th>\n",
       "      <th>heart_disease</th>\n",
       "      <th>ever_married</th>\n",
       "      <th>work_type</th>\n",
       "      <th>Residence_type</th>\n",
       "      <th>avg_glucose_level</th>\n",
       "      <th>bmi</th>\n",
       "      <th>smoking_status</th>\n",
       "      <th>stroke</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>9046</td>\n",
       "      <td>Male</td>\n",
       "      <td>67.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>228.69</td>\n",
       "      <td>36.6</td>\n",
       "      <td>formerly smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>51676</td>\n",
       "      <td>Female</td>\n",
       "      <td>61.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>202.21</td>\n",
       "      <td>NaN</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>31112</td>\n",
       "      <td>Male</td>\n",
       "      <td>80.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>105.92</td>\n",
       "      <td>32.5</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60182</td>\n",
       "      <td>Female</td>\n",
       "      <td>49.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>171.23</td>\n",
       "      <td>34.4</td>\n",
       "      <td>smokes</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1665</td>\n",
       "      <td>Female</td>\n",
       "      <td>79.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>174.12</td>\n",
       "      <td>24.0</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>56669</td>\n",
       "      <td>Male</td>\n",
       "      <td>81.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>186.21</td>\n",
       "      <td>29.0</td>\n",
       "      <td>formerly smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>53882</td>\n",
       "      <td>Male</td>\n",
       "      <td>74.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>70.09</td>\n",
       "      <td>27.4</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>10434</td>\n",
       "      <td>Female</td>\n",
       "      <td>69.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>No</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>94.39</td>\n",
       "      <td>22.8</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>27419</td>\n",
       "      <td>Female</td>\n",
       "      <td>59.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>76.15</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Unknown</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>60491</td>\n",
       "      <td>Female</td>\n",
       "      <td>78.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>58.57</td>\n",
       "      <td>24.2</td>\n",
       "      <td>Unknown</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      id  gender   age  hypertension  heart_disease ever_married  \\\n",
       "0   9046    Male  67.0             0              1          Yes   \n",
       "1  51676  Female  61.0             0              0          Yes   \n",
       "2  31112    Male  80.0             0              1          Yes   \n",
       "3  60182  Female  49.0             0              0          Yes   \n",
       "4   1665  Female  79.0             1              0          Yes   \n",
       "5  56669    Male  81.0             0              0          Yes   \n",
       "6  53882    Male  74.0             1              1          Yes   \n",
       "7  10434  Female  69.0             0              0           No   \n",
       "8  27419  Female  59.0             0              0          Yes   \n",
       "9  60491  Female  78.0             0              0          Yes   \n",
       "\n",
       "       work_type Residence_type  avg_glucose_level   bmi   smoking_status  \\\n",
       "0        Private          Urban             228.69  36.6  formerly smoked   \n",
       "1  Self-employed          Rural             202.21   NaN     never smoked   \n",
       "2        Private          Rural             105.92  32.5     never smoked   \n",
       "3        Private          Urban             171.23  34.4           smokes   \n",
       "4  Self-employed          Rural             174.12  24.0     never smoked   \n",
       "5        Private          Urban             186.21  29.0  formerly smoked   \n",
       "6        Private          Rural              70.09  27.4     never smoked   \n",
       "7        Private          Urban              94.39  22.8     never smoked   \n",
       "8        Private          Rural              76.15   NaN          Unknown   \n",
       "9        Private          Urban              58.57  24.2          Unknown   \n",
       "\n",
       "   stroke  \n",
       "0       1  \n",
       "1       1  \n",
       "2       1  \n",
       "3       1  \n",
       "4       1  \n",
       "5       1  \n",
       "6       1  \n",
       "7       1  \n",
       "8       1  \n",
       "9       1  "
      ]
     },
     "execution_count": 213,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "id": "d43bbff1-a182-4734-9b2f-0d2737115eb4",
   "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>id</th>\n",
       "      <th>age</th>\n",
       "      <th>hypertension</th>\n",
       "      <th>heart_disease</th>\n",
       "      <th>avg_glucose_level</th>\n",
       "      <th>bmi</th>\n",
       "      <th>stroke</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>5110.000000</td>\n",
       "      <td>5110.000000</td>\n",
       "      <td>5110.000000</td>\n",
       "      <td>5110.000000</td>\n",
       "      <td>5110.000000</td>\n",
       "      <td>4909.000000</td>\n",
       "      <td>5110.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>36517.829354</td>\n",
       "      <td>43.226614</td>\n",
       "      <td>0.097456</td>\n",
       "      <td>0.054012</td>\n",
       "      <td>106.147677</td>\n",
       "      <td>28.893237</td>\n",
       "      <td>0.048728</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>21161.721625</td>\n",
       "      <td>22.612647</td>\n",
       "      <td>0.296607</td>\n",
       "      <td>0.226063</td>\n",
       "      <td>45.283560</td>\n",
       "      <td>7.854067</td>\n",
       "      <td>0.215320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>67.000000</td>\n",
       "      <td>0.080000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>55.120000</td>\n",
       "      <td>10.300000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>17741.250000</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>77.245000</td>\n",
       "      <td>23.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>36932.000000</td>\n",
       "      <td>45.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>91.885000</td>\n",
       "      <td>28.100000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>54682.000000</td>\n",
       "      <td>61.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>114.090000</td>\n",
       "      <td>33.100000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>72940.000000</td>\n",
       "      <td>82.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>271.740000</td>\n",
       "      <td>97.600000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 id          age  hypertension  heart_disease  \\\n",
       "count   5110.000000  5110.000000   5110.000000    5110.000000   \n",
       "mean   36517.829354    43.226614      0.097456       0.054012   \n",
       "std    21161.721625    22.612647      0.296607       0.226063   \n",
       "min       67.000000     0.080000      0.000000       0.000000   \n",
       "25%    17741.250000    25.000000      0.000000       0.000000   \n",
       "50%    36932.000000    45.000000      0.000000       0.000000   \n",
       "75%    54682.000000    61.000000      0.000000       0.000000   \n",
       "max    72940.000000    82.000000      1.000000       1.000000   \n",
       "\n",
       "       avg_glucose_level          bmi       stroke  \n",
       "count        5110.000000  4909.000000  5110.000000  \n",
       "mean          106.147677    28.893237     0.048728  \n",
       "std            45.283560     7.854067     0.215320  \n",
       "min            55.120000    10.300000     0.000000  \n",
       "25%            77.245000    23.500000     0.000000  \n",
       "50%            91.885000    28.100000     0.000000  \n",
       "75%           114.090000    33.100000     0.000000  \n",
       "max           271.740000    97.600000     1.000000  "
      ]
     },
     "execution_count": 214,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "id": "a1bd713a-0c3f-4da6-b092-e7ac2b55f89d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id                     0\n",
       "gender                 0\n",
       "age                    0\n",
       "hypertension           0\n",
       "heart_disease          0\n",
       "ever_married           0\n",
       "work_type              0\n",
       "Residence_type         0\n",
       "avg_glucose_level      0\n",
       "bmi                  201\n",
       "smoking_status         0\n",
       "stroke                 0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 215,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "id": "f04727cf-ccdb-4103-b968-db01ea791eff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5110"
      ]
     },
     "execution_count": 216,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "len(df)  # number of rows = 5110"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "id": "47e74751-7eaa-4921-9399-f39ab04ff4e9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id                   0.000000\n",
      "gender               0.000000\n",
      "age                  0.000000\n",
      "hypertension         0.000000\n",
      "heart_disease        0.000000\n",
      "ever_married         0.000000\n",
      "work_type            0.000000\n",
      "Residence_type       0.000000\n",
      "avg_glucose_level    0.000000\n",
      "bmi                  3.933464\n",
      "smoking_status       0.000000\n",
      "stroke               0.000000\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print((df.isnull().sum() / len(df)) * 100)    # null values for bmi = 4% so no need to delete column # bmi column is numeric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "id": "40a3e3ae-2379-43ff-af6f-43215b047281",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id                   False\n",
      "gender               False\n",
      "age                  False\n",
      "hypertension         False\n",
      "heart_disease        False\n",
      "ever_married         False\n",
      "work_type            False\n",
      "Residence_type       False\n",
      "avg_glucose_level    False\n",
      "bmi                  False\n",
      "smoking_status       False\n",
      "stroke               False\n",
      "dtype: bool\n"
     ]
    }
   ],
   "source": [
    "threshold = 30\n",
    "print((df.isnull().mean() * 100) > threshold) # no columns has null values bigger than 30% so no need ro delete column # best approaches for nulls < 5 % are mean or median or mode."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "id": "a16647cb-eab2-47d2-b9f6-592b6c2181dc",
   "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>id</th>\n",
       "      <th>gender</th>\n",
       "      <th>age</th>\n",
       "      <th>hypertension</th>\n",
       "      <th>heart_disease</th>\n",
       "      <th>ever_married</th>\n",
       "      <th>work_type</th>\n",
       "      <th>Residence_type</th>\n",
       "      <th>avg_glucose_level</th>\n",
       "      <th>bmi</th>\n",
       "      <th>smoking_status</th>\n",
       "      <th>stroke</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>9046</td>\n",
       "      <td>Male</td>\n",
       "      <td>67.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>228.69</td>\n",
       "      <td>36.6</td>\n",
       "      <td>formerly smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>51676</td>\n",
       "      <td>Female</td>\n",
       "      <td>61.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>202.21</td>\n",
       "      <td>28.1</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>31112</td>\n",
       "      <td>Male</td>\n",
       "      <td>80.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>105.92</td>\n",
       "      <td>32.5</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60182</td>\n",
       "      <td>Female</td>\n",
       "      <td>49.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>171.23</td>\n",
       "      <td>34.4</td>\n",
       "      <td>smokes</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1665</td>\n",
       "      <td>Female</td>\n",
       "      <td>79.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>174.12</td>\n",
       "      <td>24.0</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5105</th>\n",
       "      <td>18234</td>\n",
       "      <td>Female</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>83.75</td>\n",
       "      <td>28.1</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5106</th>\n",
       "      <td>44873</td>\n",
       "      <td>Female</td>\n",
       "      <td>81.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Urban</td>\n",
       "      <td>125.20</td>\n",
       "      <td>40.0</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5107</th>\n",
       "      <td>19723</td>\n",
       "      <td>Female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>82.99</td>\n",
       "      <td>30.6</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5108</th>\n",
       "      <td>37544</td>\n",
       "      <td>Male</td>\n",
       "      <td>51.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>166.29</td>\n",
       "      <td>25.6</td>\n",
       "      <td>formerly smoked</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5109</th>\n",
       "      <td>44679</td>\n",
       "      <td>Female</td>\n",
       "      <td>44.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Govt_job</td>\n",
       "      <td>Urban</td>\n",
       "      <td>85.28</td>\n",
       "      <td>26.2</td>\n",
       "      <td>Unknown</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5110 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         id  gender   age  hypertension  heart_disease ever_married  \\\n",
       "0      9046    Male  67.0             0              1          Yes   \n",
       "1     51676  Female  61.0             0              0          Yes   \n",
       "2     31112    Male  80.0             0              1          Yes   \n",
       "3     60182  Female  49.0             0              0          Yes   \n",
       "4      1665  Female  79.0             1              0          Yes   \n",
       "...     ...     ...   ...           ...            ...          ...   \n",
       "5105  18234  Female  80.0             1              0          Yes   \n",
       "5106  44873  Female  81.0             0              0          Yes   \n",
       "5107  19723  Female  35.0             0              0          Yes   \n",
       "5108  37544    Male  51.0             0              0          Yes   \n",
       "5109  44679  Female  44.0             0              0          Yes   \n",
       "\n",
       "          work_type Residence_type  avg_glucose_level   bmi   smoking_status  \\\n",
       "0           Private          Urban             228.69  36.6  formerly smoked   \n",
       "1     Self-employed          Rural             202.21  28.1     never smoked   \n",
       "2           Private          Rural             105.92  32.5     never smoked   \n",
       "3           Private          Urban             171.23  34.4           smokes   \n",
       "4     Self-employed          Rural             174.12  24.0     never smoked   \n",
       "...             ...            ...                ...   ...              ...   \n",
       "5105        Private          Urban              83.75  28.1     never smoked   \n",
       "5106  Self-employed          Urban             125.20  40.0     never smoked   \n",
       "5107  Self-employed          Rural              82.99  30.6     never smoked   \n",
       "5108        Private          Rural             166.29  25.6  formerly smoked   \n",
       "5109       Govt_job          Urban              85.28  26.2          Unknown   \n",
       "\n",
       "      stroke  \n",
       "0          1  \n",
       "1          1  \n",
       "2          1  \n",
       "3          1  \n",
       "4          1  \n",
       "...      ...  \n",
       "5105       0  \n",
       "5106       0  \n",
       "5107       0  \n",
       "5108       0  \n",
       "5109       0  \n",
       "\n",
       "[5110 rows x 12 columns]"
      ]
     },
     "execution_count": 219,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#data_after_handle_missing_values_by_mean = df['bmi'].fillna(df['bmi'].mean(), inplace=False)  # to handle nulls by mean for numeric data (not affect data. inplace = false)\n",
    "#print(data_after_handle_missing_values_by_mean)\n",
    "\n",
    "#data_after_handle_missing_values_by_median = df['bmi'].fillna(df['bmi'].median(), inplace=True)  # to handle nulls by median for numeric data (not affect data. inplace = true)\n",
    "#print(data_after_handle_missing_values_by_median)\n",
    "\n",
    "df['bmi'] = df['bmi'].fillna(df['bmi'].median())  # to handle nulls by median for numeric data (inplace = true)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "id": "abb1cac8-d050-4c3b-98a3-c4c8811a05d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id                   0.0\n",
      "gender               0.0\n",
      "age                  0.0\n",
      "hypertension         0.0\n",
      "heart_disease        0.0\n",
      "ever_married         0.0\n",
      "work_type            0.0\n",
      "Residence_type       0.0\n",
      "avg_glucose_level    0.0\n",
      "bmi                  0.0\n",
      "smoking_status       0.0\n",
      "stroke               0.0\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print((df.isnull().sum() / len(df)) * 100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "id": "7b3b995f-fbfa-4f35-96f0-151504802f94",
   "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>id</th>\n",
       "      <th>gender</th>\n",
       "      <th>age</th>\n",
       "      <th>hypertension</th>\n",
       "      <th>heart_disease</th>\n",
       "      <th>ever_married</th>\n",
       "      <th>work_type</th>\n",
       "      <th>Residence_type</th>\n",
       "      <th>avg_glucose_level</th>\n",
       "      <th>bmi</th>\n",
       "      <th>smoking_status</th>\n",
       "      <th>stroke</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>9046</td>\n",
       "      <td>Male</td>\n",
       "      <td>67.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>228.69</td>\n",
       "      <td>36.6</td>\n",
       "      <td>formerly smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>51676</td>\n",
       "      <td>Female</td>\n",
       "      <td>61.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>202.21</td>\n",
       "      <td>28.1</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>31112</td>\n",
       "      <td>Male</td>\n",
       "      <td>80.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>105.92</td>\n",
       "      <td>32.5</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60182</td>\n",
       "      <td>Female</td>\n",
       "      <td>49.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>171.23</td>\n",
       "      <td>34.4</td>\n",
       "      <td>smokes</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1665</td>\n",
       "      <td>Female</td>\n",
       "      <td>79.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>174.12</td>\n",
       "      <td>24.0</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>56669</td>\n",
       "      <td>Male</td>\n",
       "      <td>81.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>186.21</td>\n",
       "      <td>29.0</td>\n",
       "      <td>formerly smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>53882</td>\n",
       "      <td>Male</td>\n",
       "      <td>74.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>70.09</td>\n",
       "      <td>27.4</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>10434</td>\n",
       "      <td>Female</td>\n",
       "      <td>69.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>No</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>94.39</td>\n",
       "      <td>22.8</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>27419</td>\n",
       "      <td>Female</td>\n",
       "      <td>59.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>76.15</td>\n",
       "      <td>28.1</td>\n",
       "      <td>Unknown</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>60491</td>\n",
       "      <td>Female</td>\n",
       "      <td>78.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>58.57</td>\n",
       "      <td>24.2</td>\n",
       "      <td>Unknown</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      id  gender   age  hypertension  heart_disease ever_married  \\\n",
       "0   9046    Male  67.0             0              1          Yes   \n",
       "1  51676  Female  61.0             0              0          Yes   \n",
       "2  31112    Male  80.0             0              1          Yes   \n",
       "3  60182  Female  49.0             0              0          Yes   \n",
       "4   1665  Female  79.0             1              0          Yes   \n",
       "5  56669    Male  81.0             0              0          Yes   \n",
       "6  53882    Male  74.0             1              1          Yes   \n",
       "7  10434  Female  69.0             0              0           No   \n",
       "8  27419  Female  59.0             0              0          Yes   \n",
       "9  60491  Female  78.0             0              0          Yes   \n",
       "\n",
       "       work_type Residence_type  avg_glucose_level   bmi   smoking_status  \\\n",
       "0        Private          Urban             228.69  36.6  formerly smoked   \n",
       "1  Self-employed          Rural             202.21  28.1     never smoked   \n",
       "2        Private          Rural             105.92  32.5     never smoked   \n",
       "3        Private          Urban             171.23  34.4           smokes   \n",
       "4  Self-employed          Rural             174.12  24.0     never smoked   \n",
       "5        Private          Urban             186.21  29.0  formerly smoked   \n",
       "6        Private          Rural              70.09  27.4     never smoked   \n",
       "7        Private          Urban              94.39  22.8     never smoked   \n",
       "8        Private          Rural              76.15  28.1          Unknown   \n",
       "9        Private          Urban              58.57  24.2          Unknown   \n",
       "\n",
       "   stroke  \n",
       "0       1  \n",
       "1       1  \n",
       "2       1  \n",
       "3       1  \n",
       "4       1  \n",
       "5       1  \n",
       "6       1  \n",
       "7       1  \n",
       "8       1  \n",
       "9       1  "
      ]
     },
     "execution_count": 221,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "id": "621acc9b-0bc3-4974-a29a-a6ae6ac6ae5d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# handling outliers\n",
    "#detect outliers and replace with null value\n",
    "data = df.copy()\n",
    "\n",
    "def replace_outliers_with_null(column):\n",
    "    Q1 = column.quantile(0.25)\n",
    "    Q3 = column.quantile(0.75)\n",
    "    IQR = Q3 - Q1\n",
    "    lower_bound = Q1 - 1.5 * IQR\n",
    "    upper_bound = Q3 + 1.5 * IQR\n",
    "    \n",
    "    return column.where((column < lower_bound) | (column > upper_bound), np.nan)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "id": "01327e2a-0db6-4776-8a3b-83b034d62f45",
   "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>id</th>\n",
       "      <th>gender</th>\n",
       "      <th>age</th>\n",
       "      <th>hypertension</th>\n",
       "      <th>heart_disease</th>\n",
       "      <th>ever_married</th>\n",
       "      <th>work_type</th>\n",
       "      <th>Residence_type</th>\n",
       "      <th>avg_glucose_level</th>\n",
       "      <th>bmi</th>\n",
       "      <th>smoking_status</th>\n",
       "      <th>stroke</th>\n",
       "      <th>id_outlier</th>\n",
       "      <th>age_outlier</th>\n",
       "      <th>hypertension_outlier</th>\n",
       "      <th>heart_disease_outlier</th>\n",
       "      <th>avg_glucose_level_outlier</th>\n",
       "      <th>bmi_outlier</th>\n",
       "      <th>stroke_outlier</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>9046</td>\n",
       "      <td>Male</td>\n",
       "      <td>67.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>228.69</td>\n",
       "      <td>36.6</td>\n",
       "      <td>formerly smoked</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>228.69</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>51676</td>\n",
       "      <td>Female</td>\n",
       "      <td>61.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>202.21</td>\n",
       "      <td>28.1</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>202.21</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>31112</td>\n",
       "      <td>Male</td>\n",
       "      <td>80.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>105.92</td>\n",
       "      <td>32.5</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60182</td>\n",
       "      <td>Female</td>\n",
       "      <td>49.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>171.23</td>\n",
       "      <td>34.4</td>\n",
       "      <td>smokes</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>171.23</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1665</td>\n",
       "      <td>Female</td>\n",
       "      <td>79.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>174.12</td>\n",
       "      <td>24.0</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>174.12</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5091</th>\n",
       "      <td>6369</td>\n",
       "      <td>Male</td>\n",
       "      <td>59.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Rural</td>\n",
       "      <td>95.05</td>\n",
       "      <td>30.9</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5093</th>\n",
       "      <td>32235</td>\n",
       "      <td>Female</td>\n",
       "      <td>45.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Govt_job</td>\n",
       "      <td>Rural</td>\n",
       "      <td>95.02</td>\n",
       "      <td>28.1</td>\n",
       "      <td>smokes</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5100</th>\n",
       "      <td>68398</td>\n",
       "      <td>Male</td>\n",
       "      <td>82.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Self-employed</td>\n",
       "      <td>Rural</td>\n",
       "      <td>71.97</td>\n",
       "      <td>28.3</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5103</th>\n",
       "      <td>22127</td>\n",
       "      <td>Female</td>\n",
       "      <td>18.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>No</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>82.85</td>\n",
       "      <td>46.9</td>\n",
       "      <td>Unknown</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>46.9</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5105</th>\n",
       "      <td>18234</td>\n",
       "      <td>Female</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Private</td>\n",
       "      <td>Urban</td>\n",
       "      <td>83.75</td>\n",
       "      <td>28.1</td>\n",
       "      <td>never smoked</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1296 rows × 19 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         id  gender   age  hypertension  heart_disease ever_married  \\\n",
       "0      9046    Male  67.0             0              1          Yes   \n",
       "1     51676  Female  61.0             0              0          Yes   \n",
       "2     31112    Male  80.0             0              1          Yes   \n",
       "3     60182  Female  49.0             0              0          Yes   \n",
       "4      1665  Female  79.0             1              0          Yes   \n",
       "...     ...     ...   ...           ...            ...          ...   \n",
       "5091   6369    Male  59.0             1              0          Yes   \n",
       "5093  32235  Female  45.0             1              0          Yes   \n",
       "5100  68398    Male  82.0             1              0          Yes   \n",
       "5103  22127  Female  18.0             0              0           No   \n",
       "5105  18234  Female  80.0             1              0          Yes   \n",
       "\n",
       "          work_type Residence_type  avg_glucose_level   bmi   smoking_status  \\\n",
       "0           Private          Urban             228.69  36.6  formerly smoked   \n",
       "1     Self-employed          Rural             202.21  28.1     never smoked   \n",
       "2           Private          Rural             105.92  32.5     never smoked   \n",
       "3           Private          Urban             171.23  34.4           smokes   \n",
       "4     Self-employed          Rural             174.12  24.0     never smoked   \n",
       "...             ...            ...                ...   ...              ...   \n",
       "5091        Private          Rural              95.05  30.9     never smoked   \n",
       "5093       Govt_job          Rural              95.02  28.1           smokes   \n",
       "5100  Self-employed          Rural              71.97  28.3     never smoked   \n",
       "5103        Private          Urban              82.85  46.9          Unknown   \n",
       "5105        Private          Urban              83.75  28.1     never smoked   \n",
       "\n",
       "      stroke  id_outlier  age_outlier  hypertension_outlier  \\\n",
       "0          1         NaN          NaN                   NaN   \n",
       "1          1         NaN          NaN                   NaN   \n",
       "2          1         NaN          NaN                   NaN   \n",
       "3          1         NaN          NaN                   NaN   \n",
       "4          1         NaN          NaN                   1.0   \n",
       "...      ...         ...          ...                   ...   \n",
       "5091       0         NaN          NaN                   1.0   \n",
       "5093       0         NaN          NaN                   1.0   \n",
       "5100       0         NaN          NaN                   1.0   \n",
       "5103       0         NaN          NaN                   NaN   \n",
       "5105       0         NaN          NaN                   1.0   \n",
       "\n",
       "      heart_disease_outlier  avg_glucose_level_outlier  bmi_outlier  \\\n",
       "0                       1.0                     228.69          NaN   \n",
       "1                       NaN                     202.21          NaN   \n",
       "2                       1.0                        NaN          NaN   \n",
       "3                       NaN                     171.23          NaN   \n",
       "4                       NaN                     174.12          NaN   \n",
       "...                     ...                        ...          ...   \n",
       "5091                    NaN                        NaN          NaN   \n",
       "5093                    NaN                        NaN          NaN   \n",
       "5100                    NaN                        NaN          NaN   \n",
       "5103                    NaN                        NaN         46.9   \n",
       "5105                    NaN                        NaN          NaN   \n",
       "\n",
       "      stroke_outlier  \n",
       "0                1.0  \n",
       "1                1.0  \n",
       "2                1.0  \n",
       "3                1.0  \n",
       "4                1.0  \n",
       "...              ...  \n",
       "5091             NaN  \n",
       "5093             NaN  \n",
       "5100             NaN  \n",
       "5103             NaN  \n",
       "5105             NaN  \n",
       "\n",
       "[1296 rows x 19 columns]"
      ]
     },
     "execution_count": 223,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# print outliers\n",
    "for col in data.select_dtypes(include=np.number).columns:   # for loop for numerical columns\n",
    "    data[f'{col}_outlier'] = replace_outliers_with_null(data[col])\n",
    "    \n",
    "out_liers_only = data[data.filter(like='_outlier').any(axis = 1)]\n",
    "out_liers_only"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "id": "bfe98077-5441-442c-8d78-04c4d699760a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id                              0\n",
       "gender                          0\n",
       "age                             0\n",
       "hypertension                    0\n",
       "heart_disease                   0\n",
       "ever_married                    0\n",
       "work_type                       0\n",
       "Residence_type                  0\n",
       "avg_glucose_level               0\n",
       "bmi                             0\n",
       "smoking_status                  0\n",
       "stroke                          0\n",
       "id_outlier                   5110\n",
       "age_outlier                  5110\n",
       "hypertension_outlier         4612\n",
       "heart_disease_outlier        4834\n",
       "avg_glucose_level_outlier    4483\n",
       "bmi_outlier                  4984\n",
       "stroke_outlier               4861\n",
       "dtype: int64"
      ]
     },
     "execution_count": 224,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# sum of null values in each column\n",
    "null_count = data.isnull().sum()\n",
    "null_count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 225,
   "id": "080a1a40-75fc-4de8-9be8-792e8ae34e11",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "original data: \n",
      "5110\n",
      "cleaned data: (without ouliers)\n",
      "3814\n"
     ]
    }
   ],
   "source": [
    "# remove outliers rows\n",
    "outliers_data = df.select_dtypes(include=np.number).copy()\n",
    "\n",
    "def remove_out_liers_IQR(outliers_data):\n",
    "    Q1 = outliers_data.quantile(0.25)\n",
    "    Q3 = outliers_data.quantile(0.75)\n",
    "    IQR = Q3 - Q1\n",
    "    lower_bound = Q1 - 1.5 * IQR\n",
    "    upper_bound = Q3 + 1.5 * IQR\n",
    "    data_to_be_clean = outliers_data[~((outliers_data < lower_bound) | (outliers_data > upper_bound)).any(axis = 1)]\n",
    "    return data_to_be_clean\n",
    "\n",
    "cleaned_data = remove_out_liers_IQR(outliers_data)\n",
    "print(\"original data: \")\n",
    "print(len(outliers_data))\n",
    "print(\"cleaned data: (without ouliers)\")\n",
    "print(len(cleaned_data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "id": "c0cfbaaa-5ee8-4237-9bbc-e5c0f715f8d0",
   "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>id</th>\n",
       "      <th>age</th>\n",
       "      <th>hypertension</th>\n",
       "      <th>heart_disease</th>\n",
       "      <th>avg_glucose_level</th>\n",
       "      <th>bmi</th>\n",
       "      <th>stroke</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>249</th>\n",
       "      <td>30669</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>95.12</td>\n",
       "      <td>18.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>251</th>\n",
       "      <td>16523</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>110.89</td>\n",
       "      <td>17.6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>252</th>\n",
       "      <td>56543</td>\n",
       "      <td>70.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>69.04</td>\n",
       "      <td>35.9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>253</th>\n",
       "      <td>46136</td>\n",
       "      <td>14.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>161.28</td>\n",
       "      <td>19.1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>255</th>\n",
       "      <td>52800</td>\n",
       "      <td>52.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>77.59</td>\n",
       "      <td>17.7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>257</th>\n",
       "      <td>15266</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>77.67</td>\n",
       "      <td>32.3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>259</th>\n",
       "      <td>10460</td>\n",
       "      <td>79.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>77.08</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261</th>\n",
       "      <td>63884</td>\n",
       "      <td>37.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>162.96</td>\n",
       "      <td>39.4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>262</th>\n",
       "      <td>37893</td>\n",
       "      <td>37.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>73.50</td>\n",
       "      <td>26.1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>263</th>\n",
       "      <td>67855</td>\n",
       "      <td>40.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>95.04</td>\n",
       "      <td>42.4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        id   age  hypertension  heart_disease  avg_glucose_level   bmi  stroke\n",
       "249  30669   3.0             0              0              95.12  18.0       0\n",
       "251  16523   8.0             0              0             110.89  17.6       0\n",
       "252  56543  70.0             0              0              69.04  35.9       0\n",
       "253  46136  14.0             0              0             161.28  19.1       0\n",
       "255  52800  52.0             0              0              77.59  17.7       0\n",
       "257  15266  32.0             0              0              77.67  32.3       0\n",
       "259  10460  79.0             0              0              77.08  35.0       0\n",
       "261  63884  37.0             0              0             162.96  39.4       0\n",
       "262  37893  37.0             0              0              73.50  26.1       0\n",
       "263  67855  40.0             0              0              95.04  42.4       0"
      ]
     },
     "execution_count": 226,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cleaned_data.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "id": "f3f87c13-a00a-4d97-a38c-3863536a7d8c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gender         Female  Male  Other\n",
      "heart_disease                     \n",
      "0                2881  1952      1\n",
      "1                 113   163      0\n"
     ]
    }
   ],
   "source": [
    "# visualize \n",
    "gender_class_count = df.groupby(['heart_disease' , 'gender']).size().unstack(fill_value=0)\n",
    "print(gender_class_count)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "id": "f0860eb0-69dc-407a-98c5-efd02ad2fac0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yMhIjB49Gvfv38eQIUPEfhkZGYiMjISrq2u51lkdeMqMiIgko7JvlFjZvvnmGyiVSnh5eeH58+do164djh49itq1awMA6tati6CgIHzxxRcYNWoUvL29sWHDhlKXK5PJcOjQIcyaNQujRo3C48ePYWlpiW7dusHCwqLcdY4dOxabNm2Cn58fAEAul+PatWvYuHEjnjx5AhMTE7Rv3x4nT55E8+bNxfn++OMP1KtXD127di33OquaTBAEQd1F1HSpqakwMjJCSkoKDA0N1V1OtbL74qC6SyiTuG/6qrsEIqohsrKycOfOnRLvpUOvJzMzE02aNMH27dvh7Oxc5vk6deqEzz77DMOHD6+0Wkr6fZfn+5unzIiIiKhcdHV1sWnTJjx58qTM8zx58gSDBg3CRx99VIWVVRxPmREREVG5de/evVz9TU1NMWPGjKopphLwCBERERFJHgMRERERSR4DERERvZV4zZA0VNbvmYGIiIjeKgV3bK6Jj4egypeTkwPgxaX/r4ODqomI6K0il8thbGwsPsdLT0+vyOdu0ZtPqVTi8ePH0NPTg6bm60UaBiIiInrrWFpaAoAYiujtpaGhgXr16r126GUgIiKit45MJoOVlRXMzc2Rm5ur7nKoCikUCmhovP4IIAYiIiJ6a8nl8tceW0LSwEHVREREJHkMRERERCR5DEREREQkeQxEREREJHkMRERERCR5DEREREQkeQxEREREJHkMRERERCR5DEREREQkeQxEREREJHkMRERERCR5DEREREQkeQxEREREJHkMRERERCR5DEREREQkeQxEREREJHkMRERERCR5DEREREQkeQxEREREJHkMRERERCR5DEREREQkeQxEREREJHkMRERERCR5ag1EwcHBaN++PWrVqgVzc3MMGDAA169fV+mTlZUFX19fmJiYwMDAAIMHD8ajR49U+sTHx6Nv377Q09ODubk5pk+fjry8PJU+4eHhaNu2LbS1tdGwYUNs2LChqjePiIiI3hBqDUQnTpyAr68v/v77b4SGhiI3Nxeurq5IT08X+0yZMgX/+9//sHPnTpw4cQIPHjzAoEGDxOn5+fno27cvcnJycObMGWzcuBEbNmzAnDlzxD537txB37590aNHD0RFRWHy5MkYO3Ysjh49Wq3bS0RERDWTTBAEQd1FFHj8+DHMzc1x4sQJdOvWDSkp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oFQqX7soIiIioupUoUDUs2dPfP7553jw4IHYdv/+fUyZMqVK7w9EREREVBUqFIhWrVqF1NRU2NnZoUGDBmjQoAHs7e2RmpqKlStXVnaNRERERFWqQmOIbGxs8M8//+DYsWO4du0agBeXwLu4uFRqcURERETVoVxHiI4fPw4HBwekpqZCJpOhd+/emDRpEiZNmoT27dujefPmOHnyZFXVSkRERFQlyhWIVqxYgXHjxhV56ZqRkRE++eQTLFu2rNKKIyIiIqoO5QpEly5dgru7e7HTXV1dERkZ+dpFEREREVWncgWiR48elfigNE1NTTx+/Pi1iyIiIiKqTuUKRHXr1kVMTEyx0y9fviw+eJWIiIjoTVGuQNSnTx989dVXyMrKKjQtMzMTc+fORb9+/SqtOCIiIqLqUK7L7mfPno09e/agcePG8PPzQ5MmTQAA165dww8//ID8/HzMmjWrSgolIiIiqirlCkQWFhY4c+YMJk6ciICAABQ8F1Ymk8HNzQ0//PADLCwsqqRQIiIioqpS7hsz2tra4tChQ3j27Blu3boFQRDQqFEj1K5duyrqIyIiIqpyFbpTNQDUrl0b7du3r8xaiIiIiNSiQs8yIyIiInqbMBARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5DEQERERkeQxEBEREZHkMRARERGR5Kk1EP3111/w9PSEtbU1ZDIZ9u3bpzJdEATMmTMHVlZW0NXVhYuLC27evKnSJykpCSNGjIChoSGMjY0xZswYpKWlqfS5fPkyunbtCh0dHdjY2GDRokVVvWlERET0BlFrIEpPT0erVq3www8/FDl90aJF+P7777FmzRqcPXsW+vr6cHNzQ1ZWlthnxIgRuHLlCkJDQ3HgwAH89ddfGD9+vDg9NTUVrq6usLW1RWRkJBYvXozAwECsXbu2yrePiIiI3gya6ly5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7hJKJ7G/HSIidSvPd3aNvuz+VWlpabh9+zasrKzg5OQELS0thIWFidOvX7+O+Ph4ODs7AwCcnZ0RHR2NxMREsU9oaCgMDQ3h4OBQ7fUTERFRzVSjjxBNmzYNnp6esLW1xYMHDzB37lzI5XJ89NFHMDIywpgxY+Dv7486derA0NAQkyZNgrOzMzp16gQAcHV1hYODA7y8vLBo0SIkJCRg9uzZ8PX1LfIIEBEREUlTjQ5E9+7dw0cffYSnT5/CzMwMXbp0wd9//w0zMzMAwPLly6GhoYHBgwcjOzsbbm5u+PHHH8X55XI5Dhw4gIkTJ8LZ2Rn6+vrw8fHBvHnz1LVJREREVAPJBEF4M66rVqPU1FQYGRkhJSVFcoOq7b44qO4SyiROZ7i6SyhdYIq6KyAikpTyfH+/UWOIiIiIiKoCAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJnqa6CyAiIipRoJG6KyhdYIq6K6DXxCNEREREJHkMRERERCR5DEREREQkeQxEREREJHkMRERERCR5vMqMiEii7L44qO4SyiROR90VkBTwCBERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSR4DEREREUkeAxERERFJHgMRERERSZ6kAtEPP/wAOzs76OjooGPHjjh37py6SyIiIqIaQDKBaPv27fD398fcuXPxzz//oFWrVnBzc0NiYqK6SyMiIiI1k0wgWrZsGcaNG4dRo0bBwcEBa9asgZ6eHn799Vd1l0ZERERqJolAlJOTg8jISLi4uIhtGhoacHFxQUREhBorIyIioppAEg93ffLkCfLz82FhYaHSbmFhgWvXrhXqn52djezsbPF9SkoKACApKQm5ublVW2wNo5mXru4SyuRpjkLdJZTKZU0bdZdQqmNDjqm7BKpG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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gender_class_count.plot(kind='bar')\n",
    "\n",
    "# Adding title and labels\n",
    "plt.title('Heart Disease Count by Gender')\n",
    "plt.xlabel('Heart Disease')\n",
    "plt.ylabel('Count')\n",
    "plt.legend(title='Gender', labels=['Male (1)', 'Female (2)' , 'other (3)'])\n",
    "plt.xticks(rotation=20)\n",
    "plt.grid(axis = 'y')\n",
    "\n",
    "# Display the plot\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f3caf833-fbf9-441a-9083-e5080311bfef",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
