"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "df[['Age']].boxplot()\n",
+ "#plt.show(df[['Age']].hist())\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "h14MkI748ohj"
+ },
+ "source": [
+ "## Numeric vs. Categorical EDA\n",
+ "\n",
+ "Here we are trying to see the relationship between a given numeric feature and the target, which is categorical. Let's use the `Age` column as an example.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "J0Mqld_X8ohj"
+ },
+ "source": [
+ "### Multiple Histograms\n",
+ "\n",
+ "Rather than using the y axis to represent the two categories, let's use two different colors. That means that we can use the y axis to represent counts rather than trying to discern this information from the density of dots."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "id": "ZixaQbWc8ohj",
+ "outputId": "66c8f491-163e-408b-c5d2-70947d1b325b"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots()\n",
+ "\n",
+ "ax.hist(df[df[\"Survived\"]==1][\"Sex\"], bins=15, alpha=0.5, color=\"blue\", label=\"survived\")\n",
+ "ax.hist(df[df[\"Survived\"]==0][\"Sex\"], bins=15, alpha=0.5, color=\"green\", label=\"did not survive\")\n",
+ "\n",
+ "ax.set_xlabel(\"Sex\")\n",
+ "ax.set_ylabel(\"Count of passengers\")\n",
+ "\n",
+ "fig.suptitle(\"Age vs. Survival for Titanic Passengers\")\n",
+ "\n",
+ "ax.legend();"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "v3l2bgk_8ohk"
+ },
+ "source": [
+ "### Multiple Density Estimate Plots\n",
+ "\n",
+ "This is showing largely the same information as the histograms, except that it's a density estimate (estimate of the probability density function) rather than a count across bins. Seaborn has nice built-in functionality for this."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "id": "LUfCRUzg8ohk",
+ "outputId": "5199887f-4fc5-4585-a6b5-2353466935c5"
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
+ " with pd.option_context('mode.use_inf_as_na', True):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
+ " with pd.option_context('mode.use_inf_as_na', True):\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots()\n",
+ "\n",
+ "sns.kdeplot(df[df[\"Survived\"]==1][\"Age\"], fill=True, color=\"blue\", label=\"survived\", ax=ax)\n",
+ "sns.kdeplot(df[df[\"Survived\"]==0][\"Age\"], fill=True, color=\"green\", label=\"did not survive\", ax=ax)\n",
+ "\n",
+ "ax.set_xlabel(\"Age\")\n",
+ "ax.set_ylabel(\"Density\")\n",
+ "\n",
+ "fig.suptitle(\"Age vs. Survival for Titanic Passengers\");"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "QFfsAqW78ohk"
+ },
+ "source": [
+ "### Multiple Box Plots\n",
+ "\n",
+ "Here we lose some of the information about the distribution overall in order to focus in on particular summary statistics of the distribution\n",
+ "\n",
+ "\n",
+ "\n",
+ "Matplotlib and Seaborn both have methods for this. The Seaborn one is built on top of the Matplotlib one."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "id": "CEB3nbqZ8ohk",
+ "outputId": "be3bcdf0-8e66-4d2d-fc94-6f992946b717"
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n"
+ ]
+ },
+ {
+ "ename": "KeyError",
+ "evalue": "0",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[23], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m fig, ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39msubplots()\n\u001b[0;32m----> 3\u001b[0m \u001b[43msns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mboxplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mAge\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mSurvived\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morient\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mh\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpalette\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m1\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mblue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m0\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgreen\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m ax\u001b[38;5;241m.\u001b[39mget_yaxis()\u001b[38;5;241m.\u001b[39mset_visible(\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m 7\u001b[0m fig\u001b[38;5;241m.\u001b[39msuptitle(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAge vs. Survival for Titanic Passengers\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:2231\u001b[0m, in \u001b[0;36mboxplot\u001b[0;34m(data, x, y, hue, order, hue_order, orient, color, palette, saturation, width, dodge, fliersize, linewidth, whis, ax, **kwargs)\u001b[0m\n\u001b[1;32m 2224\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mboxplot\u001b[39m(\n\u001b[1;32m 2225\u001b[0m data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m, x\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, y\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, hue\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, order\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, hue_order\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 2226\u001b[0m orient\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, color\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, palette\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, saturation\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m.75\u001b[39m, width\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m.8\u001b[39m,\n\u001b[1;32m 2227\u001b[0m dodge\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, fliersize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m, linewidth\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, whis\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1.5\u001b[39m, ax\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 2228\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs\n\u001b[1;32m 2229\u001b[0m ):\n\u001b[0;32m-> 2231\u001b[0m plotter \u001b[38;5;241m=\u001b[39m \u001b[43m_BoxPlotter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morder\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhue_order\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2232\u001b[0m \u001b[43m \u001b[49m\u001b[43morient\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcolor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpalette\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msaturation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2233\u001b[0m \u001b[43m \u001b[49m\u001b[43mwidth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdodge\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfliersize\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlinewidth\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2235\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[1;32m 2236\u001b[0m ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mgca()\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:786\u001b[0m, in \u001b[0;36m_BoxPlotter.__init__\u001b[0;34m(self, x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, dodge, fliersize, linewidth)\u001b[0m\n\u001b[1;32m 781\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, x, y, hue, data, order, hue_order,\n\u001b[1;32m 782\u001b[0m orient, color, palette, saturation,\n\u001b[1;32m 783\u001b[0m width, dodge, fliersize, linewidth):\n\u001b[1;32m 785\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mestablish_variables(x, y, hue, data, orient, order, hue_order)\n\u001b[0;32m--> 786\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mestablish_colors\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcolor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpalette\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msaturation\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 788\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdodge \u001b[38;5;241m=\u001b[39m dodge\n\u001b[1;32m 789\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwidth \u001b[38;5;241m=\u001b[39m width\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:694\u001b[0m, in \u001b[0;36m_CategoricalPlotter.establish_colors\u001b[0;34m(self, color, palette, saturation)\u001b[0m\n\u001b[1;32m 692\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 693\u001b[0m levels \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhue_names\n\u001b[0;32m--> 694\u001b[0m palette \u001b[38;5;241m=\u001b[39m [palette[l] \u001b[38;5;28;01mfor\u001b[39;00m l \u001b[38;5;129;01min\u001b[39;00m levels]\n\u001b[1;32m 696\u001b[0m colors \u001b[38;5;241m=\u001b[39m color_palette(palette, n_colors)\n\u001b[1;32m 698\u001b[0m \u001b[38;5;66;03m# Desaturate a bit because these are patches\u001b[39;00m\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:694\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 692\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 693\u001b[0m levels \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhue_names\n\u001b[0;32m--> 694\u001b[0m palette \u001b[38;5;241m=\u001b[39m [\u001b[43mpalette\u001b[49m\u001b[43m[\u001b[49m\u001b[43ml\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m l \u001b[38;5;129;01min\u001b[39;00m levels]\n\u001b[1;32m 696\u001b[0m colors \u001b[38;5;241m=\u001b[39m color_palette(palette, n_colors)\n\u001b[1;32m 698\u001b[0m \u001b[38;5;66;03m# Desaturate a bit because these are patches\u001b[39;00m\n",
+ "\u001b[0;31mKeyError\u001b[0m: 0"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots()\n",
+ "\n",
+ "sns.boxplot(x=\"Age\", y=\"Survived\", data=df, orient=\"h\", palette={'1' : \"blue\", '0' : \"green\"}, ax=ax)\n",
+ "\n",
+ "ax.get_yaxis().set_visible(False)\n",
+ "\n",
+ "fig.suptitle(\"Age vs. Survival for Titanic Passengers\")\n",
+ "\n",
+ "color_patches = [\n",
+ " Patch(facecolor=\"blue\", label=\"survived\"),\n",
+ " Patch(facecolor=\"green\", label=\"did not survive\")\n",
+ "]\n",
+ "ax.legend(handles=color_patches);"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "JyMIiiAT8ohk"
+ },
+ "source": [
+ "## Categorical vs. Categorical EDA\n",
+ "\n",
+ "Here we are trying to see the relationship between a given categorical variable and the target (which is also categorical). Let's use the `Pclass` (passenger class) feature as an example."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Z21VQ_gt8ohk"
+ },
+ "source": [
+ "### Grouped Bar Charts\n",
+ "\n",
+ "This shows the distribution across the categories, similar to the \"multiple histograms\" example for numeric vs. categorical"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "id": "gr6vsXrk8ohk",
+ "outputId": "04ef5003-1b10-41b1-8b13-d85ee7ad853a"
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n"
+ ]
+ },
+ {
+ "ename": "AttributeError",
+ "evalue": "'numpy.int64' object has no attribute 'startswith'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[24], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m fig, ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39msubplots()\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Use countplot instead of catplot\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m \u001b[43msns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcountplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPclass\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhue\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mSurvived\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpalette\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mblue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgreen\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# Set the labels\u001b[39;00m\n\u001b[1;32m 7\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_xlabel(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPassenger Class\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:2955\u001b[0m, in \u001b[0;36mcountplot\u001b[0;34m(data, x, y, hue, order, hue_order, orient, color, palette, saturation, width, dodge, ax, **kwargs)\u001b[0m\n\u001b[1;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[1;32m 2953\u001b[0m ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mgca()\n\u001b[0;32m-> 2955\u001b[0m \u001b[43mplotter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2956\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ax\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:1587\u001b[0m, in \u001b[0;36m_BarPlotter.plot\u001b[0;34m(self, ax, bar_kws)\u001b[0m\n\u001b[1;32m 1585\u001b[0m \u001b[38;5;124;03m\"\"\"Make the plot.\"\"\"\u001b[39;00m\n\u001b[1;32m 1586\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdraw_bars(ax, bar_kws)\n\u001b[0;32m-> 1587\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mannotate_axes\u001b[49m\u001b[43m(\u001b[49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;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[1;32m 1589\u001b[0m ax\u001b[38;5;241m.\u001b[39minvert_yaxis()\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:767\u001b[0m, in \u001b[0;36m_CategoricalPlotter.annotate_axes\u001b[0;34m(self, ax)\u001b[0m\n\u001b[1;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[1;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[0;32m--> 767\u001b[0m \u001b[43max\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlegend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mloc\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbest\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtitle\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhue_title\u001b[49m\u001b[43m)\u001b[49m\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/matplotlib/axes/_axes.py:322\u001b[0m, in \u001b[0;36mAxes.legend\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[38;5;129m@_docstring\u001b[39m\u001b[38;5;241m.\u001b[39mdedent_interpd\n\u001b[1;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[1;32m 206\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 207\u001b[0m \u001b[38;5;124;03m Place a legend on the Axes.\u001b[39;00m\n\u001b[1;32m 208\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 320\u001b[0m \u001b[38;5;124;03m .. plot:: gallery/text_labels_and_annotations/legend.py\u001b[39;00m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 322\u001b[0m handles, labels, kwargs \u001b[38;5;241m=\u001b[39m \u001b[43mmlegend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_parse_legend_args\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;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[1;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[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/matplotlib/legend.py:1361\u001b[0m, in \u001b[0;36m_parse_legend_args\u001b[0;34m(axs, handles, labels, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1357\u001b[0m handles \u001b[38;5;241m=\u001b[39m [handle \u001b[38;5;28;01mfor\u001b[39;00m handle, label\n\u001b[1;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[1;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[0;32m-> 1361\u001b[0m handles, labels \u001b[38;5;241m=\u001b[39m \u001b[43m_get_legend_handles_labels\u001b[49m\u001b[43m(\u001b[49m\u001b[43maxs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhandlers\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1362\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m handles:\n\u001b[1;32m 1363\u001b[0m log\u001b[38;5;241m.\u001b[39mwarning(\n\u001b[1;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[1;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[1;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[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/matplotlib/legend.py:1291\u001b[0m, in \u001b[0;36m_get_legend_handles_labels\u001b[0;34m(axs, legend_handler_map)\u001b[0m\n\u001b[1;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[1;32m 1290\u001b[0m label \u001b[38;5;241m=\u001b[39m handle\u001b[38;5;241m.\u001b[39mget_label()\n\u001b[0;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 \u001b[43mlabel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstartswith\u001b[49m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m 1292\u001b[0m handles\u001b[38;5;241m.\u001b[39mappend(handle)\n\u001b[1;32m 1293\u001b[0m labels\u001b[38;5;241m.\u001b[39mappend(label)\n",
+ "\u001b[0;31mAttributeError\u001b[0m: 'numpy.int64' object has no attribute 'startswith'"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots()\n",
+ "\n",
+ "# Use countplot instead of catplot\n",
+ "sns.countplot(x=\"Pclass\", hue=\"Survived\", data=df, palette={1: \"blue\", 0: \"green\"}, ax=ax)\n",
+ "\n",
+ "# Set the labels\n",
+ "ax.set_xlabel(\"Passenger Class\")\n",
+ "\n",
+ "# Create custom legend\n",
+ "color_patches = [\n",
+ " Patch(facecolor=\"blue\", label=\"Survived\"),\n",
+ " Patch(facecolor=\"green\", label=\"Did Not Survive\")\n",
+ "]\n",
+ "ax.legend(handles=color_patches)\n",
+ "\n",
+ "# Set the title\n",
+ "fig.suptitle(\"Passenger Class vs. Survival for Titanic Passengers\")\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "id": "kXl-Z3hp8ohk",
+ "outputId": "a462ad14-a951-478d-ebc2-12c2116bcd19"
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n",
+ "/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/_oldcore.py:1498: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, CategoricalDtype) instead\n",
+ " if pd.api.types.is_categorical_dtype(vector):\n"
+ ]
+ },
+ {
+ "ename": "AttributeError",
+ "evalue": "'numpy.int64' object has no attribute 'startswith'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[25], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m fig, ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39msubplots()\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Corrected countplot usage\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m \u001b[43msns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcountplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mSurvived\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhue\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPclass\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpalette\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m:\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43myellow\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m:\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43morange\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m:\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mred\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# Remove plt.close(2) as it is unnecessary\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \n\u001b[1;32m 8\u001b[0m \u001b[38;5;66;03m# Set legend title\u001b[39;00m\n\u001b[1;32m 9\u001b[0m ax\u001b[38;5;241m.\u001b[39mlegend(title\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPassenger Class\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:2955\u001b[0m, in \u001b[0;36mcountplot\u001b[0;34m(data, x, y, hue, order, hue_order, orient, color, palette, saturation, width, dodge, ax, **kwargs)\u001b[0m\n\u001b[1;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[1;32m 2953\u001b[0m ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mgca()\n\u001b[0;32m-> 2955\u001b[0m \u001b[43mplotter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2956\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ax\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:1587\u001b[0m, in \u001b[0;36m_BarPlotter.plot\u001b[0;34m(self, ax, bar_kws)\u001b[0m\n\u001b[1;32m 1585\u001b[0m \u001b[38;5;124;03m\"\"\"Make the plot.\"\"\"\u001b[39;00m\n\u001b[1;32m 1586\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdraw_bars(ax, bar_kws)\n\u001b[0;32m-> 1587\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mannotate_axes\u001b[49m\u001b[43m(\u001b[49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;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[1;32m 1589\u001b[0m ax\u001b[38;5;241m.\u001b[39minvert_yaxis()\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/seaborn/categorical.py:767\u001b[0m, in \u001b[0;36m_CategoricalPlotter.annotate_axes\u001b[0;34m(self, ax)\u001b[0m\n\u001b[1;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[1;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[0;32m--> 767\u001b[0m \u001b[43max\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlegend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mloc\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbest\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtitle\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhue_title\u001b[49m\u001b[43m)\u001b[49m\n",
+ "File \u001b[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/matplotlib/axes/_axes.py:322\u001b[0m, in \u001b[0;36mAxes.legend\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[38;5;129m@_docstring\u001b[39m\u001b[38;5;241m.\u001b[39mdedent_interpd\n\u001b[1;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[1;32m 206\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 207\u001b[0m \u001b[38;5;124;03m Place a legend on the Axes.\u001b[39;00m\n\u001b[1;32m 208\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 320\u001b[0m \u001b[38;5;124;03m .. plot:: gallery/text_labels_and_annotations/legend.py\u001b[39;00m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 322\u001b[0m handles, labels, kwargs \u001b[38;5;241m=\u001b[39m \u001b[43mmlegend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_parse_legend_args\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;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[1;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[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/matplotlib/legend.py:1361\u001b[0m, in \u001b[0;36m_parse_legend_args\u001b[0;34m(axs, handles, labels, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1357\u001b[0m handles \u001b[38;5;241m=\u001b[39m [handle \u001b[38;5;28;01mfor\u001b[39;00m handle, label\n\u001b[1;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[1;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[0;32m-> 1361\u001b[0m handles, labels \u001b[38;5;241m=\u001b[39m \u001b[43m_get_legend_handles_labels\u001b[49m\u001b[43m(\u001b[49m\u001b[43maxs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhandlers\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1362\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m handles:\n\u001b[1;32m 1363\u001b[0m log\u001b[38;5;241m.\u001b[39mwarning(\n\u001b[1;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[1;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[1;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[0;32m/opt/anaconda3/envs/nlp/lib/python3.10/site-packages/matplotlib/legend.py:1291\u001b[0m, in \u001b[0;36m_get_legend_handles_labels\u001b[0;34m(axs, legend_handler_map)\u001b[0m\n\u001b[1;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[1;32m 1290\u001b[0m label \u001b[38;5;241m=\u001b[39m handle\u001b[38;5;241m.\u001b[39mget_label()\n\u001b[0;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 \u001b[43mlabel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstartswith\u001b[49m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m 1292\u001b[0m handles\u001b[38;5;241m.\u001b[39mappend(handle)\n\u001b[1;32m 1293\u001b[0m labels\u001b[38;5;241m.\u001b[39mappend(label)\n",
+ "\u001b[0;31mAttributeError\u001b[0m: 'numpy.int64' object has no attribute 'startswith'"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots()\n",
+ "\n",
+ "# Corrected countplot usage\n",
+ "sns.countplot(x=\"Survived\", hue=\"Pclass\", data=df, palette={1:\"yellow\", 2:\"orange\", 3:\"red\"}, ax=ax)\n",
+ "\n",
+ "# Remove plt.close(2) as it is unnecessary\n",
+ "\n",
+ "# Set legend title\n",
+ "ax.legend(title=\"Passenger Class\")\n",
+ "\n",
+ "# Set x-axis tick labels\n",
+ "ax.set_xticklabels([\"did not survive\", \"survived\"])\n",
+ "\n",
+ "# Remove x-axis label\n",
+ "ax.set_xlabel(\"test\")\n",
+ "\n",
+ "# Set the title\n",
+ "fig.suptitle(\"Passenger Class vs. Survival for Titanic Passengers\")\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Lxo7qCr88ohk"
+ },
+ "source": [
+ "### Stacked Bar Charts\n",
+ "\n",
+ "These can be used for counts (same as grouped bar charts) but if you use percentages rather than counts, they show proportions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "id": "0cmk7ufu8ohk",
+ "outputId": "b92e8aa5-a102-4215-b197-dc79e7b459b7"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "