{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "7a83c7a6-a09a-4b61-8191-4570d5159657",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "64fd2fde-9c86-4a90-a878-6798856dd3bc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" PassengerId \n",
" Survived \n",
" Pclass \n",
" Name \n",
" Sex \n",
" Age \n",
" SibSp \n",
" Parch \n",
" Ticket \n",
" Fare \n",
" Cabin \n",
" Embarked \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 892 \n",
" 0 \n",
" 3 \n",
" Kelly, Mr. James \n",
" male \n",
" 34.5 \n",
" 0 \n",
" 0 \n",
" 330911 \n",
" 7.8292 \n",
" NaN \n",
" Q \n",
" \n",
" \n",
" 1 \n",
" 893 \n",
" 1 \n",
" 3 \n",
" Wilkes, Mrs. James (Ellen Needs) \n",
" female \n",
" 47.0 \n",
" 1 \n",
" 0 \n",
" 363272 \n",
" 7.0000 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 2 \n",
" 894 \n",
" 0 \n",
" 2 \n",
" Myles, Mr. Thomas Francis \n",
" male \n",
" 62.0 \n",
" 0 \n",
" 0 \n",
" 240276 \n",
" 9.6875 \n",
" NaN \n",
" Q \n",
" \n",
" \n",
" 3 \n",
" 895 \n",
" 0 \n",
" 3 \n",
" Wirz, Mr. Albert \n",
" male \n",
" 27.0 \n",
" 0 \n",
" 0 \n",
" 315154 \n",
" 8.6625 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 4 \n",
" 896 \n",
" 1 \n",
" 3 \n",
" Hirvonen, Mrs. Alexander (Helga E Lindqvist) \n",
" female \n",
" 22.0 \n",
" 1 \n",
" 1 \n",
" 3101298 \n",
" 12.2875 \n",
" NaN \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass \\\n",
"0 892 0 3 \n",
"1 893 1 3 \n",
"2 894 0 2 \n",
"3 895 0 3 \n",
"4 896 1 3 \n",
"\n",
" Name Sex Age SibSp Parch \\\n",
"0 Kelly, Mr. James male 34.5 0 0 \n",
"1 Wilkes, Mrs. James (Ellen Needs) female 47.0 1 0 \n",
"2 Myles, Mr. Thomas Francis male 62.0 0 0 \n",
"3 Wirz, Mr. Albert male 27.0 0 0 \n",
"4 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female 22.0 1 1 \n",
"\n",
" Ticket Fare Cabin Embarked \n",
"0 330911 7.8292 NaN Q \n",
"1 363272 7.0000 NaN S \n",
"2 240276 9.6875 NaN Q \n",
"3 315154 8.6625 NaN S \n",
"4 3101298 12.2875 NaN S "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('tested_titanic.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "adaebed8-8101-4ddb-9a5f-a87a3872a0b3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PassengerId 418\n",
"Survived 2\n",
"Pclass 3\n",
"Name 418\n",
"Sex 2\n",
"Age 79\n",
"SibSp 7\n",
"Parch 8\n",
"Ticket 363\n",
"Fare 169\n",
"Cabin 76\n",
"Embarked 3\n",
"dtype: int64"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.nunique()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "b8270628-33f9-426a-bd5e-0b208f0894b5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(418, 12)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.shape"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "678c1af7-96e5-45d3-b3ca-e6b4512ef1e7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" PassengerId \n",
" Survived \n",
" Pclass \n",
" Age \n",
" SibSp \n",
" Parch \n",
" Fare \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 418.000000 \n",
" 418.000000 \n",
" 418.000000 \n",
" 332.000000 \n",
" 418.000000 \n",
" 418.000000 \n",
" 417.000000 \n",
" \n",
" \n",
" mean \n",
" 1100.500000 \n",
" 0.363636 \n",
" 2.265550 \n",
" 30.272590 \n",
" 0.447368 \n",
" 0.392344 \n",
" 35.627188 \n",
" \n",
" \n",
" std \n",
" 120.810458 \n",
" 0.481622 \n",
" 0.841838 \n",
" 14.181209 \n",
" 0.896760 \n",
" 0.981429 \n",
" 55.907576 \n",
" \n",
" \n",
" min \n",
" 892.000000 \n",
" 0.000000 \n",
" 1.000000 \n",
" 0.170000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" 25% \n",
" 996.250000 \n",
" 0.000000 \n",
" 1.000000 \n",
" 21.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 7.895800 \n",
" \n",
" \n",
" 50% \n",
" 1100.500000 \n",
" 0.000000 \n",
" 3.000000 \n",
" 27.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 14.454200 \n",
" \n",
" \n",
" 75% \n",
" 1204.750000 \n",
" 1.000000 \n",
" 3.000000 \n",
" 39.000000 \n",
" 1.000000 \n",
" 0.000000 \n",
" 31.500000 \n",
" \n",
" \n",
" max \n",
" 1309.000000 \n",
" 1.000000 \n",
" 3.000000 \n",
" 76.000000 \n",
" 8.000000 \n",
" 9.000000 \n",
" 512.329200 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass Age SibSp \\\n",
"count 418.000000 418.000000 418.000000 332.000000 418.000000 \n",
"mean 1100.500000 0.363636 2.265550 30.272590 0.447368 \n",
"std 120.810458 0.481622 0.841838 14.181209 0.896760 \n",
"min 892.000000 0.000000 1.000000 0.170000 0.000000 \n",
"25% 996.250000 0.000000 1.000000 21.000000 0.000000 \n",
"50% 1100.500000 0.000000 3.000000 27.000000 0.000000 \n",
"75% 1204.750000 1.000000 3.000000 39.000000 1.000000 \n",
"max 1309.000000 1.000000 3.000000 76.000000 8.000000 \n",
"\n",
" Parch Fare \n",
"count 418.000000 417.000000 \n",
"mean 0.392344 35.627188 \n",
"std 0.981429 55.907576 \n",
"min 0.000000 0.000000 \n",
"25% 0.000000 7.895800 \n",
"50% 0.000000 14.454200 \n",
"75% 0.000000 31.500000 \n",
"max 9.000000 512.329200 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "050d4f9b-b668-47a8-bed1-bc332f245f71",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"86"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Age'].isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "08ac6118-4624-4460-ada2-ab56779f8575",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Survived\n",
"0 266\n",
"1 152\n",
"Name: count, dtype: int64"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Survived'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "d412d27f-a778-4cf2-a74e-070374f00d2e",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'numpy.int64' object has no attribute 'startswith'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[8], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m sns\u001b[38;5;241m.\u001b[39mcountplot(data \u001b[38;5;241m=\u001b[39m df, x \u001b[38;5;241m=\u001b[39m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSurvived\u001b[39m\u001b[38;5;124m'\u001b[39m], hue \u001b[38;5;241m=\u001b[39m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPclass\u001b[39m\u001b[38;5;124m'\u001b[39m])\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:2955\u001b[0m, in \u001b[0;36mcountplot\u001b[1;34m(data, x, y, hue, order, hue_order, orient, color, palette, saturation, width, dodge, ax, **kwargs)\u001b[0m\n\u001b[0;32m 2952\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ax \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 2953\u001b[0m ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mgca()\n\u001b[1;32m-> 2955\u001b[0m plotter\u001b[38;5;241m.\u001b[39mplot(ax, kwargs)\n\u001b[0;32m 2956\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ax\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:1587\u001b[0m, in \u001b[0;36m_BarPlotter.plot\u001b[1;34m(self, ax, bar_kws)\u001b[0m\n\u001b[0;32m 1585\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Make the plot.\"\"\"\u001b[39;00m\n\u001b[0;32m 1586\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdraw_bars(ax, bar_kws)\n\u001b[1;32m-> 1587\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mannotate_axes(ax)\n\u001b[0;32m 1588\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39morient \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mh\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m 1589\u001b[0m ax\u001b[38;5;241m.\u001b[39minvert_yaxis()\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:767\u001b[0m, in \u001b[0;36m_CategoricalPlotter.annotate_axes\u001b[1;34m(self, ax)\u001b[0m\n\u001b[0;32m 764\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_ylim(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m.5\u001b[39m, \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplot_data) \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m.5\u001b[39m, auto\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 766\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhue_names \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 767\u001b[0m ax\u001b[38;5;241m.\u001b[39mlegend(loc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbest\u001b[39m\u001b[38;5;124m\"\u001b[39m, title\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhue_title)\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\axes\\_axes.py:322\u001b[0m, in \u001b[0;36mAxes.legend\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 204\u001b[0m \u001b[38;5;129m@_docstring\u001b[39m\u001b[38;5;241m.\u001b[39mdedent_interpd\n\u001b[0;32m 205\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mlegend\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 206\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 207\u001b[0m \u001b[38;5;124;03m Place a legend on the Axes.\u001b[39;00m\n\u001b[0;32m 208\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 320\u001b[0m \u001b[38;5;124;03m .. plot:: gallery/text_labels_and_annotations/legend.py\u001b[39;00m\n\u001b[0;32m 321\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 322\u001b[0m handles, labels, kwargs \u001b[38;5;241m=\u001b[39m mlegend\u001b[38;5;241m.\u001b[39m_parse_legend_args([\u001b[38;5;28mself\u001b[39m], \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 323\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_ \u001b[38;5;241m=\u001b[39m mlegend\u001b[38;5;241m.\u001b[39mLegend(\u001b[38;5;28mself\u001b[39m, handles, labels, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 324\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_\u001b[38;5;241m.\u001b[39m_remove_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_remove_legend\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\legend.py:1361\u001b[0m, in \u001b[0;36m_parse_legend_args\u001b[1;34m(axs, handles, labels, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1357\u001b[0m handles \u001b[38;5;241m=\u001b[39m [handle \u001b[38;5;28;01mfor\u001b[39;00m handle, label\n\u001b[0;32m 1358\u001b[0m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(_get_legend_handles(axs, handlers), labels)]\n\u001b[0;32m 1360\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m: \u001b[38;5;66;03m# 0 args: automatically detect labels and handles.\u001b[39;00m\n\u001b[1;32m-> 1361\u001b[0m handles, labels \u001b[38;5;241m=\u001b[39m _get_legend_handles_labels(axs, handlers)\n\u001b[0;32m 1362\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m handles:\n\u001b[0;32m 1363\u001b[0m log\u001b[38;5;241m.\u001b[39mwarning(\n\u001b[0;32m 1364\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo artists with labels found to put in legend. Note that \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1365\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124martists whose label start with an underscore are ignored \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1366\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwhen legend() is called with no argument.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\legend.py:1291\u001b[0m, in \u001b[0;36m_get_legend_handles_labels\u001b[1;34m(axs, legend_handler_map)\u001b[0m\n\u001b[0;32m 1289\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handle \u001b[38;5;129;01min\u001b[39;00m _get_legend_handles(axs, legend_handler_map):\n\u001b[0;32m 1290\u001b[0m label \u001b[38;5;241m=\u001b[39m handle\u001b[38;5;241m.\u001b[39mget_label()\n\u001b[1;32m-> 1291\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m label \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m label\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[0;32m 1292\u001b[0m handles\u001b[38;5;241m.\u001b[39mappend(handle)\n\u001b[0;32m 1293\u001b[0m labels\u001b[38;5;241m.\u001b[39mappend(label)\n",
"\u001b[1;31mAttributeError\u001b[0m: 'numpy.int64' object has no attribute 'startswith'"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.countplot(data = df, x = df['Survived'], hue = df['Pclass'])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ccbd38c8-0f97-4931-8306-6aada604e7a6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 male\n",
"1 female\n",
"2 male\n",
"3 male\n",
"4 female\n",
" ... \n",
"413 male\n",
"414 female\n",
"415 male\n",
"416 male\n",
"417 male\n",
"Name: Sex, Length: 418, dtype: object"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Sex']"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "2cfe231d-a6e3-48e5-abd8-8be762f89c45",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'numpy.int64' object has no attribute 'startswith'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[10], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m sns\u001b[38;5;241m.\u001b[39mcountplot( x \u001b[38;5;241m=\u001b[39m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSex\u001b[39m\u001b[38;5;124m'\u001b[39m], hue \u001b[38;5;241m=\u001b[39m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSurvived\u001b[39m\u001b[38;5;124m'\u001b[39m])\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:2955\u001b[0m, in \u001b[0;36mcountplot\u001b[1;34m(data, x, y, hue, order, hue_order, orient, color, palette, saturation, width, dodge, ax, **kwargs)\u001b[0m\n\u001b[0;32m 2952\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ax \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 2953\u001b[0m ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mgca()\n\u001b[1;32m-> 2955\u001b[0m plotter\u001b[38;5;241m.\u001b[39mplot(ax, kwargs)\n\u001b[0;32m 2956\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ax\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:1587\u001b[0m, in \u001b[0;36m_BarPlotter.plot\u001b[1;34m(self, ax, bar_kws)\u001b[0m\n\u001b[0;32m 1585\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Make the plot.\"\"\"\u001b[39;00m\n\u001b[0;32m 1586\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdraw_bars(ax, bar_kws)\n\u001b[1;32m-> 1587\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mannotate_axes(ax)\n\u001b[0;32m 1588\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39morient \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mh\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m 1589\u001b[0m ax\u001b[38;5;241m.\u001b[39minvert_yaxis()\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:767\u001b[0m, in \u001b[0;36m_CategoricalPlotter.annotate_axes\u001b[1;34m(self, ax)\u001b[0m\n\u001b[0;32m 764\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_ylim(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m.5\u001b[39m, \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplot_data) \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m.5\u001b[39m, auto\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 766\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhue_names \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 767\u001b[0m ax\u001b[38;5;241m.\u001b[39mlegend(loc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbest\u001b[39m\u001b[38;5;124m\"\u001b[39m, title\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhue_title)\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\axes\\_axes.py:322\u001b[0m, in \u001b[0;36mAxes.legend\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 204\u001b[0m \u001b[38;5;129m@_docstring\u001b[39m\u001b[38;5;241m.\u001b[39mdedent_interpd\n\u001b[0;32m 205\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mlegend\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 206\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 207\u001b[0m \u001b[38;5;124;03m Place a legend on the Axes.\u001b[39;00m\n\u001b[0;32m 208\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 320\u001b[0m \u001b[38;5;124;03m .. plot:: gallery/text_labels_and_annotations/legend.py\u001b[39;00m\n\u001b[0;32m 321\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 322\u001b[0m handles, labels, kwargs \u001b[38;5;241m=\u001b[39m mlegend\u001b[38;5;241m.\u001b[39m_parse_legend_args([\u001b[38;5;28mself\u001b[39m], \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 323\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_ \u001b[38;5;241m=\u001b[39m mlegend\u001b[38;5;241m.\u001b[39mLegend(\u001b[38;5;28mself\u001b[39m, handles, labels, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 324\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_\u001b[38;5;241m.\u001b[39m_remove_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_remove_legend\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\legend.py:1361\u001b[0m, in \u001b[0;36m_parse_legend_args\u001b[1;34m(axs, handles, labels, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1357\u001b[0m handles \u001b[38;5;241m=\u001b[39m [handle \u001b[38;5;28;01mfor\u001b[39;00m handle, label\n\u001b[0;32m 1358\u001b[0m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(_get_legend_handles(axs, handlers), labels)]\n\u001b[0;32m 1360\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m: \u001b[38;5;66;03m# 0 args: automatically detect labels and handles.\u001b[39;00m\n\u001b[1;32m-> 1361\u001b[0m handles, labels \u001b[38;5;241m=\u001b[39m _get_legend_handles_labels(axs, handlers)\n\u001b[0;32m 1362\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m handles:\n\u001b[0;32m 1363\u001b[0m log\u001b[38;5;241m.\u001b[39mwarning(\n\u001b[0;32m 1364\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo artists with labels found to put in legend. Note that \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1365\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124martists whose label start with an underscore are ignored \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1366\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwhen legend() is called with no argument.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\legend.py:1291\u001b[0m, in \u001b[0;36m_get_legend_handles_labels\u001b[1;34m(axs, legend_handler_map)\u001b[0m\n\u001b[0;32m 1289\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handle \u001b[38;5;129;01min\u001b[39;00m _get_legend_handles(axs, legend_handler_map):\n\u001b[0;32m 1290\u001b[0m label \u001b[38;5;241m=\u001b[39m handle\u001b[38;5;241m.\u001b[39mget_label()\n\u001b[1;32m-> 1291\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m label \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m label\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[0;32m 1292\u001b[0m handles\u001b[38;5;241m.\u001b[39mappend(handle)\n\u001b[0;32m 1293\u001b[0m labels\u001b[38;5;241m.\u001b[39mappend(label)\n",
"\u001b[1;31mAttributeError\u001b[0m: 'numpy.int64' object has no attribute 'startswith'"
]
},
{
"data": {
"image/png": "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tm0rh8OhV199VceOHdO9996rsLAw/e53v9NHH30kSTp58qTS0tIUHx+v0NBQXXnllXrppZfO+hqWZWnmzJnq0KGDQkNDdd111+ntt9++EKcHGG3MmDHKyMjQ3r17ZbPZdNlll/3q+23Dhg2y2Wz6+OOPdcMNNyg0NFS9e/dWSUmJPvroI1199dUKDw/XyJEjdfz4cd/zVq9ere7du6tNmzaKiorSgAEDtGfPnrPOt2vXLt12221q3bq1HA6HRo0apQMHDjTYfw80PGIHjdaiRYsUHR2tL7/8UhkZGXr44Yc1bNgwJSUl6R//+If69++vUaNG6fjx46qurlb79u311ltvadeuXXryySc1depUvfXWW2c8/v/93/9pwYIFmjdvnnbu3Knx48frnnvuUV5e3gU8S8A8L730kp555hm1b99excXF2rJlyzm/37KzszV37lzl5+erqKhIw4cP1+zZs7Vs2TKtXLlSubm5mjNnjm//Y8eOKSsrS1u2bNEnn3yiJk2aaMiQIaqurq51tuLiYvXs2VPXX3+9tm7dqtWrV+vnn3/W8OHDG/S/CRqYBTRCPXv2tLp37+5b/uWXX6xWrVpZo0aN8q0rLi62JFmff/55rcdIT0+3hg4d6lsePXq09Yc//MGyLMs6evSo1aJFCys/P9/vOWlpadbIkSPr8UyAi9OsWbOsuLg4y7LO7f22fv16S5K1du1a3/acnBxLkrVnzx7furFjx1r9+/c/4+uWlJRYkqzt27dblmVZhYWFliTrq6++sizLsqZNm2alpKT4PaeoqMiSZH333Xd1Pl8EFvfsoNHq1KmT789NmzZVVFSUEhMTfetO/db7kpISSdLLL7+s1157Tf/+979VUVGhyspKXX/99bUee9euXTpx4oT69evnt76yslI33HBDPZ8JcHH7Le+3/33fOxwOtWzZUh06dPBb9+WXX/qW9+zZo2nTpmnz5s06cOCA74rO3r17lZCQUGOWgoICrV+/Xq1bt66xbc+ePbriiivqdpIIKGIHjVazZs38lm02m986m80mSaqurtZbb72l8ePH64UXXtDNN9+ssLAwPf/88/riiy9qPfapvxBXrlypSy65xG8bv3MHqF+/5f12+nu8tr8H/vcjqoEDB8rtdmv+/PlyuVyqrq5WQkKCKisrzzjLwIEDNWPGjBrbYmNjf9uJIWgQO7gobNy4UUlJSUpPT/etO9tNitdcc43sdrv27t2rnj17XogRgYtWQ73fDh48qG+//VavvPKKbrnlFknSpk2bzvqczp0765133tFll12mkBD+iTQF/ydxUbj88su1ePFiffzxx4qPj9eSJUu0ZcsWxcfH17p/WFiYJk6cqPHjx6u6ulrdu3dXWVmZ8vPz1bp1a40ePfoCnwFgroZ6v7Vt21ZRUVF69dVXFRsbq7179+rxxx8/63PGjRun+fPna+TIkXrssccUHR2t77//XsuXL9f8+fPVtGnTOs2CwCJ2cFF46KGHtG3bNo0YMUI2m00jR45Uenq676vptfnTn/6kmJgY5eTk6IcfflCbNm3UuXNnTZ069QJODlwcGuL91qRJEy1fvlyPPvqoEhISdOWVV+rPf/6zkpOTz/gcl8ulzz77TJMnT1b//v3l9XoVFxenW2+9VU2a8AXmxspmWZYV6CEAAAAaCpkKAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAGiUSkpKNHbsWF166aWy2+1yOp3q37+/Pv/880CPBiDI8LuxADRKQ4cOVVVVlRYtWqQOHTro559/1ieffKJDhw4FejQAQYYrOwAanSNHjmjTpk2aMWOGevXqpbi4OP3+97/XlClTdPvtt0uSSktL9eCDDyomJkbh4eHq3bu3vv76a0nS/v375XQ6NX36dN8xv/jiCzVv3lxr1qwJyDkBaDjEDoBGp3Xr1mrdurXee+89eb3eGtsty9Ltt98uj8ejVatWqaCgQJ07d1afPn106NAhtWvXTm+88Yays7O1detWHT16VPfcc4/S09OVkpISgDMC0JD4recAGqV33nlHDzzwgCoqKtS5c2f17NlTd955pzp16qR169ZpyJAhKikpkd1u9z3n8ssv16RJk/Tggw9KksaNG6e1a9fqxhtv1Ndff60tW7aoRYsWgTolAA2E2AHQaJ04cUIbN27U559/rtWrV+vLL7/Ua6+9pv379+vxxx9XaGio3/4VFRWaOHGiZsyY4VtOSEhQUVGRtm7dqk6dOgXiNAA0MGIHgDHuv/9+5ebmKj09XXPmzNGGDRtq7NOmTRtFR0dLknbu3KmuXbuqqqpKK1as0MCBAy/wxAAuBL6NBcAY11xzjd577z117txZHo9HISEhuuyyy2rdt7KyUnfffbdGjBihq666Smlpadq+fbscDseFHRpAg+PKDoBG5+DBgxo2bJjuu+8+derUSWFhYdq6dasyMjJ0++2367XXXlOPHj1UXl6uGTNm6Morr9RPP/2kVatWafDgweratasee+wxvf322/r666/VunVr9erVS2FhYfr73/8e6NMDUM+IHQCNjtfrVXZ2ttasWaM9e/aoqqpKbrdbw4YN09SpUxUaGqry8nI98cQTeuedd3xfNe/Ro4dycnK0Z88e9evXT+vXr1f37t0lSXv37lWnTp2Uk5Ojhx9+OMBnCKA+ETsAAMBo/JwdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARvt/fYbi3GaE/JoAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.countplot( x = df['Sex'], hue = df['Survived'])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "aae40950-0366-4af8-a425-a16aa00388b8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" PassengerId \n",
" Survived \n",
" Pclass \n",
" Name \n",
" Sex \n",
" Age \n",
" SibSp \n",
" Parch \n",
" Ticket \n",
" Fare \n",
" Cabin \n",
" Embarked \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 892 \n",
" 0 \n",
" 3 \n",
" Kelly, Mr. James \n",
" 1 \n",
" 34.5 \n",
" 0 \n",
" 0 \n",
" 330911 \n",
" 7.8292 \n",
" NaN \n",
" Q \n",
" \n",
" \n",
" 1 \n",
" 893 \n",
" 1 \n",
" 3 \n",
" Wilkes, Mrs. James (Ellen Needs) \n",
" 0 \n",
" 47.0 \n",
" 1 \n",
" 0 \n",
" 363272 \n",
" 7.0000 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 2 \n",
" 894 \n",
" 0 \n",
" 2 \n",
" Myles, Mr. Thomas Francis \n",
" 1 \n",
" 62.0 \n",
" 0 \n",
" 0 \n",
" 240276 \n",
" 9.6875 \n",
" NaN \n",
" Q \n",
" \n",
" \n",
" 3 \n",
" 895 \n",
" 0 \n",
" 3 \n",
" Wirz, Mr. Albert \n",
" 1 \n",
" 27.0 \n",
" 0 \n",
" 0 \n",
" 315154 \n",
" 8.6625 \n",
" NaN \n",
" S \n",
" \n",
" \n",
" 4 \n",
" 896 \n",
" 1 \n",
" 3 \n",
" Hirvonen, Mrs. Alexander (Helga E Lindqvist) \n",
" 0 \n",
" 22.0 \n",
" 1 \n",
" 1 \n",
" 3101298 \n",
" 12.2875 \n",
" NaN \n",
" S \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass \\\n",
"0 892 0 3 \n",
"1 893 1 3 \n",
"2 894 0 2 \n",
"3 895 0 3 \n",
"4 896 1 3 \n",
"\n",
" Name Sex Age SibSp Parch \\\n",
"0 Kelly, Mr. James 1 34.5 0 0 \n",
"1 Wilkes, Mrs. James (Ellen Needs) 0 47.0 1 0 \n",
"2 Myles, Mr. Thomas Francis 1 62.0 0 0 \n",
"3 Wirz, Mr. Albert 1 27.0 0 0 \n",
"4 Hirvonen, Mrs. Alexander (Helga E Lindqvist) 0 22.0 1 1 \n",
"\n",
" Ticket Fare Cabin Embarked \n",
"0 330911 7.8292 NaN Q \n",
"1 363272 7.0000 NaN S \n",
"2 240276 9.6875 NaN Q \n",
"3 315154 8.6625 NaN S \n",
"4 3101298 12.2875 NaN S "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.preprocessing import LabelEncoder\n",
"encoder = LabelEncoder()\n",
"\n",
"df['Sex'] = encoder.fit_transform(df['Sex'])\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "08700cc7-1083-4ce0-b68b-818ce5fe2cd2",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'numpy.int64' object has no attribute 'startswith'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[12], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m sns\u001b[38;5;241m.\u001b[39mcountplot(x \u001b[38;5;241m=\u001b[39m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSex\u001b[39m\u001b[38;5;124m'\u001b[39m], hue \u001b[38;5;241m=\u001b[39m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSurvived\u001b[39m\u001b[38;5;124m'\u001b[39m])\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:2955\u001b[0m, in \u001b[0;36mcountplot\u001b[1;34m(data, x, y, hue, order, hue_order, orient, color, palette, saturation, width, dodge, ax, **kwargs)\u001b[0m\n\u001b[0;32m 2952\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ax \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 2953\u001b[0m ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mgca()\n\u001b[1;32m-> 2955\u001b[0m plotter\u001b[38;5;241m.\u001b[39mplot(ax, kwargs)\n\u001b[0;32m 2956\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ax\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:1587\u001b[0m, in \u001b[0;36m_BarPlotter.plot\u001b[1;34m(self, ax, bar_kws)\u001b[0m\n\u001b[0;32m 1585\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Make the plot.\"\"\"\u001b[39;00m\n\u001b[0;32m 1586\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdraw_bars(ax, bar_kws)\n\u001b[1;32m-> 1587\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mannotate_axes(ax)\n\u001b[0;32m 1588\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39morient \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mh\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m 1589\u001b[0m ax\u001b[38;5;241m.\u001b[39minvert_yaxis()\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\seaborn\\categorical.py:767\u001b[0m, in \u001b[0;36m_CategoricalPlotter.annotate_axes\u001b[1;34m(self, ax)\u001b[0m\n\u001b[0;32m 764\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_ylim(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m.5\u001b[39m, \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplot_data) \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m.5\u001b[39m, auto\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 766\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhue_names \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 767\u001b[0m ax\u001b[38;5;241m.\u001b[39mlegend(loc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbest\u001b[39m\u001b[38;5;124m\"\u001b[39m, title\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhue_title)\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\axes\\_axes.py:322\u001b[0m, in \u001b[0;36mAxes.legend\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 204\u001b[0m \u001b[38;5;129m@_docstring\u001b[39m\u001b[38;5;241m.\u001b[39mdedent_interpd\n\u001b[0;32m 205\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mlegend\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 206\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 207\u001b[0m \u001b[38;5;124;03m Place a legend on the Axes.\u001b[39;00m\n\u001b[0;32m 208\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 320\u001b[0m \u001b[38;5;124;03m .. plot:: gallery/text_labels_and_annotations/legend.py\u001b[39;00m\n\u001b[0;32m 321\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 322\u001b[0m handles, labels, kwargs \u001b[38;5;241m=\u001b[39m mlegend\u001b[38;5;241m.\u001b[39m_parse_legend_args([\u001b[38;5;28mself\u001b[39m], \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 323\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_ \u001b[38;5;241m=\u001b[39m mlegend\u001b[38;5;241m.\u001b[39mLegend(\u001b[38;5;28mself\u001b[39m, handles, labels, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 324\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_\u001b[38;5;241m.\u001b[39m_remove_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_remove_legend\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\legend.py:1361\u001b[0m, in \u001b[0;36m_parse_legend_args\u001b[1;34m(axs, handles, labels, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1357\u001b[0m handles \u001b[38;5;241m=\u001b[39m [handle \u001b[38;5;28;01mfor\u001b[39;00m handle, label\n\u001b[0;32m 1358\u001b[0m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(_get_legend_handles(axs, handlers), labels)]\n\u001b[0;32m 1360\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m: \u001b[38;5;66;03m# 0 args: automatically detect labels and handles.\u001b[39;00m\n\u001b[1;32m-> 1361\u001b[0m handles, labels \u001b[38;5;241m=\u001b[39m _get_legend_handles_labels(axs, handlers)\n\u001b[0;32m 1362\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m handles:\n\u001b[0;32m 1363\u001b[0m log\u001b[38;5;241m.\u001b[39mwarning(\n\u001b[0;32m 1364\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo artists with labels found to put in legend. Note that \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1365\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124martists whose label start with an underscore are ignored \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1366\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwhen legend() is called with no argument.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\matplotlib\\legend.py:1291\u001b[0m, in \u001b[0;36m_get_legend_handles_labels\u001b[1;34m(axs, legend_handler_map)\u001b[0m\n\u001b[0;32m 1289\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handle \u001b[38;5;129;01min\u001b[39;00m _get_legend_handles(axs, legend_handler_map):\n\u001b[0;32m 1290\u001b[0m label \u001b[38;5;241m=\u001b[39m handle\u001b[38;5;241m.\u001b[39mget_label()\n\u001b[1;32m-> 1291\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m label \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m label\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[0;32m 1292\u001b[0m handles\u001b[38;5;241m.\u001b[39mappend(handle)\n\u001b[0;32m 1293\u001b[0m labels\u001b[38;5;241m.\u001b[39mappend(label)\n",
"\u001b[1;31mAttributeError\u001b[0m: 'numpy.int64' object has no attribute 'startswith'"
]
},
{
"data": {
"image/png": "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uO/mm2/WxIkTVVpaauNkACLJ4XBo06ZNmjhxot2jIEpwZQdXhZaWFlVWVio3Nzdkf25urioqKmyaCgDQEYgdXBW+/vprnTlzps0vh3W5XG1+iSwAwCzEDq4qDocjZNuyrDb7AABmIXZwVUhOTlaXLl3aXMWpra1tc7UHAGAWYgdXhdjYWGVnZ6usrCxkf1lZmXJycmyaCgDQEYz4refA5SgqKtJ9992ngQMHasiQIXrxxRd19OhRPfLII3aPBuAKNTU16YsvvghuV1VV6cCBA0pKSlKfPn1snAzRgI+e46rywgsvaPHixaqpqVFmZqaWLl2qoUOH2j0WgCu0a9cujRgxos3+6dOna9WqVR0/EKIKsQMAAIzGPTsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOgE6ptrZWDz/8sPr06SOn0ym3262xY8fqww8/tHs0AFGGXwQKoFOaPHmyWltbtXr1al1//fX6z3/+o/fee0+nTp2yezQAUYYrOwA6nfr6eu3Zs0eLFi3SiBEjlJ6erp///OcqLi7WnXfeKUlqaGjQQw89pNTUVCUkJGjkyJH65JNPJEknTpyQ2+3WwoULg6/597//XbGxsdq2bZst5wSg/RA7ADqdHj16qEePHtq8ebMCgUCb45Zl6c4775TP59PWrVtVWVmpAQMGaNSoUTp16pRSUlL06quvqqSkRPv371dTU5N+9atfqaCgQLm5uTacEYD2xG89B9Apvf7663rwwQfV3NysAQMGaNiwYbr77rvVr18/7dixQ3fddZdqa2vldDqDz7nhhhs0b948PfTQQ5KkmTNnavv27Ro0aJA++eQT7du3T926dbPrlAC0E2IHQKf17bffavfu3frwww/1zjvv6KOPPtLLL7+sEydO6PHHH1dcXFzI+ubmZs2dO1eLFi0KbmdmZqq6ulr79+9Xv3797DgNAO2M2AFgjAceeEBlZWUqKCjQ888/r127drVZc9111yk5OVmSdPjwYQ0cOFCtra3atGmTxo8f38ETA+gIfBoLgDF++tOfavPmzRowYIB8Pp9iYmL04x//+IJrW1padO+992ratGm66aablJ+fr4MHD8rlcnXs0ADaHVd2AHQ6J0+e1JQpU3T//ferX79+io+P1/79+zV79mzdeeedevnllzV06FA1NjZq0aJF+slPfqLjx49r69atmjhxogYOHKjHHntMr732mj755BP16NFDI0aMUHx8vP72t7/ZfXoAIozYAdDpBAIBlZSUaNu2bfryyy/V2toqr9erKVOm6IknnlBcXJwaGxu1YMECvf7668GPmg8dOlSlpaX68ssvNWbMGO3cuVO33XabJOno0aPq16+fSktL9eijj9p8hgAiidgBAABG4+fsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMNr/AanvBxxuATC0AAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.countplot(x = df['Sex'], hue = df['Survived'])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "62034042-620d-498b-a6bc-4c8f38790f2f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"86"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Age'].isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "0c1a7522-38a4-4b63-be9a-18ba2a0712e2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(df['Age'])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "3134dd1a-552e-4431-b57f-2a92b63776e5",
"metadata": {},
"outputs": [],
"source": [
"df['Age'].fillna(df.Age.median(), inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "9e087e12-0eb0-4895-8dea-21514c88ad2f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Age'].isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "bdd8727f-485f-4b6f-9fe0-eb2cfc4a4cc7",
"metadata": {},
"outputs": [],
"source": [
"X = df[['Pclass', 'Sex', 'Age']] \n",
"y = df['Survived']"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "4f268d49-2101-4136-871e-077d3d4f6439",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.33)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "29e69f91-781b-4c16-8d08-35f20b9a91d4",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"classifier = LogisticRegression()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "2033dc05-8a34-4be4-a40a-0c14d09d0038",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"LogisticRegression() 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": [
"LogisticRegression()"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"classifier.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "c0aac3da-59ee-425e-8d7f-4db279a689f1",
"metadata": {},
"outputs": [],
"source": [
"y_pred = classifier.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "992b8a97-8594-4ac0-bd8d-963c374b883a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1,\n",
" 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0,\n",
" 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1,\n",
" 1, 0, 0, 0, 0, 1], dtype=int64)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "db2322a7-7416-47a1-8695-04b6716104ef",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"the accuracy score is 1.0\n",
" precision recall f1-score support\n",
"\n",
" 0 1.00 1.00 1.00 93\n",
" 1 1.00 1.00 1.00 45\n",
"\n",
" accuracy 1.00 138\n",
" macro avg 1.00 1.00 1.00 138\n",
"weighted avg 1.00 1.00 1.00 138\n",
"\n"
]
}
],
"source": [
"from sklearn.metrics import classification_report, accuracy_score\n",
"print(\"the accuracy score is \", accuracy_score(y_test, y_pred))\n",
"print(classification_report(y_test, y_pred))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "f8e87d14-9540-499e-b22b-6c70cc4dcb08",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"You are dead\n"
]
}
],
"source": [
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"# female = 0 male = 1\n",
"# df[['Pclass', 'Sex', 'Age']]\n",
"# result = classifier.predict([[3,0,22]]) # survived\n",
"# result = classifier.predict([[3,1,22]]) # died\n",
"# result = classifier.predict([[2,0,22]]) # survived\n",
"# result = classifier.predict([[2,1,22]]) # died\n",
"# result = classifier.predict([[1,0,22]]) # survived\n",
"# result = classifier.predict([[1,1,22]]) # died\n",
"# result = classifier.predict([[3,0,62]]) # survived\n",
"# result = classifier.predict([[3,1,62]]) # died\n",
"# result = classifier.predict([[2,0,62]]) # died\n",
"# result = classifier.predict([[2,1,62]]) # died\n",
"# result = classifier.predict([[1,0,62]]) # died\n",
"result = classifier.predict([[1,1,62]]) # died\n",
"\n",
"if(result == 0):\n",
" print(\"You are dead\")\n",
"else:\n",
" print(\"Congratulations! You Survived\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "31208f51-fbb2-4d45-8431-b3d8f2cb3822",
"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.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}