{
"cells": [
{
"cell_type": "code",
"execution_count": 224,
"id": "23296b19-b819-49ea-a95b-00a2b3ed1840",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: scikit-learn in /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (1.2.2)\n",
"Requirement already satisfied: numpy>=1.17.3 in /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from scikit-learn) (1.25.0)\n",
"Requirement already satisfied: scipy>=1.3.2 in /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from scikit-learn) (1.10.1)\n",
"Requirement already satisfied: joblib>=1.1.1 in /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from scikit-learn) (1.2.0)\n",
"Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from scikit-learn) (3.1.0)\n"
]
}
],
"source": [
"!pip install scikit-learn"
]
},
{
"cell_type": "code",
"execution_count": 249,
"id": "ba97b632-b1b5-48ac-b3a7-3d14dd2ab7ef",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import pandas as pd\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.preprocessing import LabelEncoder\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import accuracy_score\n",
"from sklearn import tree\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"id": "0018cbce-f858-4863-a25e-6abe28261112",
"metadata": {},
"source": [
"## Loading Data"
]
},
{
"cell_type": "code",
"execution_count": 226,
"id": "74e2ecec-5ba3-405b-ae99-6b6a51d54e26",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Age \n",
" Gender \n",
" Income \n",
" Favorite Transport \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 5 \n",
" female \n",
" NaN \n",
" bicycle \n",
" \n",
" \n",
" 1 \n",
" 8 \n",
" male \n",
" NaN \n",
" scooter \n",
" \n",
" \n",
" 2 \n",
" 10 \n",
" female \n",
" NaN \n",
" bicycle \n",
" \n",
" \n",
" 3 \n",
" 14 \n",
" male \n",
" NaN \n",
" metro \n",
" \n",
" \n",
" 4 \n",
" 16 \n",
" male \n",
" NaN \n",
" metro \n",
" \n",
" \n",
" 5 \n",
" 18 \n",
" female \n",
" NaN \n",
" metro \n",
" \n",
" \n",
" 6 \n",
" 20 \n",
" male \n",
" 200.0 \n",
" scooter \n",
" \n",
" \n",
" 7 \n",
" 22 \n",
" female \n",
" 500.0 \n",
" scooter \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Age Gender Income Favorite Transport\n",
"0 5 female NaN bicycle\n",
"1 8 male NaN scooter\n",
"2 10 female NaN bicycle\n",
"3 14 male NaN metro\n",
"4 16 male NaN metro\n",
"5 18 female NaN metro\n",
"6 20 male 200.0 scooter\n",
"7 22 female 500.0 scooter"
]
},
"execution_count": 226,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('vehicles.csv')\n",
"df.head(8)"
]
},
{
"cell_type": "code",
"execution_count": 227,
"id": "9d56d497-2fc5-4724-8f4a-47ef6fb09f58",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Age int64\n",
"Gender object\n",
"Income float64\n",
"Favorite Transport object\n",
"dtype: object"
]
},
"execution_count": 227,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "markdown",
"id": "fab98c7a-a6ef-4583-bde6-e28d11fc6c54",
"metadata": {},
"source": [
"## Cleaning"
]
},
{
"cell_type": "code",
"execution_count": 228,
"id": "60b8aea3-47ae-4457-91b2-6698cb0442b5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Age 0\n",
"Gender 0\n",
"Income 6\n",
"Favorite Transport 0\n",
"dtype: int64"
]
},
"execution_count": 228,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 229,
"id": "d0deb832-8d8e-499f-98d1-0d2181aca231",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Age \n",
" Gender \n",
" Income \n",
" Favorite Transport \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 5 \n",
" female \n",
" 0.0 \n",
" bicycle \n",
" \n",
" \n",
" 1 \n",
" 8 \n",
" male \n",
" 0.0 \n",
" scooter \n",
" \n",
" \n",
" 2 \n",
" 10 \n",
" female \n",
" 0.0 \n",
" bicycle \n",
" \n",
" \n",
" 3 \n",
" 14 \n",
" male \n",
" 0.0 \n",
" metro \n",
" \n",
" \n",
" 4 \n",
" 16 \n",
" male \n",
" 0.0 \n",
" metro \n",
" \n",
" \n",
" 5 \n",
" 18 \n",
" female \n",
" 0.0 \n",
" metro \n",
" \n",
" \n",
" 6 \n",
" 20 \n",
" male \n",
" 200.0 \n",
" scooter \n",
" \n",
" \n",
" 7 \n",
" 22 \n",
" female \n",
" 500.0 \n",
" scooter \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Age Gender Income Favorite Transport\n",
"0 5 female 0.0 bicycle\n",
"1 8 male 0.0 scooter\n",
"2 10 female 0.0 bicycle\n",
"3 14 male 0.0 metro\n",
"4 16 male 0.0 metro\n",
"5 18 female 0.0 metro\n",
"6 20 male 200.0 scooter\n",
"7 22 female 500.0 scooter"
]
},
"execution_count": 229,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Income'].fillna(0.0, inplace=True)\n",
"df.head(8)"
]
},
{
"cell_type": "code",
"execution_count": 230,
"id": "558e2185-9d4f-49a8-811d-e99b03f3b2c9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Age 0\n",
"Gender 0\n",
"Income 0\n",
"Favorite Transport 0\n",
"dtype: int64"
]
},
"execution_count": 230,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isnull().sum()"
]
},
{
"cell_type": "markdown",
"id": "e3fbf5ee-f577-46a5-825a-fa62908aa360",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Encoding"
]
},
{
"cell_type": "code",
"execution_count": 231,
"id": "30954355-f1e9-498c-bda7-37bccfa5a418",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['female', 'male'], dtype=object)"
]
},
"execution_count": 231,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Gender'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 232,
"id": "ddbe3c0d-9d65-4386-b3e5-bc0ca620910b",
"metadata": {},
"outputs": [],
"source": [
"# # OPTION 1\n",
"# df.replace({\n",
"# 'Gender': {\n",
"# 'male': 0,\n",
"# 'female': 1\n",
"# }\n",
"# }, inplace=True)\n",
"# df.head()"
]
},
{
"cell_type": "code",
"execution_count": 233,
"id": "7b702899-a787-49f0-866d-883fe016286f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Age \n",
" Gender \n",
" Income \n",
" Favorite Transport \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 5 \n",
" 0 \n",
" 0.0 \n",
" bicycle \n",
" \n",
" \n",
" 1 \n",
" 8 \n",
" 1 \n",
" 0.0 \n",
" scooter \n",
" \n",
" \n",
" 2 \n",
" 10 \n",
" 0 \n",
" 0.0 \n",
" bicycle \n",
" \n",
" \n",
" 3 \n",
" 14 \n",
" 1 \n",
" 0.0 \n",
" metro \n",
" \n",
" \n",
" 4 \n",
" 16 \n",
" 1 \n",
" 0.0 \n",
" metro \n",
" \n",
" \n",
" 5 \n",
" 18 \n",
" 0 \n",
" 0.0 \n",
" metro \n",
" \n",
" \n",
" 6 \n",
" 20 \n",
" 1 \n",
" 200.0 \n",
" scooter \n",
" \n",
" \n",
" 7 \n",
" 22 \n",
" 0 \n",
" 500.0 \n",
" scooter \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Age Gender Income Favorite Transport\n",
"0 5 0 0.0 bicycle\n",
"1 8 1 0.0 scooter\n",
"2 10 0 0.0 bicycle\n",
"3 14 1 0.0 metro\n",
"4 16 1 0.0 metro\n",
"5 18 0 0.0 metro\n",
"6 20 1 200.0 scooter\n",
"7 22 0 500.0 scooter"
]
},
"execution_count": 233,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# OPTION 2\n",
"label_encoder = LabelEncoder()\n",
"df['Gender'] = label_encoder.fit_transform(df['Gender'])\n",
"df.head(8)"
]
},
{
"cell_type": "code",
"execution_count": 234,
"id": "2738a4db-ddf7-4cb5-a925-8a1783c94ea3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Age int64\n",
"Gender int64\n",
"Income float64\n",
"Favorite Transport object\n",
"dtype: object"
]
},
"execution_count": 234,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "markdown",
"id": "c738286a-bc6f-40cb-9638-01b6bd35013a",
"metadata": {},
"source": [
"## Model"
]
},
{
"cell_type": "code",
"execution_count": 235,
"id": "7ec00f4b-46fd-449e-a664-42c78edd06e1",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Age \n",
" Gender \n",
" Income \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 5 \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
" 1 \n",
" 8 \n",
" 1 \n",
" 0.0 \n",
" \n",
" \n",
" 2 \n",
" 10 \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Age Gender Income\n",
"0 5 0 0.0\n",
"1 8 1 0.0\n",
"2 10 0 0.0"
]
},
"execution_count": 235,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X = df.drop(columns='Favorite Transport')\n",
"X.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 236,
"id": "9d1f31e2-9795-44b1-8398-e0782875a25b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 bicycle\n",
"1 scooter\n",
"2 bicycle\n",
"Name: Favorite Transport, dtype: object"
]
},
"execution_count": 236,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = df['Favorite Transport']\n",
"y.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 237,
"id": "25a64b54-86e8-4c36-8b48-fd2469e8d88d",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"DecisionTreeClassifier() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
"text/plain": [
"DecisionTreeClassifier()"
]
},
"execution_count": 237,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = DecisionTreeClassifier()\n",
"model"
]
},
{
"cell_type": "code",
"execution_count": 238,
"id": "6f65f956-3a41-4b56-95ff-378146ca3a75",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"DecisionTreeClassifier() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
"text/plain": [
"DecisionTreeClassifier()"
]
},
"execution_count": 238,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(X, y)"
]
},
{
"cell_type": "markdown",
"id": "3b1f9f8f-d013-42a4-92e4-80714309aded",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Prediction"
]
},
{
"cell_type": "code",
"execution_count": 239,
"id": "5e162fb6-7657-4cdf-878f-eb51af5a67a5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Age \n",
" Gender \n",
" Income \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 12 \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
" 1 \n",
" 30 \n",
" 0 \n",
" 4000.0 \n",
" \n",
" \n",
" 2 \n",
" 75 \n",
" 1 \n",
" 50000.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Age Gender Income\n",
"0 12 0 0.0\n",
"1 30 0 4000.0\n",
"2 75 1 50000.0"
]
},
"execution_count": 239,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_df = pd.DataFrame({\n",
" 'Age': [12, 30, 75],\n",
" 'Gender': [0, 0, 1],\n",
" 'Income': [0.0, 4000, 50000]\n",
"})\n",
"test_df"
]
},
{
"cell_type": "code",
"execution_count": 240,
"id": "e91b6190-6284-417a-8604-a2fb0cf9e180",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['bicycle', 'car', 'helicopter'], dtype=object)"
]
},
"execution_count": 240,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.predict(test_df)"
]
},
{
"cell_type": "markdown",
"id": "10e309d8-e47e-46b8-81ab-01ab41e8637e",
"metadata": {},
"source": [
"## Exporting to the DOT file"
]
},
{
"cell_type": "code",
"execution_count": 241,
"id": "2f20590b-2523-48f1-af59-c7410d144d03",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"tree.export_graphviz(model, out_file='decision_tree_model.dot', feature_names=['Age', 'Gender', 'Income'], filled=True, class_names=sorted(y.unique()))"
]
},
{
"cell_type": "markdown",
"id": "3d27849c-a508-4c60-8291-07168fc5b9e2",
"metadata": {},
"source": [
"## Evaluation"
]
},
{
"cell_type": "code",
"execution_count": 242,
"id": "740f03d0-9585-4bdd-9432-5053d2f51fae",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(26, 3)"
]
},
"execution_count": 242,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n",
"X.shape"
]
},
{
"cell_type": "code",
"execution_count": 243,
"id": "4521cc90-c92a-476a-8b14-1460c3922789",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(20, 3)"
]
},
"execution_count": 243,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.shape"
]
},
{
"cell_type": "code",
"execution_count": 244,
"id": "2950dc61-cd35-43ed-8475-156089b32e66",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(6, 3)"
]
},
"execution_count": 244,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 245,
"id": "a21a640a-b237-49f9-9d5a-48fd0e5a991e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"DecisionTreeClassifier() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
"text/plain": [
"DecisionTreeClassifier()"
]
},
"execution_count": 245,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = DecisionTreeClassifier()\n",
"model.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 246,
"id": "be4263fa-61de-4b12-b36c-ece82c021251",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Age \n",
" Gender \n",
" Income \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" 45 \n",
" 1 \n",
" 3000.0 \n",
" \n",
" \n",
" 9 \n",
" 25 \n",
" 0 \n",
" 800.0 \n",
" \n",
" \n",
" 15 \n",
" 47 \n",
" 0 \n",
" 6000.0 \n",
" \n",
" \n",
" 0 \n",
" 5 \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
" 18 \n",
" 56 \n",
" 0 \n",
" 1400.0 \n",
" \n",
" \n",
" 4 \n",
" 16 \n",
" 1 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Age Gender Income\n",
"14 45 1 3000.0\n",
"9 25 0 800.0\n",
"15 47 0 6000.0\n",
"0 5 0 0.0\n",
"18 56 0 1400.0\n",
"4 16 1 0.0"
]
},
"execution_count": 246,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test"
]
},
{
"cell_type": "code",
"execution_count": 247,
"id": "9861518b-5884-4a98-9a3c-bea957e15761",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"array(['car', 'scooter', 'car', 'scooter', 'taxi', 'metro'], dtype=object)"
]
},
"execution_count": 247,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictions = model.predict(X_test)\n",
"predictions"
]
},
{
"cell_type": "code",
"execution_count": 248,
"id": "2755b217-c038-4d57-a471-58f1959e75bd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"0.5"
]
},
"execution_count": 248,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_accuracy_score = accuracy_score(y_test, predictions)\n",
"model_accuracy_score"
]
},
{
"cell_type": "markdown",
"id": "3f49c42f-808f-4f72-b798-ae80949593e4",
"metadata": {},
"source": [
"## Charts"
]
},
{
"cell_type": "code",
"execution_count": 250,
"id": "09994882-7ba1-4f66-93bc-7ffd240d2698",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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mJiozp076+TJk/L19VVUVJQqV66sunXr2m0rSeHh4XrppZckSY0aNVJycrLmzJmjzp07KzExUWlpacrIyLD9XVq+fLmaNWumlJQUtW3bVtKN7p7ly5fbhREnJye5ubnRDQ7cguFdP/+rSpUqatSo0W0HCDo7O8vLy8tuAiqKP/zhDzp48KBtmj9/viTpiy++UKdOnVSnTh15enqqT58+On/+vK1b54knnlDlypX16aefSpJWr14tLy8vRUVFSZKOHDmi5s2b20KKdOMDuaioSEePHrUtCwkJKdF4itTUVE2dOlUeHh62adCgQcrMzLTVeLfatGljN19YWKhXXnlFISEhqlatmjw8PLR58+ZiXcmhoaF2835+fsrKypIk9ezZU1euXFH9+vU1aNAgrVmzplj3VFhYWLH5I0eOSLpxHv39/e3+eQoODlaVKlVsbSSpXr16FfaKCVASpgoqubm5Sk9Pl5+fn9GlAKbj7u6uoKAg2+Tn56cTJ06oW7duCg0N1erVq7V//37buImrV69KuvHf+tNPP60VK1ZIunEF5ZlnnlGlSnd3QfV/g8zdyM3NVVxcnF3ISktL0/Hjx+Xi4lKiff6yljfeeEPz5s3T+PHjtW3bNh08eFBdunSxnYObfjno1mKxqKioSJLk7++vo0ePauHChXJ1ddWQIUMUERFhe7RBaSnpeQQqKkO7fsaMGaPu3burXr16On36tCZPnixHR0f17t3byLKA+8b+/ftVVFSkWbNmycHhxv8dH374YbF20dHR6ty5s7755hv9+9//1rRp02zrmjZtqoSEBOXl5dk+RJOTk+Xg4GAbNHunKleuXOxZNK1atdLRo0cVFBR0ty/vjiUnJ+vJJ5/Us88+K+nG04aPHTum4ODgu9qPq6urunfvru7du2vo0KFq0qSJ0tLS1KpVK0nS7t277drv3r1bTZs2lXTjPJ46dUqnTp2yXVU5fPiwLl68+Jt1ODk58Qwf4DYMDSo//vijevfurfPnz6tGjRp69NFHtXv3bi6LAncoKChI165d05tvvqnu3bsrOTlZb731VrF2ERER8vX1VXR0tAIDA9W+fXvbuujoaE2ePFkxMTGaMmWKzp07p+HDh6tPnz628Sl3KiAgQImJiQoPD5ezs7OqVq2qSZMmqVu3bqpbt66efvppOTg4KDU1VYcOHbILTPeiYcOG+vjj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AADTIqgAAADTIqgAAADTIqgAAADTIqgAAADTIqgAAADTIqgAAADTIqgAAADTIqgAKHORkZEaOXJkibefMmWKWrRoYZvv27evevTocc91ATA/nvUDPABeffbpcj3ehPc/Ltfj/dK8efNU3k//iIyMVIsWLTR37txyPS5Q0RFUANx3vL29jS6hxK5evcrTn4G7QNcPgHJRVFSkcePGqVq1avL19dWUKVNs6y5evKiBAweqRo0a8vLyUseOHZWamnrbff2y66eoqEivv/66goKC5OzsrLp16+rVV1+1rU9LS1PHjh3l6uoqHx8fDR48WLm5ucX2FxcXZ6vh+eef19WrV23rk5KSNG/ePFksFlksFp04cUKSdOjQIXXt2lUeHh6qVauW+vTpo59++sm278jISA0bNkwjR45U9erV1aVLl3s8k0DFQlABUC7effddubu7a8+ePXr99dc1depUbd26VZLUs2dPZWVlaePGjdq/f79atWqlTp066cKFC3e079jYWM2YMUMTJ07U4cOHtWLFCtWqVUuSlJeXpy5duqhq1apKSUnRRx99pC+++ELDhg2z20diYqKOHDmi7du361//+pc++eQTxcXFSbrR1RQWFqZBgwYpMzNTmZmZ8vf318WLF9WxY0e1bNlS+/bt06ZNm3T27Fn16tWr2Gt3cnJScnKy3nrrrXs9lUCFQtcPgHIRGhqqyZMnS5IaNmyo+Ph4JSYmytXVVXv37lVWVpacnZ0lSf/4xz+0du1affzxxxo8ePCv7vfSpUuaN2+e4uPjFRMTI0lq0KCBHn30UUnSihUrlJ+fr+XLl8vd3V2SFB8fr+7du2vmzJm2QOPk5KSlS5fKzc1NzZo109SpUzV27Fi98sor8vb2lpOTk9zc3OTr62s7dnx8vFq2bKnXXnvNtmzp0qXy9/fXsWPH1KhRI9vrff3110vjNAIVDkEFQLkIDQ21m/fz81NWVpZSU1OVm5srHx8fu/VXrlxRenr6b+73yJEjKigoUKdOnW67vnnz5raQIknh4eEqKirS0aNHbUGlefPmcnNzs7UJCwtTbm6uTp06pXr16t1y36mpqdq2bZs8PDyKrUtPT7cFldatW//m6wBwawQVAOWicuXKdvMWi0VFRUXKzc2Vn5+ftm/fXmybKlWq/OZ+XV1dS6nCu5ebm2u7MvNLfn5+tp//NyQBuDsE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WgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWgQVAABgWoYGlR07dqh79+6qXbu2LBaL1q5da2Q5AADAZAwNKnl5eWrevLkWLFhgZBkAAMCkKhl58K5du6pr16533L6goEAFBQW2+ZycnLIoCwAAmIShQeVuTZ8+XXFxcUaXYYiTU0OMLkGq6mV0BQBQpuJHf2Z0CfiF+2owbWxsrLKzs23TqVOnjC4JAACUofvqioqzs7OcnZ2NLgMAAJST++qKCgAAqFgIKgAAwLQM7frJzc3Vd999Z5vPyMjQwYMHVa1aNdWtW9fAygAAgBkYGlT27dunP/zhD7b5UaNGSZJiYmKUkJBgUFUAAMAsDA0qkZGRslqtRpYAAABMjDEqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtAgqAADAtEwRVBYsWKCAgAC5uLioffv22rt3r9ElAQAA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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.countplot(x=df['Gender'], hue=df['Favorite Transport'])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 251,
"id": "d20571d9-7458-4073-ba17-c49267cbe596",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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W7cOffr0wblz59CyZcvylEZERETVSLn2qIwfPx53797FxYsXcfv2bdy+fRuxsbHIycnBhx9++Nzr6d27N3r16gUXFxc0a9YMn376KczMzHDixInylEVERETVTLn2qOzZswcHDhyAq6urNM/NzQ0rV64s98m0xcXF2LRpE+7duwcvL69S2xQWFqKwsFCazsnJKVdfREREVDWUa4+KVquFoaFhifmGhobQarVlWldMTAzMzMxgZGSEMWPGYOvWrXBzcyu17bx582BhYSG97OzsylM+ERERVRHlCiqvv/46JkyYgOvXr0vz/vrrL/z3v/9Ft27dyrSu5s2bIzo6GlFRUfjggw/g7++PuLi4UtsGBQUhOztbeqWlpZWnfCIiIqoiynXoZ8WKFfj3v/8NR0dHaa9GWloaWrVqhR9//LFM61Kr1XB2dgYAtGvXDqdOncKyZcvwzTfflGhrZGQEIyOj8pRMREREVVC5goqdnR3Onj2LAwcO4NKlSwAAV1dX+Pj4vHBBWq1W5zwUIiIiqrnKFFQOHjyIwMBAnDhxAubm5njjjTfwxhtvAACys7PRsmVLfP3113j11Vefa31BQUHo2bMn7O3tcffuXWzYsAGHDx/G3r17y74lREREVO2UKagsXboUAQEBMDc3L7HMwsICo0ePxuLFi587qGRkZGDo0KFIT0+HhYUFPDw8sHfvXin8EBERUc1WpqBy/vx5LFiw4InLu3fvji+++OK51/f999+XpXsiIiKqYcp01c/NmzdLvSz5kdq1a+PWrVsvXBQRERERUMag8tJLLyE2NvaJyy9cuABbW9sXLoqIiIgIKGNQ6dWrF2bNmoWCgoISy/Lz8xEcHIy33nqrwoojIiKimq1M56jMnDkTW7ZsQbNmzRAYGIjmzZsDAC5duoSVK1eiuLgYM2bMqJRCiYiIqOYpU1CxtrbGsWPH8MEHHyAoKAhCCACASqWCr68vVq5cCWtr60oplIiIiGqeMt/wzcHBAbt27cKdO3dw5coVCCHg4uKCunXrVkZ9REREVIOV6860AFC3bl106NChImshIiIi0lGuhxISERER6QODChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESkWgwoREREpFoMKERERKRaDChERESmWrEFl3rx56NChA+rUqYOGDRuib9++SEhIkLMkIiIiUhBZg8qRI0cwbtw4nDhxAvv378f9+/fRvXt33Lt3T86yiIiISCFqy9n5nj17dKbDwsLQsGFDnDlzBp07dy7RvrCwEIWFhdJ0Tk5Opdf4V2YBLNOyK70ffbv+d+GzG1UD8fHxcpdQqaysrGBvby93GURElUbWoPJP2dkPA0G9evVKXT5v3jyEhobqpZasrCwAwIrtKQBS9NKnHO4WFMhdQqW4mZMDFYDBgwfLXUqlMtFoEH/pEsMKEVVbigkqWq0WEydOhLe3N1q1alVqm6CgIEyaNEmazsnJgZ2dXaXUk5eXBwBo3707mjo7VEofcrqSmIwzBw4g/8F9uUupFDn5eRAAPuv9b3Rs0ULucipF4o0bGPvDemRmZjKoEFG1pZigMm7cOMTGxuKPP/54YhsjIyMYGRnpsSqgTt16aNjIVq996sPNW9XvcFZpmlhZwaOSwiwREVU+RQSVwMBA7Ny5E0ePHkXjxo3lLoeIiIgUQtagIoTA+PHjsXXrVhw+fBhOTk5ylkNEREQKI2tQGTduHDZs2IDt27ejTp06uHHjBgDAwsICGo1GztKIiIhIAWS9j8qqVauQnZ2Nrl27wtbWVnr98ssvcpZFRERECiH7oR8iIiKiJ+GzfoiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEYVIiIiEixGFSIiIhIsRhUiIiISLEY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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.histplot(x=df['Income'], hue=df['Favorite Transport'])\n",
"plt.show()"
]
}
],
"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.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}