diff --git a/Contributors.md b/Contributors.md index e4e8992..30fc6ff 100644 --- a/Contributors.md +++ b/Contributors.md @@ -679,4 +679,8 @@ #### Name: [Elias](https://github.com/eliasbenyahia) - Place: Lille, France - Bio: Student -- GitHub: [eliasbenyahia](https://github.com/eliasbenyahia) \ No newline at end of file +- GitHub: [eliasbenyahia](https://github.com/eliasbenyahia) + +#### Name: [Flor] https://github.com/florsastre-gif +- Place: Valencia, Spain +- Github: [florsastre-gif] (https://github.com/florsastre-gif) diff --git a/MicroProyecto_NLP.ipynb b/MicroProyecto_NLP.ipynb new file mode 100644 index 0000000..2593fbf --- /dev/null +++ b/MicroProyecto_NLP.ipynb @@ -0,0 +1,1162 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "authorship_tag": "ABX9TyNkJAN2YozIz+IAWj8CkCG2", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "source": [ + "OBJETIVO= Diseñar un pipeline completo para abordar una tarea de Procesamiento de Lenguaje Natural (NLP) usando un dataset real.\n" + ], + "metadata": { + "id": "_OVV8SxT9qIb" + } + }, + { + "cell_type": "markdown", + "source": [ + "⚡️ Problema elegido: clasificación binaria de sentimiento a partir de texto." + ], + "metadata": { + "id": "r-MJIcuh-KT1" + } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "80HgIo-Z63VO" + }, + "outputs": [], + "source": [ + "import re\n", + "import io\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "from google.colab import files\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import classification_report, confusion_matrix, f1_score, roc_curve, auc\n", + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.pipeline import Pipeline\n", + "\n", + "import matplotlib.pyplot as plt\n" + ] + }, + { + "cell_type": "code", + "source": [ + "import kagglehub\n", + "\n", + "# Download latest version\n", + "path = kagglehub.dataset_download(\"sonalshinde123/whatsapp-user-reviews-dataset\")\n", + "\n", + "print(\"Path to dataset files:\", path)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_VWBZMUj7LE-", + "outputId": "a8ce3022-6a7b-4689-d53d-e38717847f84" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Warning: Looks like you're using an outdated `kagglehub` version (installed: 0.3.13), please consider upgrading to the latest version (1.0.0).\n", + "Downloading from https://www.kaggle.com/api/v1/datasets/download/sonalshinde123/whatsapp-user-reviews-dataset?dataset_version_number=1...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "100%|██████████| 313k/313k [00:00<00:00, 56.1MB/s]" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Extracting files...\n", + "Path to dataset files: /root/.cache/kagglehub/datasets/sonalshinde123/whatsapp-user-reviews-dataset/versions/1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import os\n", + "import glob\n", + "\n", + "\n", + "csv_files = glob.glob(os.path.join(path, '*.csv'))\n", + "\n", + "if csv_files:\n", + " file_to_load = csv_files[0]\n", + " df = pd.read_csv(file_to_load)\n", + " print(f\"Loaded dataframe from: {file_to_load}\")\n", + " df.head()\n", + "else:\n", + " print(f\"No CSV files found in the directory: {path}\")\n", + " df = None #" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qPq4ndNI7SSE", + "outputId": "13aeca73-21b7-4d08-8341-20d74c670236" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Loaded dataframe from: /root/.cache/kagglehub/datasets/sonalshinde123/whatsapp-user-reviews-dataset/versions/1/whatsapp_reviews.csv\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(\"Shape inicial:\", df.shape)\n", + "\n", + "print(\"\\nValores nulos por columna:\")\n", + "print(df.isna().sum())\n", + "\n", + "print(\"\\nCantidad de filas duplicadas:\", df.duplicated().sum())\n", + "\n", + "df = df.drop_duplicates()\n", + "print(\"\\nShape luego de drop_duplicates:\", df.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tpfxKuMI7j0I", + "outputId": "635a7742-d8f6-4423-fcca-ca5a625903fb" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape inicial: (5400, 5)\n", + "\n", + "Valores nulos por columna:\n", + "review_id 0\n", + "rating 0\n", + "review_text 0\n", + "review_date 0\n", + "helpful 0\n", + "dtype: int64\n", + "\n", + "Cantidad de filas duplicadas: 0\n", + "\n", + "Shape luego de drop_duplicates: (5400, 5)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "CALIDAD DE DATOS" + ], + "metadata": { + "id": "t2BsoG8G7nZO" + } + }, + { + "cell_type": "code", + "source": [ + "# Clasificación binaria:\n", + "# Positivo (1): rating >= 4\n", + "# Negativo (0): rating <= 2\n", + "# Eliminamos rating == 3 (neutral) para reducir ambigüedad en un problema binario\n", + "\n", + "LABEL_COL = 'rating' # Define LABEL_COL\n", + "df = df[df[LABEL_COL] != 3].copy()\n", + "df[\"label\"] = (df[LABEL_COL] >= 4).astype(int)\n", + "\n", + "LABEL_FINAL = \"label\"\n", + "print(df[LABEL_FINAL].value_counts(normalize=True))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SwCtiMI77qFE", + "outputId": "fff0267d-e248-4d1d-a218-9ccbc19568b6" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "label\n", + "1 0.655663\n", + "0 0.344337\n", + "Name: proportion, dtype: float64\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "LABEL_FINAL = 'label'" + ], + "metadata": { + "id": "lZn_kotm8Bwi" + }, + "execution_count": 15, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "EDA" + ], + "metadata": { + "id": "oPwmXQsO8Gs6" + } + }, + { + "cell_type": "code", + "source": [ + "TEXT_COL = 'review_text'\n", + "df[\"text_raw\"] = df[TEXT_COL].astype(str)\n", + "df[\"char_len\"] = df[\"text_raw\"].str.len()\n", + "df[\"word_len\"] = df[\"text_raw\"].str.split().apply(len)\n", + "\n", + "print(df[[\"char_len\",\"word_len\"]].describe())\n", + "\n", + "plt.hist(df[\"word_len\"], bins=50)\n", + "plt.title(\"Distribución de longitud (palabras)\")\n", + "plt.xlabel(\"Cantidad de palabras\")\n", + "plt.ylabel(\"Frecuencia\")\n", + "plt.show()\n", + "\n", + "print(\"Balance de clases:\\n\", df[LABEL_FINAL].value_counts())" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 758 + }, + "id": "6wmZPX2I8Eei", + "outputId": "4dc3f1f0-1e30-4c98-86a4-78587eb34ef8" + }, + "execution_count": 11, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " char_len word_len\n", + "count 5059.000000 5059.000000\n", + "mean 71.786914 13.432892\n", + "std 90.196712 16.289104\n", + "min 3.000000 1.000000\n", + "25% 19.000000 4.000000\n", + "50% 37.000000 7.000000\n", + "75% 83.000000 16.000000\n", + "max 500.000000 105.000000\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAHHCAYAAABeLEexAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR+9JREFUeJzt3X18zvX////7MbNjm9nmbGeaGRFDKd5pIWRZrBOlE0VNKZURJmcVhRhTks6kd9GJCp2ndyKnnzSzliXnktPYlLEx2WZ7/v7o5/g6bGZmp1636+VyXC6O5+v5er0er+dxcNy9jufrddiMMUYAAAAW5lLRBQAAAFQ0AhEAALA8AhEAALA8AhEAALA8AhEAALA8AhEAALA8AhEAALA8AhEAALA8AhGAArKzszV58mR9//33FV0KAJQLAhEs7fnnn5fNZiuXfXXu3FmdO3d2PF+5cqVsNps+/fTTctn/mWw2m55//vlzLo+NjdW8efPUrl27cqmnX79+atiwYaltrzxf1+I4+7UvS6ffVytXrixW//j4eDVr1kz5+fllVtPcuXNls9m0e/fuC163c+fOatmyZekXVUKzZs1SgwYNlJ2dXdGloJQRiHDJOP2P7umHu7u7goKCFBkZqZkzZ+rYsWOlsp8DBw7o+eefV0pKSqlsr7JZsGCBvvzyS3333Xfy9fWt6HIuSZXlPZSZmampU6dq1KhRcnHh46A4+vXrp5ycHL311lsVXQpKmWtFFwCUtgkTJig0NFS5ublKTU3VypUrNXToUE2fPl1ff/21rrzySkffZ599VqNHj76g7R84cEDjx49Xw4YN1bp162Kvt2TJkgvaT1n6559/5Opa8K+/MUb79+/Xd999pwYNGlRAZZems1/7kr6HStu7776rU6dO6b777quwGqoad3d3RUdHa/r06Ro8eHClOhOJi0MgwiWne/fuatu2reP5mDFjtHz5ct1yyy267bbbtGXLFnl4eEiSXF1dCw0GpenEiRPy9PSUm5tbme7nQri7uxfabrPZFBsbW87VXPoq02t/pjlz5ui222475/uhqjt58qTc3NxK/ezXPffco/j4eK1YsUI33nhjqW4bFYdzpLCEG2+8UWPHjtWePXv04YcfOtoLm2uydOlSdejQQb6+vvLy8tIVV1yhp59+WtK/8zP+85//SJIeeughx9dzc+fOlfT/5jskJyfrhhtukKenp2Pdc80jycvL09NPP62AgADVqFFDt912m/bt2+fUp2HDhurXr1+BdQvb5smTJ/X888+radOmcnd3V2BgoO68807t3LnT0aewOUTr169X9+7d5e3tLS8vL3Xt2lVr16516nP6a8k1a9YoNjZW9erVU40aNXTHHXfor7/+KlBfYb788ku1bNlS7u7uatmypb744otC++Xn52vGjBlq0aKF3N3d5e/vr8cee0xHjhwp1n7OdurUKU2cOFGNGzeW3W5Xw4YN9fTTTxeYC9KwYUPdcsst+vHHH3XttdfK3d1djRo10vvvv19gmxs2bFCnTp3k4eGhyy67TC+88ILmzJlTYL7Mma/T+d5DF/Ja79+/Xz179lSNGjXk5+enYcOGFXtuy65du7RhwwZFREQ4te/evVs2m00vvviiXn75ZYWEhMjDw0OdOnXSxo0bCxx/v3791KhRI7m7uysgIEAPP/ywDh8+fN79f/XVV4qKilJQUJDsdrsaN26siRMnKi8vr9D+ycnJuv766+Xh4aHQ0FDNmjXLafnpuVOffPKJnn32WdWvX1+enp7KzMxUenq6nnrqKbVq1UpeXl7y9vZW9+7d9euvvxbYz6uvvqoWLVrI09NTtWrVUtu2bfXRRx859WnTpo1q166tr7766rzHiaqDM0SwjAceeEBPP/20lixZokcffbTQPps2bdItt9yiK6+8UhMmTJDdbtfvv/+uNWvWSJKaN2+uCRMmaNy4cRowYIA6duwoSbr++usd2zh8+LC6d++u3r17q2/fvvL39y+yrkmTJslms2nUqFE6dOiQZsyYoYiICKWkpDjOZBVXXl6ebrnlFi1btky9e/fWkCFDdOzYMS1dulQbN25U48aNz3ncHTt2lLe3t0aOHKnq1avrrbfeUufOnbVq1aoCk6sHDx6sWrVq6bnnntPu3bs1Y8YMDRo0SPPnzy+yviVLlqhXr14KCwtTXFycDh8+rIceekiXXXZZgb6PPfaY5s6dq4ceekhPPvmkdu3apddee03r16/XmjVrVL169Qsam0ceeUTvvfee7rrrLg0fPlyJiYmKi4vTli1bCoSy33//XXfddZf69++v6Ohovfvuu+rXr5/atGmjFi1aSJL+/PNPdenSRTabTWPGjFGNGjX03//+V3a7vcg6ivMeKo5//vlHXbt21d69e/Xk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Tr169VLTpk3VokULxcbGau3atY5+06dPV6tWrVSjRg0FBwdr4MCBOn78uGP53Llz5evrq++//17NmzeXl5eXbr75Zh08eFDSv189vffee/rqq69ks9lks9m0cuXKQr8y+9///qemTZvKw8NDXbp00e7du51qPnz4sO677z7Vr19fnp6eatWqlT7++GOnPllZWXrwwQfl5eWlwMBAvfTSS8UajylTpsjf3181a9ZU//79dfLkyQJ9/vvf/6p58+Zyd3dXs2bN9MYbbxS5zc6dO2vQoEEaNGiQfHx8VLduXY0dO1Zn/lTkBx98oLZt26pmzZoKCAjQ/fffr0OHDp1zm8UZA0k6depUkftt2LChJk6cqAcffFDe3t4aMGCAJGnUqFFq2rSpPD091ahRI40dO1a5ubmO9X799Vd16dJFNWvWlLe3t9q0aaOff/65yHEAqrSK/W1ZAGXp8OHDxmazmcmTJ5+378svv2yWL19udu3aZZYtW2auuOIK88QTTziWz5kzx1SvXt1ERESYpKQkk5ycbJo3b27uv/9+Y4wxx44dM/fcc4+5+eabzcGDB83BgwdNdna22bVrl5Fk1q9fb4wxZu/evcZut5vY2FizdetW8+GHHxp/f38jyRw5csQYY8z+/fvNtGnTzPr1683OnTvNzJkzTbVq1UxiYqKjnieeeMI0aNDA/PDDD2bDhg3mlltuMTVr1jRDhgw55zHOnz/f2O1289///tds3brVPPPMM6ZmzZrmqquucvT58MMPTWBgoPnss8/MH3/8YT777DNTu3ZtM3fu3HNut1OnTsbLy8sMGTLEcUyenp5Ov2r/zjvvmP/9739m586dJiEhwYSHh5vu3bs7lp/+tfELGYPi7DckJMR4e3ubF1980fz+++/m999/N8YYM3HiRLNmzRqza9cu8/XXXxt/f38zdepUx3otWrQwffv2NVu2bDHbt283CxYsMCkpKeccA6CqIxABl7DExEQjyXz++ecXvO7ChQtNnTp1HM/nzJljJDk+UI0x5vXXXzf+/v6O59HR0eb222932s7ZgWjMmDEmLCzMqc+oUaOcwkBhoqKizPDhw40x/4YvNzc3s2DBAsfyw4cPGw8PjyIDUXh4uBk4cKBTW7t27ZwCUePGjc1HH33k1GfixIkmPDz8nNvt1KmTad68ucnPz3c6pubNm59znaSkJCPJHDt2zBhTMBAV5swxKO5+Q0JCTM+ePc+5zdOmTZtm2rRp43hes2bNIkMgcKnhKzPgEmbO+OrkfH744Qd17dpV9evXV82aNfXAAw/o8OHDOnHihKOPp6enGjdu7HgeGBhY5Nc+hdmyZYvatWvn1BYeHu70PC8vTxMnTlSrVq1Uu3ZteXl56fvvv9fevXslSTt37lROTo7TdmrXrq0rrrjiovadlZWlnTt3qn///vLy8nI8XnjhBe3cubPIbV933XWy2WxO292xY4fy8vIkScnJybr11lvVoEED1axZU506dZIkxzGd7XxjUNz9SlLbtm0LbH/+/Plq3769AgIC5OXlpWeffdZp27GxsXrkkUcUERGhKVOmnPf4gaqOQARcwpo0aSKbzXbeidO7d+/WLbfcoiuvvFKfffaZkpOT9frrr0v6dxLuadWrV3daz2azXVDoKq5p06bplVde0ahRo7RixQqlpKQoMjLSqZaycHrO1Ntvv62UlBTHY+PGjU7zrS5UVlaWIiMj5e3trXnz5ikpKUlffPGFJJ3zmEpzDGrUqOH0PCEhQX369FGPHj20aNEirV+/Xs8884zTtp9//nlt2rRJUVFRWr58ucLCwhw1A5ciAhFwCatdu7YiIyP1+uuvKysrq8Dy0/e8SU5OVn5+vl566SVdd911atq0qQ4cOHDB+3Nzc3M6M1GY5s2ba926dU5tZ4eNNWvW6Pbbb1ffvn111VVXqVGjRtq+fbtjeePGjVW9enUlJiY62o4cOeLU51z7PnOds/ft7++voKAg/fHHH7r88sudHqGhoUVuu7DtNmnSRNWqVdPWrVt1+PBhTZkyRR07dlSzZs3Oe2btfGNQnP2ey08//aSQkBA988wzatu2rZo0aaI9e/YU6Ne0aVMNGzZMS5Ys0Z133qk5c+YUWTNQlRGIgEvc66+/rry8PF177bX67LPPtGPHDm3ZskUzZ850fF10+eWXKzc3V6+++qr++OMPffDBB5o1a9YF76thw4basGGDtm3bpr///tvpqqXTHn/8ce3YsUMjRozQtm3b9NFHH2nu3LlOfZo0aaKlS5fqp59+0pYtW/TYY48pLS3NsdzLy0v9+/fXiBEjtHz5cm3cuFH9+vWTi0vR/6QNGTJE7777rubMmaPt27frueee06ZNm5z6jB8/XnFxcZo5c6a2b9+u3377TXPmzNH06dOL3PbevXsVGxurbdu26eOPP9arr76qIUOGSJIaNGggNzc3x/h+/fXXmjhxYpHbO98YFGe/RW177969+uSTT7Rz507NnDnT6ezPP//8o0GDBmnlypXas2eP1qxZo6SkJDVv3rzI7QJVWkVPYgJQ9g4cOGBiYmJMSEiIcXNzM/Xr1ze33XabWbFihaPP9OnTTWBgoPHw8DCRkZHm/fffd5rkO2fOHOPj4+O03S+++MKc+c/IoUOHzE033WS8vLyMJLNixYoCk6qNMeabb74xl19+ubHb7aZjx47m3XffddrX4cOHze233268vLyMn5+fefbZZ82DDz7oNGH72LFjpm/fvsbT09P4+/ub+Ph406lTpyInVRtjzKRJk0zdunWNl5eXiY6ONiNHjnSaVG2MMfPmzTOtW7c2bm5uplatWuaGG24ocmJ6p06dzMCBA83jjz9uvL29Ta1atczTTz/tNNn5o48+Mg0bNjR2u92Eh4ebr7/+2mlczp5UXZwxKM5+Q0JCzMsvv1yg5hEjRpg6deoYLy8vc++995qXX37Z8fpmZ2eb3r17m+DgYOPm5maCgoLMoEGDzD///FPk2AJVmc2YMpgAAAAW0rlzZ7Vu3VozZsyo6FIAlBBfmQEAAMsjEAEAAMvjKzMAAGB5nCECAACWRyACAACWRyACAACWRyACAACWRyACAACWRyACAACWRyACAACWRyACAACW9/8BRSsP6lmRXTYAAAAASUVORK5CYII=\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Balance de clases:\n", + " rating\n", + "5 2872\n", + "1 1427\n", + "4 445\n", + "2 315\n", + "Name: count, dtype: int64\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "PREPROCESAMIENTO" + ], + "metadata": { + "id": "K09jiySG8Ns3" + } + }, + { + "cell_type": "code", + "source": [ + "def clean_text(t: str) -> str:\n", + " t = t.lower()\n", + " t = re.sub(r\"http\\S+|www\\.\\S+\", \" \", t) # URLs\n", + " t = re.sub(r\"@\\w+\", \" \", t) # menciones\n", + " t = re.sub(r\"#\\w+\", \" \", t) # hashtags (opcional)\n", + " t = re.sub(r\"[^a-záéíóúñü0-9\\s]\", \" \", t) # deja letras/nums/espacios\n", + " t = re.sub(r\"\\s+\", \" \", t).strip()\n", + " return t\n", + "\n", + "df[\"text_clean\"] = df[\"text_raw\"].apply(clean_text)\n", + "\n", + "df[[\"text_raw\",\"text_clean\"]].head(5)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "jdok8jFh8PIw", + "outputId": "e0c170c1-5025-4ba2-8498-90ee47eb2546" + }, + "execution_count": 12, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " text_raw \\\n", + "0 Great 👍 \n", + "1 plz whats up unban \n", + "2 my contact didn't show on WhatsApp .. for priv... \n", + "3 Can you guys let archived group chats stay arc... \n", + "4 it is the g.o.a.t🇿🇼 \n", + "\n", + " text_clean \n", + "0 great \n", + "1 plz whats up unban \n", + "2 my contact didn t show on whatsapp for privacy... \n", + "3 can you guys let archived group chats stay arc... \n", + "4 it is the g o a t " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
text_rawtext_clean
0Great 👍great
1plz whats up unbanplz whats up unban
2my contact didn't show on WhatsApp .. for priv...my contact didn t show on whatsapp for privacy...
3Can you guys let archived group chats stay arc...can you guys let archived group chats stay arc...
4it is the g.o.a.t🇿🇼it is the g o a t
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"df[[\\\"text_raw\\\",\\\"text_clean\\\"]]\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"text_raw\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"plz whats up unban\",\n \"it is the g.o.a.t\\ud83c\\uddff\\ud83c\\uddfc\",\n \"my contact didn't show on WhatsApp .. for privacy I can't share screenshot please solve it\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"text_clean\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"plz whats up unban\",\n \"it is the g o a t\",\n \"my contact didn t show on whatsapp for privacy i can t share screenshot please solve it\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 12 + } + ] + }, + { + "cell_type": "code", + "source": [ + "X = df[\"text_clean\"].values\n", + "y = df[LABEL_FINAL].values\n", + "\n", + "X_train, X_temp, y_train, y_temp = train_test_split(\n", + " X, y, test_size=0.30, random_state=42, stratify=y\n", + ")\n", + "\n", + "X_val, X_test, y_val, y_test = train_test_split(\n", + " X_temp, y_temp, test_size=0.50, random_state=42, stratify=y_temp\n", + ")\n", + "\n", + "print(\"Train:\", len(X_train), \"Val:\", len(X_val), \"Test:\", len(X_test))\n", + "print(\"Distribución train:\", np.bincount(y_train) if set(np.unique(y_train))=={0,1} else \"labels:\", np.unique(y_train))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2YPXlFvV8fyM", + "outputId": "b9f57c71-b65b-487d-920d-a6bc97ae3cb1" + }, + "execution_count": 19, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Train: 3541 Val: 759 Test: 759\n", + "Distribución train: [1219 2322] [0 1]\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Modelo 1: Baseline (TF-IDF + Logistic Regression)" + ], + "metadata": { + "id": "qG8ycedV8im_" + } + }, + { + "cell_type": "code", + "source": [ + "baseline = Pipeline([\n", + " (\"tfidf\", TfidfVectorizer(max_features=5000, ngram_range=(1,2))),\n", + " (\"clf\", LogisticRegression(max_iter=1000))\n", + "])\n", + "\n", + "baseline.fit(X_train, y_train)\n", + "y_pred_base = baseline.predict(X_test)\n", + "\n", + "print(\"=== BASELINE TF-IDF + Logistic Regression ===\")\n", + "print(classification_report(y_test, y_pred_base))\n", + "print(\"F1 baseline:\", f1_score(y_test, y_pred_base))\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "x6cwOluk8k1H", + "outputId": "a1f931dc-9264-4f66-d5be-ee6f3a475e9d" + }, + "execution_count": 20, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "=== BASELINE TF-IDF + Logistic Regression ===\n", + " precision recall f1-score support\n", + "\n", + " 0 0.73 0.60 0.66 261\n", + " 1 0.81 0.89 0.84 498\n", + "\n", + " accuracy 0.79 759\n", + " macro avg 0.77 0.74 0.75 759\n", + "weighted avg 0.78 0.79 0.78 759\n", + "\n", + "F1 baseline: 0.8448275862068966\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Modelo 2: LSTM (Keras)" + ], + "metadata": { + "id": "Gyc9KmOT8o1r" + } + }, + { + "cell_type": "code", + "source": [ + "import tensorflow as tf\n", + "from tensorflow.keras.preprocessing.text import Tokenizer\n", + "from tensorflow.keras.preprocessing.sequence import pad_sequences\n", + "from tensorflow.keras import layers\n", + "\n", + "MAX_WORDS = 20000\n", + "MAX_LEN = 100\n", + "\n", + "tokenizer = Tokenizer(num_words=MAX_WORDS, oov_token=\"\")\n", + "tokenizer.fit_on_texts(X_train)\n", + "\n", + "train_seq = tokenizer.texts_to_sequences(X_train)\n", + "val_seq = tokenizer.texts_to_sequences(X_val)\n", + "test_seq = tokenizer.texts_to_sequences(X_test)\n", + "\n", + "X_train_pad = pad_sequences(train_seq, maxlen=MAX_LEN, padding=\"post\", truncating=\"post\")\n", + "X_val_pad = pad_sequences(val_seq, maxlen=MAX_LEN, padding=\"post\", truncating=\"post\")\n", + "X_test_pad = pad_sequences(test_seq, maxlen=MAX_LEN, padding=\"post\", truncating=\"post\")\n" + ], + "metadata": { + "id": "HT9e7GUH8oeL" + }, + "execution_count": 21, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Modelo LSTM + regularización + early stopping" + ], + "metadata": { + "id": "sA7nYW2f8yjo" + } + }, + { + "cell_type": "code", + "source": [ + "from sklearn.utils.class_weight import compute_class_weight\n", + "\n", + "classes = np.unique(y_train)\n", + "class_weights = compute_class_weight(class_weight=\"balanced\", classes=classes, y=y_train)\n", + "class_weight_dict = {int(c): w for c, w in zip(classes, class_weights)}\n", + "print(\"Class weights:\", class_weight_dict)\n", + "\n", + "model = tf.keras.Sequential([\n", + " layers.Embedding(MAX_WORDS, 128, input_length=MAX_LEN),\n", + " layers.SpatialDropout1D(0.2),\n", + " layers.Bidirectional(layers.LSTM(64, dropout=0.2, recurrent_dropout=0.2)),\n", + " layers.Dense(64, activation=\"relu\"),\n", + " layers.Dropout(0.3),\n", + " layers.Dense(1, activation=\"sigmoid\")\n", + "])\n", + "\n", + "model.compile(\n", + " loss=\"binary_crossentropy\",\n", + " optimizer=tf.keras.optimizers.Adam(learning_rate=1e-3),\n", + " metrics=[\"accuracy\"]\n", + ")\n", + "\n", + "early = tf.keras.callbacks.EarlyStopping(\n", + " monitor=\"val_loss\",\n", + " patience=3,\n", + " restore_best_weights=True\n", + ")\n", + "\n", + "history = model.fit(\n", + " X_train_pad, y_train,\n", + " validation_data=(X_val_pad, y_val),\n", + " epochs=10,\n", + " batch_size=64,\n", + " callbacks=[early],\n", + " class_weight=class_weight_dict,\n", + " verbose=1\n", + ")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_OKSR7fr8zS6", + "outputId": "1655e872-c32f-4b70-92f6-1748dfe90454" + }, + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Class weights: {0: np.float64(1.452420016406891), 1: np.float64(0.762489233419466)}\n", + "Epoch 1/10\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.12/dist-packages/keras/src/layers/core/embedding.py:97: UserWarning: Argument `input_length` is deprecated. Just remove it.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m56/56\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m26s\u001b[0m 318ms/step - accuracy: 0.6833 - loss: 0.6526 - val_accuracy: 0.7391 - val_loss: 0.5368\n", + "Epoch 2/10\n", + "\u001b[1m56/56\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 309ms/step - accuracy: 0.7894 - loss: 0.4790 - val_accuracy: 0.7708 - val_loss: 0.5116\n", + "Epoch 3/10\n", + "\u001b[1m56/56\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 312ms/step - accuracy: 0.8414 - loss: 0.3868 - val_accuracy: 0.7984 - val_loss: 0.4752\n", + "Epoch 4/10\n", + "\u001b[1m56/56\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m20s\u001b[0m 300ms/step - accuracy: 0.8943 - loss: 0.2999 - val_accuracy: 0.7642 - val_loss: 0.5335\n", + "Epoch 5/10\n", + "\u001b[1m56/56\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 320ms/step - accuracy: 0.9097 - loss: 0.2652 - val_accuracy: 0.7536 - val_loss: 0.5969\n", + "Epoch 6/10\n", + "\u001b[1m56/56\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 299ms/step - accuracy: 0.9172 - loss: 0.2428 - val_accuracy: 0.7615 - val_loss: 0.5925\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Evaluación LSTM (F1 + Confusión + ROC)" + ], + "metadata": { + "id": "cmeKV4rq9Bnb" + } + }, + { + "cell_type": "code", + "source": [ + "# Probabilidades y predicción binaria\n", + "y_probs = model.predict(X_test_pad).ravel()\n", + "y_pred = (y_probs >= 0.5).astype(int)\n", + "\n", + "print(\"=== LSTM ===\")\n", + "print(classification_report(y_test, y_pred))\n", + "print(\"F1 LSTM:\", f1_score(y_test, y_pred))\n", + "\n", + "cm = confusion_matrix(y_test, y_pred)\n", + "print(\"Matriz de confusión:\\n\", cm)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "kYZmuHBi9DM2", + "outputId": "2c0520a2-f59c-4cb0-8018-d34c2fc9d7e9" + }, + "execution_count": 24, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m24/24\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 37ms/step\n", + "=== LSTM ===\n", + " precision recall f1-score support\n", + "\n", + " 0 0.70 0.75 0.72 261\n", + " 1 0.86 0.83 0.85 498\n", + "\n", + " accuracy 0.80 759\n", + " macro avg 0.78 0.79 0.78 759\n", + "weighted avg 0.81 0.80 0.80 759\n", + "\n", + "F1 LSTM: 0.8451282051282051\n", + "Matriz de confusión:\n", + " [[196 65]\n", + " [ 86 412]]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "fpr, tpr, _ = roc_curve(y_test, y_probs)\n", + "roc_auc = auc(fpr, tpr)\n", + "\n", + "plt.plot(fpr, tpr, label=f\"AUC = {roc_auc:.2f}\")\n", + "plt.plot([0,1],[0,1],'--')\n", + "plt.xlabel(\"False Positive Rate\")\n", + "plt.ylabel(\"True Positive Rate\")\n", + "plt.title(\"ROC Curve (LSTM)\")\n", + "plt.legend()\n", + "plt.show()\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "ZYA22YuZ9IZv", + "outputId": "67ea5f85-367b-4c56-bcc6-2cc862999fe7" + }, + "execution_count": 25, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbmVJREFUeJzt3XmcTfUfx/HXnX3GbBgzYxjGvu9blCUmpETWUrImFSltVEgL/bKkRSmJRBGpVKIoa0rZhbFnHYxlhjHrvef3x83VNDOaO2bmzPJ+Ph730ZzvPcvnHpP7ds73fL8WwzAMRERERAoJF7MLEBEREclJCjciIiJSqCjciIiISKGicCMiIiKFisKNiIiIFCoKNyIiIlKoKNyIiIhIoaJwIyIiIoWKwo2IiIgUKgo3IiJZYLPZqF27Nq+++qrZpWTbuXPnKFasGMuWLTO7FJFcpXAjUgDMmTMHi8XieLm5uVGmTBn69+/PiRMnMtzGMAw++eQTWrVqRWBgID4+PtSpU4eXXnqJ+Pj4TI/15ZdfcvvttxMUFISHhwdhYWH06tWLn376KUu1JiYm8sYbb9CsWTMCAgLw8vKiatWqDBs2jH379mXr8+cHn332GceOHWPYsGGOtqt/Ln/88cd1tz179iwjRoygevXqeHt7ExwcTNOmTXn22We5fPkyq1evTvPne73XP49rsVhYv359uuMZhkF4eDgWi4U777zT0V6yZEkGDx7MmDFjcuisiORPbmYXICJZ99JLL1GhQgUSExP59ddfmTNnDuvXr2fXrl14eXk51rNarfTp04fPP/+cli1b8uKLL+Lj48O6desYP348ixYtYuXKlYSEhDi2MQyDgQMHMmfOHBo0aMDIkSMJDQ3l1KlTfPnll7Rr144NGzbQokWLTOuLiYmhY8eObN68mTvvvJM+ffrg6+tLVFQUCxYs4IMPPiA5OTlXz1FumTRpEvfccw8BAQFObXf+/HkaN25MXFwcAwcOpHr16pw7d44dO3bw3nvv8fDDD1OjRg0++eSTNNuNHj0aX19fnn/++Uz37eXlxaeffsott9ySpn3NmjUcP34cT0/PdNsMHTqUt956i59++om2bds69VlECgxDRPK92bNnG4Dx+++/p2l/9tlnDcBYuHBhmvYJEyYYgPHUU0+l29fSpUsNFxcXo2PHjmnaJ02aZADG448/bthstnTbzZ071/jtt9+uW+cdd9xhuLi4GIsXL073XmJiovHkk09ed/usSklJMZKSknJkX1mxZcsWAzBWrlyZpj2zP5d/ev311w3A2LBhQ7r3YmNjjYSEhAy3q1WrltG6desM37t63G7duhlBQUFGSkpKmvcffPBBo1GjRkb58uWNO+64I932tWvXNvr27ZtpzSIFnW5LiRRgLVu2BODgwYOOtoSEBCZNmkTVqlWZOHFium06d+5Mv379WL58Ob/++qtjm4kTJ1K9enUmT57suP3xT3379qVp06aZ1vLbb7/x3XffMWjQILp3757ufU9PTyZPnuxYbtOmDW3atEm3Xv/+/YmIiHAsHzlyBIvFwuTJk5k2bRqVKlXC09OTrVu34ubmxvjx49PtIyoqCovFwjvvvONou3jxIo8//jjh4eF4enpSuXJl/ve//2Gz2TL9TFd99dVXeHh40KpVq/9c998OHjyIq6srN910U7r3/P3901xxc9a9997LuXPn+PHHHx1tycnJLF68mD59+mS63W233cY333yDYRjZPrZIfqZwI1KAHTlyBIDixYs72tavX8+FCxfo06cPbm4Z33l+4IEHAPj2228d25w/f54+ffrg6uqarVqWLl0K2ENQbpg9ezZvv/02Q4YMYcqUKZQuXZrWrVvz+eefp1t34cKFuLq60rNnTwCuXLlC69atmTdvHg888ABvvfUWN998M6NHj2bkyJH/eexffvmF2rVr4+7u7nTd5cuXx2q1prvtlBMiIiJo3rw5n332maPt+++/JzY2lnvuuSfT7Ro1asTFixf5888/c7wmkfxAfW5ECpDY2FhiYmJITEzkt99+Y/z48Xh6eqbpNLp7924A6tWrl+l+rr63Z8+eNP+tU6dOtmvLiX1cz/Hjxzlw4AClSpVytPXu3ZuHHnqIXbt2Ubt2bUf7woULad26taNP0dSpUzl48CBbt26lSpUqADz00EOEhYUxadIknnzyScLDwzM99t69e2nWrFm26h44cCBvvPEG/fv357XXXqNNmza0atWKTp06Od1/JyN9+vRh9OjRJCQk4O3tzfz582ndujVhYWGZblOxYkXA/rvyz/MmUljoyo1IARIZGUmpUqUIDw+nR48eFCtWjKVLl1K2bFnHOpcuXQLAz88v0/1cfS8uLi7Nf6+3zX/JiX1cT/fu3dMEG4Bu3brh5ubGwoULHW27du1i9+7d9O7d29G2aNEiWrZsSfHixYmJiXG8IiMjsVqtrF279rrHPnfuXJqrY84ICQlh+/btDB06lAsXLjBjxgz69OlDcHAwL7/88g3fGurVqxcJCQl8++23XLp0iW+//fa6t6Tg2pW+mJiYGzq2SH6lcCNSgEyfPp0ff/yRxYsX06lTJ2JiYtI9EXM1XFwNORn5dwDy9/f/z23+S07s43oqVKiQri0oKIh27dqluTW1cOFC3Nzc6Natm6Nt//79LF++nFKlSqV5RUZGAnDmzJn/PP6NhJDSpUvz3nvvcerUKaKionjrrbcoVaoUY8eOZdasWdneL+D4HJ9++ilLlizBarXSo0eP625z9bNk1LdKpDDQbSmRAqRp06Y0btwYgK5du3LLLbfQp08foqKi8PX1BaBGjRoA7Nixg65du2a4nx07dgBQs2ZNAKpXrw7Azp07M93mv/xzH1c7Ol+PxWLJMDBYrdYM1/f29s6w/Z577mHAgAFs27aN+vXr8/nnn9OuXTuCgoIc69hsNm677TaeeeaZDPdRtWrV69ZasmRJLly4cN11ssJisVC1alWqVq3KHXfcQZUqVZg/fz6DBw++of326dOHBx98kOjoaG6//XYCAwOvu/7Vz/LPcyRSmOjKjUgB5erqysSJEzl58mSap4JuueUWAgMD+fTTTzMNCnPnzgVw9NW55ZZbKF68OJ999lmm2/yXzp07AzBv3rwsrV+8eHEuXryYrv2vv/5y6rhdu3bFw8ODhQsXsm3bNvbt25euM22lSpW4fPkykZGRGb7KlSt33WNUr16dw4cPO1XXf6lYsSLFixfn1KlTN7yvu+++GxcXF3799df/vCUFOD7L1SAsUtgo3IgUYG3atKFp06ZMmzaNxMREAHx8fHjqqaeIiorKcAC47777jjlz5tChQwfH48k+Pj48++yz7Nmzh2effTbDKyrz5s1j06ZNmdbSvHlzOnbsyIcffshXX32V7v3k5GSeeuopx3KlSpXYu3cvZ8+edbRt376dDRs2ZPnzAwQGBtKhQwc+//xzFixYgIeHR7qrT7169WLjxo2sWLEi3fYXL14kNTX1usdo3rw5u3btIikpyanawP6IfEYjQm/atIlz585RrVo1p/f5b76+vrz33nu8+OKLjpB5PZs3byYgIIBatWrd8LFF8iPdlhIp4J5++ml6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Pj7p9jNy5EgGDx7MJ5984ri1UqlSJcB+y2rHjh3Mnz/fsb5hGNhsNg4fPkyNGjUyrC02NhZfX19sNhuJiYnccsstfPjhh8TFxXHy5EluvvnmNOvffPPNbN++HbDfUrrtttuoVq0aHTt25M4776R9+/Y3dK7uu+8+HnzwQd599108PT2ZP38+99xzDy4uLo7PuWHDhjRXaqxW63XPG0C1atVYunQpiYmJzJs3j23btjF8+PA060yfPp2PPvqIo0ePkpCQQHJyMvXr179uvdu3b+fAgQP4+fmlaU9MTOTgwYPZOAMihYvCjUghVaxYMSpXrpym7ciRI9x55508/PDDvPrqq5QoUYL169czaNAgkpOTM/ySfvHFF+nTpw/fffcd33//PePGjWPBggXcfffdXL58mYceeojHHnss3XblypXLtDY/Pz+2bNmCi4sLpUuXxtvbG4C4uLj//FwNGzbk8OHDfP/996xcuZJevXoRGRnJ4sWL/3PbzHTu3BnDMPjuu+9o0qQJ69at44033nC8f/nyZcaPH0+3bt3Sbevl5ZXpfj08PBx/Bq+99hp33HEH48eP5+WXXwZgwYIFPPXUU0yZMoXmzZvj5+fHpEmT+O23365b7+XLl2nUqFGaUHlVfuk0LmImhRuRImTz5s3YbDamTJniuCpxtX/H9VStWpWqVavyxBNPcO+99zJ79mzuvvtuGjZsyO7du9OFqP/i4uKS4Tb+/v6EhYWxYcMGWrdu7WjfsGEDTZs2TbNe79696d27Nz169KBjx46cP3+eEiVKpNnf1f4tVqv1uvV4eXnRrVs35s+fz4EDB6hWrRoNGzZ0vN+wYUOioqKc/pz/9sILL9C2bVsefvhhx+ds0aIFjzzyiGOdf1958fDwSFd/w4YNWbhwIcHBwfj7+99QTSKFkToUixQhlStXJiUlhbfffptDhw7xySefMGPGjEzXT0hIYNiwYaxevZq//vqLDRs28PvvvztuNz377LP88ssvDBs2jG3btrF//36+/vprpzsU/9PTTz/N//73PxYuXEhUVBSjRo1i27ZtjBgxAoCpU6fy2WefsXfvXvbt28eiRYsIDQ3NcODB4OBgvL29Wb58OadPnyY2NjbT495333189913fPTRR46OxFeNHTuWuXPnMn78eP7880/27NnDggULeOGFF5z6bM2bN6du3bpMmDABgCpVqvDHH3+wYsUK9u3bx5gxY/j999/TbBMREcGOHTuIiooiJiaGlJQU7rvvPoKCgujSpQvr1q3j8OHDrF69mscee4zjx487VZNIoWR2px8RyXkZdUK9aurUqUbp0qUNb29vo0OHDsbcuXMNwLhw4YJhGGk7/CYlJRn33HOPER4ebnh4eBhhYWHGsGHD0nQW3rRpk3HbbbcZvr6+RrFixYy6deum6xD8T//uUPxvVqvVePHFF40yZcoY7u7uRr169Yzvv//e8f4HH3xg1K9f3yhWrJjh7+9vtGvXztiyZYvjff7RodgwDGPmzJlGeHi44eLiYrRu3TrT82O1Wo3SpUsbgHHw4MF0dS1fvtxo0aKF4e3tbfj7+xtNmzY1Pvjgg0w/x7hx44x69eqla//ss88MT09P4+jRo0ZiYqLRv39/IyAgwAgMDDQefvhhY9SoUWm2O3PmjOP8AsbPP/9sGIZhnDp1ynjggQeMoKAgw9PT06hYsaLx4IMPGrGxsZnWJFJUWAzDMMyNVyIiIiI5R7elREREpFBRuBEREZFCReFGREREChWFGxERESlUFG5ERESkUFG4ERERkUJF4UZEREQKFYUbERERKVQUbkRERKRQUbgRERGRQkXhRkRERAoVhRsREREpVP4Px5ghv0gmpYEAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Comparación final" + ], + "metadata": { + "id": "Cug1v7Ep9Mg2" + } + }, + { + "cell_type": "code", + "source": [ + "f1_base = f1_score(y_test, y_pred_base)\n", + "f1_lstm = f1_score(y_test, y_pred)\n", + "\n", + "print(f\"F1 Baseline: {f1_base:.4f}\")\n", + "print(f\"F1 LSTM: {f1_lstm:.4f}\")\n", + "\n", + "if f1_lstm > f1_base:\n", + " print(\"✅ LSTM mejora al baseline.\")\n", + "else:\n", + " print(\"⚠️ El baseline iguala o supera a LSTM (muy común con datasets pequeños).\")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wz66z51c9OVy", + "outputId": "f9028035-2fef-48f8-f592-387ed099d92d" + }, + "execution_count": 26, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "F1 Baseline: 0.8448\n", + "F1 LSTM: 0.8451\n", + "✅ LSTM mejora al baseline.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Interpretación rápida (ejemplos de errores)" + ], + "metadata": { + "id": "jHQ18p1c9R86" + } + }, + { + "cell_type": "code", + "source": [ + "test_df = pd.DataFrame({\n", + " \"text\": X_test,\n", + " \"y_true\": y_test,\n", + " \"y_pred\": y_pred,\n", + " \"prob_pos\": y_probs\n", + "})\n", + "\n", + "errors = test_df[test_df[\"y_true\"] != test_df[\"y_pred\"]].sort_values(\"prob_pos\", ascending=False)\n", + "errors.head(10)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "iGqPC9LP9UXG", + "outputId": "c42193e5-2703-4b1c-fa86-84e69d335f2c" + }, + "execution_count": 27, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " text y_true y_pred \\\n", + "498 good great reliable awesome and above all easy... 0 1 \n", + "285 nice chatting 0 1 \n", + "246 l like this app and l rate five star 0 1 \n", + "27 good app 0 1 \n", + "488 important features missing shedule messages us... 0 1 \n", + "29 a good app 0 1 \n", + "126 its my life 0 1 \n", + "70 this app really works for communication and so... 0 1 \n", + "382 arratai is best 0 1 \n", + "544 really useful but it becomes more and more ful... 0 1 \n", + "\n", + " prob_pos \n", + "498 0.991205 \n", + "285 0.985454 \n", + "246 0.974760 \n", + "27 0.956187 \n", + "488 0.954421 \n", + "29 0.946731 \n", + "126 0.946695 \n", + "70 0.944390 \n", + "382 0.934909 \n", + "544 0.934733 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
texty_truey_predprob_pos
498good great reliable awesome and above all easy...010.991205
285nice chatting010.985454
246l like this app and l rate five star010.974760
27good app010.956187
488important features missing shedule messages us...010.954421
29a good app010.946731
126its my life010.946695
70this app really works for communication and so...010.944390
382arratai is best010.934909
544really useful but it becomes more and more ful...010.934733
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "errors", + "summary": "{\n \"name\": \"errors\",\n \"rows\": 151,\n \"fields\": [\n {\n \"column\": \"text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 151,\n \"samples\": [\n \"hi whatsapp developers is it possible to make disappearing groups so after 90 days a group deletes and disappears automatically we use groups to organize get togethers but after the get together you never use the group again\",\n \"it is very good for evreone\",\n \"plz make some privacy like hide chats and lock chats and front light during vedio calls are the best things but u switched them off why\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"y_true\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 1,\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"y_pred\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 0,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"prob_pos\",\n \"properties\": {\n \"dtype\": \"float32\",\n \"num_unique_values\": 151,\n \"samples\": [\n 0.42752373218536377,\n 0.9180647134780884\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 27 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "*Conclusiones*\n", + "\n", + "Se desarrolló un pipeline completo para la clasificación binaria de texto, incluyendo limpieza, división del dataset, modelado y evaluación.\n", + "\n", + "El modelo baseline (TF-IDF + Regresión Logística) proporcionó un rendimiento sólido y sirvió como referencia inicial. Posteriormente, se implementó una red LSTM para capturar mejor el contexto secuencial del texto.\n", + "\n", + "La evaluación se realizó utilizando F1-score, matriz de confusión y curva ROC, priorizando F1 debido al desbalance de clases.\n", + "\n", + "Los resultados muestran que los modelos clásicos pueden ser competitivos, mientras que las redes neuronales permiten capturar relaciones más complejas en el lenguaje.\n", + "\n", + "Como mejoras futuras se propone optimizar hiperparámetros, ajustar el umbral de decisión y explorar modelos basados en Transformers." + ], + "metadata": { + "id": "aPE9LHYe9Zvn" + } + } + ] +} \ No newline at end of file diff --git a/ejercicios_pandas.ipynb b/ejercicios_pandas.ipynb new file mode 100644 index 0000000..2095123 --- /dev/null +++ b/ejercicios_pandas.ipynb @@ -0,0 +1,1242 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "j5lDlxOk2pUN" + }, + "source": [ + "# Ejercicios de Pandas\n", + "\n", + "**Instrucciones:**\n", + "- Lee cada enunciado cuidadosamente\n", + "- Los ejercicios requieren combinar varias operaciones de pandas\n", + "- Intenta resolver cada problema paso a paso\n", + "- Algunos ejercicios tienen múltiples soluciones válidas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4KHX68gd2pUR" + }, + "outputs": [], + "source": [ + "# Importar librerías\n", + "import pandas as pd\n", + "import numpy as np\n", + "from datetime import datetime, timedelta" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "D7N9cgx12pUT" + }, + "outputs": [], + "source": [ + "# Cargar los datos\n", + "data = pd.read_csv(\"material/data.csv\")\n", + "data.head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3QaVtw7L2pUU" + }, + "source": [ + "---\n", + "\n", + "### Ejercicio 1: Clientes VIP\n", + "Identifica a los clientes VIP basándote en los siguientes criterios:\n", + "- Han realizado al menos 3 órdenes diferentes\n", + "- Su gasto total supera los 100€\n", + "- El precio medio de sus compras es superior a 30€\n", + "\n", + "Crea un DataFrame con:\n", + "- `order_customer_id`\n", + "- Número de órdenes\n", + "- Gasto total\n", + "- Gasto medio\n", + "- Una columna booleana `es_vip` que indique si cumple los 3 criterios\n", + "\n", + "Ordena el resultado por gasto total descendente." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kCxVwc2f2pUU" + }, + "source": [ + "### Ejercicio 2: Análisis de Cestas de Compra\n", + "Para cada orden (`order_id`), calcula:\n", + "- Número total de productos en la orden\n", + "- Número de unidades totales compradas\n", + "- Importe total de la orden\n", + "- Número de familias de productos diferentes en la orden\n", + "- Precio medio por producto\n", + "\n", + "Luego identifica:\n", + "- Las 5 órdenes con mayor diversidad de productos (más familias diferentes)\n", + "- Las 5 órdenes con mayor importe total\n", + "- ¿Hay solapamiento entre estas dos listas?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "jQbacqwq2pUV" + }, + "outputs": [], + "source": [ + "# Tu código aquí\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UoVmsi5r2pUV" + }, + "source": [ + "### Ejercicio 3: Patrón de Compra Recurrente\n", + "Identifica qué clientes compran regularmente (tienen órdenes en al menos 3 fechas diferentes) y cuál es su familia de productos favorita (la que más compran en términos de cantidad total).\n", + "\n", + "Crea un DataFrame que muestre:\n", + "- `order_customer_id`\n", + "- Número de días diferentes en que ha comprado\n", + "- Familia de productos favorita\n", + "- Cantidad total comprada de esa familia\n", + "- Porcentaje que representa esa familia sobre sus compras totales" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGtSrE1s2pUW" + }, + "source": [ + "\n", + "\n", + "### Ejercicio 4: Tendencia de Ventas\n", + "Convierte la columna `fecha` a datetime y realiza el siguiente análisis:\n", + "\n", + "1. Calcula las ventas diarias totales (suma de `price`)\n", + "2. Añade una columna con la diferencia porcentual respecto al día anterior\n", + "3. Identifica los 3 días con mayor crecimiento porcentual\n", + "4. Identifica los 3 días con mayor caída porcentual\n", + "\n" + ] + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "data = pd.read_csv(\"data.csv\") # ← sin 'material/'\n", + "data.head(10)\n" + ], + "metadata": { + "id": "_gTqZyJe8vTf", + "outputId": "a5f311a2-fb46-438a-aaac-f8df96d053d0", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + } + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " order_id fecha order_customer_id product_id \\\n", + "0 1016330781887 2023-05-29 6451824076 IAM925P00XXZPUDIA \n", + "1 1095376438463 2023-07-16 664062345899 OTS925P00XXZPUDOT \n", + "2 1047641588927 2023-06-17 642133246635 UND925P00XXZCOMUN \n", + "3 1181322118257 2023-08-29 714672128644 OTS925A00XXZPUDOT \n", + "4 1017492866239 2023-05-30 196440539724 IMO925P00XXZTOMIM \n", + "5 480728843265 2023-03-27 226613674572 UDL925P00XXVPUSUD \n", + "6 457358836737 2023-03-10 244904182348 UND925P00XXZCOMUN \n", + "7 1001207956671 2023-05-21 621451002539 OTS925P00XXZTODOT \n", + "8 1057963181247 2023-06-23 647359906475 UND925P00XXZCOMUN \n", + "9 1095376438463 2023-07-16 664062345899 OTS925P00XXZPUDOT \n", + "\n", + " unit_price quantity price product_family latitude longitude \n", + "0 19.0 8 152.0 Pulsera 37.788617 -3.790215 \n", + "1 19.0 6 114.0 Pulsera 40.299542 -3.926774 \n", + "2 25.0 5 125.0 Collar 39.651927 -0.411277 \n", + "3 19.0 4 76.0 Pulsera 39.456511 -0.346203 \n", + "4 25.0 3 75.0 Tobillera 37.394171 -5.957857 \n", + "5 25.0 3 75.0 Pulsera 38.984944 -3.927849 \n", + "6 25.0 3 75.0 Collar 40.604510 -4.339488 \n", + "7 19.0 3 57.0 Tobillera 40.804126 0.516218 \n", + "8 25.0 3 75.0 Collar 41.361692 2.129037 \n", + "9 19.0 3 57.0 Pulsera 40.299542 -3.926774 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
order_idfechaorder_customer_idproduct_idunit_pricequantitypriceproduct_familylatitudelongitude
010163307818872023-05-296451824076IAM925P00XXZPUDIA19.08152.0Pulsera37.788617-3.790215
110953764384632023-07-16664062345899OTS925P00XXZPUDOT19.06114.0Pulsera40.299542-3.926774
210476415889272023-06-17642133246635UND925P00XXZCOMUN25.05125.0Collar39.651927-0.411277
311813221182572023-08-29714672128644OTS925A00XXZPUDOT19.0476.0Pulsera39.456511-0.346203
410174928662392023-05-30196440539724IMO925P00XXZTOMIM25.0375.0Tobillera37.394171-5.957857
54807288432652023-03-27226613674572UDL925P00XXVPUSUD25.0375.0Pulsera38.984944-3.927849
64573588367372023-03-10244904182348UND925P00XXZCOMUN25.0375.0Collar40.604510-4.339488
710012079566712023-05-21621451002539OTS925P00XXZTODOT19.0357.0Tobillera40.8041260.516218
810579631812472023-06-23647359906475UND925P00XXZCOMUN25.0375.0Collar41.3616922.129037
910953764384632023-07-16664062345899OTS925P00XXZPUDOT19.0357.0Pulsera40.299542-3.926774
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "data", + "summary": "{\n \"name\": \"data\",\n \"rows\": 3000,\n \"fields\": [\n {\n \"column\": \"order_id\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 257580459980,\n \"min\": 446413210625,\n \"max\": 1273556763761,\n \"num_unique_values\": 1657,\n \"samples\": [\n 1117395354737,\n 1039836710079,\n 929988084927\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"fecha\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 213,\n \"samples\": [\n \"2023-07-19\",\n \"2023-05-26\",\n \"2023-08-06\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"order_customer_id\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 270687770943,\n \"min\": 4438242304,\n \"max\": 719731344004,\n \"num_unique_values\": 1314,\n \"samples\": [\n 688623764100,\n 4438242304,\n 634735248043\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"product_id\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 299,\n \"samples\": [\n \"EZI925P0012ZANSEZ\",\n \"EBB925A0016ZANPEB\",\n \"RIN925P00XXZPUTRI\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"unit_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.930805420394679,\n \"min\": 14.25,\n \"max\": 199.0,\n \"num_unique_values\": 28,\n \"samples\": [\n 49.0,\n 29.97,\n 29.95\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"quantity\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 1,\n \"max\": 8,\n \"num_unique_values\": 7,\n \"samples\": [\n 8,\n 6,\n 2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 9.868082751052997,\n \"min\": 14.25,\n \"max\": 199.0,\n \"num_unique_values\": 46,\n \"samples\": [\n 69.95,\n 39.0,\n 22.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"product_family\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Collar\",\n \"Anillo\",\n \"Tobillera\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"latitude\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.750785950574558,\n \"min\": 35.2939408,\n \"max\": 43.5727616,\n \"num_unique_values\": 1108,\n \"samples\": [\n 39.4821362,\n 41.6200527,\n 39.5231384\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"longitude\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.670874292196368,\n \"min\": -9.245002999999999,\n \"max\": 3.0790038,\n \"num_unique_values\": 1108,\n \"samples\": [\n -0.4470541,\n -0.9232287999999998,\n -1.1730129\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "data['fecha'] = pd.to_datetime(data['fecha'])\n", + "\n", + "compras = data.groupby(\"fecha\", as_index=False).agg({\n", + " \"price\": \"sum\"\n", + "})\n", + "\n", + "compras[\"ventas_dia_anterior\"] = compras[\"price\"].shift(1)\n", + "compras.head()\n", + "\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "pgfd5m_A5MIE", + "outputId": "2d20608a-c23f-4709-822e-231f16b8986a" + }, + "execution_count": 9, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " fecha price ventas_dia_anterior\n", + "0 2023-03-03 436.0 NaN\n", + "1 2023-03-04 372.0 436.0\n", + "2 2023-03-05 75.0 372.0\n", + "3 2023-03-06 723.0 75.0\n", + "4 2023-03-07 732.0 723.0" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
fechapriceventas_dia_anterior
02023-03-03436.0NaN
12023-03-04372.0436.0
22023-03-0575.0372.0
32023-03-06723.075.0
42023-03-07732.0723.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "compras", + "summary": "{\n \"name\": \"compras\",\n \"rows\": 213,\n \"fields\": [\n {\n \"column\": \"fecha\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2023-03-03 00:00:00\",\n \"max\": \"2023-10-03 00:00:00\",\n \"num_unique_values\": 213,\n \"samples\": [\n \"2023-03-12 00:00:00\",\n \"2023-09-17 00:00:00\",\n \"2023-05-08 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 246.56988607966585,\n \"min\": 29.95,\n \"max\": 1289.0,\n \"num_unique_values\": 188,\n \"samples\": [\n 85.9,\n 603.4,\n 384.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ventas_dia_anterior\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 247.11783061661637,\n \"min\": 29.95,\n \"max\": 1289.0,\n \"num_unique_values\": 188,\n \"samples\": [\n 85.9,\n 603.4,\n 384.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 9 + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "GLkCg0ED8iyv" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "r28pKX8Z2pUX" + }, + "source": [ + "### Ejercicio 5: Análisis de Fin de Semana vs Entre Semana\n", + "Compara el comportamiento de compra entre fin de semana (sábado y domingo) y entre semana:\n", + "\n", + "Para cada segmento calcula:\n", + "- Número de órdenes únicas\n", + "- Ticket medio (precio medio por orden)\n", + "- Productos por orden (media)\n", + "- Familia de productos más vendida\n", + "- Porcentaje de ventas de cada familia\n", + "\n", + "Presenta los resultados en un formato que permita comparar fácilmente ambos segmentos." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5jihMRTc2pUX" + }, + "source": [ + "### Ejercicio 6: Cohort Analysis Simplificado\n", + "Realiza un análisis de cohortes básico:\n", + "\n", + "1. Para cada cliente, identifica la fecha de su primera compra (fecha de adquisición)\n", + "2. Agrupa a los clientes por semana de adquisición\n", + "3. Para cada cohorte, calcula:\n", + " - Número de clientes en la cohorte\n", + " - Gasto total de la cohorte\n", + " - Gasto medio por cliente\n", + " - Número medio de órdenes por cliente\n", + " \n", + "Ordena las cohortes de más antigua a más reciente." + ] + }, + { + "cell_type": "code", + "source": [ + "#primero hago la semana\n", + "data[\"week\"] = data [\"fecha\"].dt.to_period(\"W\")\n", + "data[['fecha', \"week\"]]\n", + "\n", + "#Agrupa a los clientes por semana de adquisición\n", + "data[\"week\"] = data [\"fecha\"].dt.to_period(\"W\")" + ], + "metadata": { + "id": "V-z1sOcLGwvB" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eL2AXUe62pUX" + }, + "source": [ + "\n", + "### Ejercicio 7: Elasticidad de Cantidad\n", + "Analiza cómo varía la cantidad comprada según el precio unitario:\n", + "\n", + "1. Crea rangos de precio unitario (bins): 0-20, 20-40, 40-60, 60+\n", + "2. Para cada rango y cada familia de productos, calcula:\n", + " - Cantidad media comprada\n", + " - Número de transacciones\n", + "3. Crea una tabla pivote que muestre la cantidad media comprada con:\n", + " - Filas: familias de productos\n", + " - Columnas: rangos de precio\n", + "4. ¿Qué familia de productos es menos sensible al precio (mantiene cantidades altas incluso a precios altos)?" + ] + }, + { + "cell_type": "code", + "source": [ + "data[\"rango_precio\"] = pd.cut(\n", + " data[\"unit_price\"],\n", + " [0, 20, 40, 60, float (\"inf\")],\n", + " [\"0-20\", \"20-40\", \"40-60\", \"60+\"],\n", + " right=False,\n", + " include_lowest=True\n", + ")\n", + "\n", + "data" + ], + "metadata": { + "id": "LuYH-PtYRR8T", + "outputId": "ef0d46fc-f0d6-45b8-aba6-ff63c6f2d580", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 216 + } + }, + "execution_count": 30, + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "cut() got multiple values for argument 'right'", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipython-input-1917686339.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m data[\"rango_precio\"] = pd.cut(\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"unit_price\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m20\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m40\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m60\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfloat\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"inf\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"0-20\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"20-40\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"40-60\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"60+\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: cut() got multiple values for argument 'right'" + ] + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "l7MnQcBNMvQB" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rAvD5rwK2pUY" + }, + "source": [ + "### Ejercicio 8: Análisis de Margen de Contribución\n", + "Simula el coste del producto (como mucho 40% del `unit_price`). Calcula para cada familia de productos:\n", + "\n", + "1. Margen unitario promedio (unit_price - coste)\n", + "2. Margen total (suma de todos los márgenes de las ventas)\n", + "3. Contribución al margen total del negocio (porcentaje)\n", + "\n", + "Ordena por contribución al margen descendente. ¿Cuál es la familia más rentable?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UMezZOAx2pUY" + }, + "source": [ + "\n", + "\n", + "### Ejercicio 9: Segmentación RFM (Recency, Frequency, Monetary)\n", + "Crea una segmentación RFM de clientes:\n", + "\n", + "1. **Recency**: Días desde la última compra (usa la fecha más reciente del dataset como referencia)\n", + "2. **Frequency**: Número de órdenes del cliente\n", + "3. **Monetary**: Gasto total del cliente\n", + "\n", + "Para cada métrica:\n", + "- Asigna un score de 1 a 4 usando cuartiles (1=peor, 4=mejor)\n", + "- Para Recency, invierte la lógica (menor recency = mejor = score más alto)\n", + "\n", + "Crea una columna `RFM_Score` concatenando los tres scores (ej: \"444\" = cliente excelente).\n", + "\n", + "Finalmente, clasifica a los clientes en segmentos de tu ínteres.\n", + "\n", + "¿Cuántos clientes hay en cada segmento?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MHHEJ8kN2pUY" + }, + "source": [ + "### Ejercicio 10: Análisis de Pareto (80/20)\n", + "Realiza un análisis de Pareto para identificar:\n", + "\n", + "1. **A nivel de clientes**: ¿Qué porcentaje de clientes genera el 80% de los ingresos?\n", + "2. **A nivel de productos**: ¿Qué porcentaje de familias de productos genera el 80% de los ingresos?\n", + "3. **A nivel de órdenes**: ¿Qué porcentaje de órdenes representa el 80% de los ingresos?\n", + "\n", + "Para cada análisis:\n", + "- Ordena por ingresos descendente\n", + "- Calcula el porcentaje acumulado de ingresos\n", + "- Identifica el punto donde se alcanza el 80%\n", + "- Calcula qué porcentaje del total representa ese punto" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Hkq0rHcN2pUY" + }, + "source": [ + "### Ejercicio 11: Análisis de Días Anómalos\n", + "Identifica días con comportamiento de ventas anómalo:\n", + "\n", + "1. Calcula las ventas diarias totales\n", + "2. Calcula la media y desviación estándar de las ventas diarias\n", + "3. Identifica días \"anómalos\":\n", + " - Días con ventas > media + 1.5*desviación_estándar (picos)\n", + " - Días con ventas < media - 1.5*desviación_estándar (caídas)\n", + "\n", + "4. Para los días anómalos, analiza:\n", + " - ¿Qué día de la semana son?\n", + " - ¿Qué porcentaje de ventas aportaron cada familia en esos días?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jyTEzI_x2pUZ" + }, + "source": [ + "\n", + "### Ejercicio 12: Predicción de Próxima Compra\n", + "Para cada cliente que haya comprado más de una vez:\n", + "\n", + "1. Calcula el tiempo medio entre compras (en días)\n", + "2. Calcula la desviación estándar del tiempo entre compras\n", + "3. Identifica la fecha de la última compra\n", + "4. Predice cuándo hará su próxima compra: última_compra + tiempo_medio\n", + "5. Calcula un \"intervalo de confianza\" simple: próxima_compra ± desviación_estándar\n", + "\n", + "Clasifica a los clientes en:\n", + "- \"Debería comprar pronto\": próxima compra predicha ya pasó\n", + "- \"Compra inminente\": próxima compra en los próximos 7 días\n", + "- \"No urgente\": próxima compra en más de 7 días" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "inEJ1RQa2pUZ" + }, + "source": [ + "### Ejercicio 13: Reporte Ejecutivo Automatizado\n", + "Crea una función que genere un reporte ejecutivo automático:\n", + "\n", + "La función debe:\n", + "1. Recibir el DataFrame y un rango de fechas\n", + "2. Filtrar los datos por ese rango\n", + "3. Calcular y retornar un diccionario con:\n", + " - Resumen de ventas (total, media diaria, tendencia)\n", + " - Top 5 clientes\n", + " - Top 3 productos\n", + " - Alertas (días con caídas >20%, clientes con comportamiento inusual, etc.)\n", + " - Recomendaciones automáticas basadas en los datos\n", + "\n", + "Prueba la función con diferentes rangos de fechas." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8f0DhO-l2pUZ" + }, + "outputs": [], + "source": [ + "# Tu código aquí\n", + "def generar_reporte_ejecutivo(df, fecha_inicio, fecha_fin):\n", + " \"\"\"\n", + " Genera un reporte ejecutivo automático para un rango de fechas.\n", + "\n", + " Parameters:\n", + " -----------\n", + " df : DataFrame\n", + " DataFrame con los datos de ventas\n", + " fecha_inicio : str\n", + " Fecha de inicio en formato 'YYYY-MM-DD'\n", + " fecha_fin : str\n", + " Fecha de fin en formato 'YYYY-MM-DD'\n", + "\n", + " Returns:\n", + " --------\n", + " dict : Diccionario con el reporte completo\n", + " \"\"\"\n", + " reporte = {}\n", + "\n", + " # Tu código aquí\n", + "\n", + " return reporte\n", + "\n", + "# Probar la función\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "O-1GWGJn2pUa" + }, + "source": [ + "---\n", + "## Ejercicios Extra\n", + "\n", + "### Sistema de Recomendación Simple\n", + "Basándote en el historial de compras, crea un sistema de recomendación:\n", + "\n", + "1. Para cada cliente, identifica qué familias de productos ha comprado\n", + "2. Para cada familia que ha comprado, encuentra qué otras familias compran frecuentemente los clientes que también compraron esa familia\n", + "3. Recomienda al cliente las familias que no ha comprado aún pero que son populares entre clientes similares\n", + "4. Calcula un \"score de confianza\" basado en la frecuencia de co-ocurrencia\n", + "\n", + "Prueba el sistema con 5 clientes diferentes." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OH1sjDsJ2pUa" + }, + "source": [ + "### Análisis de Supervivencia de Clientes\n", + "Realiza un análisis básico de supervivencia (retención) de clientes:\n", + "\n", + "1. Para cada cliente, calcula:\n", + " - Fecha de primera compra (cohorte)\n", + " - Fecha de última compra\n", + " - \"Tiempo de vida\" en días\n", + " - Si está \"activo\" (compró en los últimos 30 días) o \"churned\"\n", + "\n", + "2. Agrupa por cohorte (semana de primera compra) y calcula:\n", + " - Tamaño de la cohorte\n", + " - Tiempo medio de vida\n", + " - Tasa de retención (% de activos)\n", + " - Valor medio generado por cliente\n", + "\n", + "3. ¿Qué cohorte tiene mejor retención?" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.0" + }, + "colab": { + "provenance": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/titanic.ipynb b/titanic.ipynb new file mode 100644 index 0000000..9b68875 --- /dev/null +++ b/titanic.ipynb @@ -0,0 +1,7997 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qVYdMatB0tQl", + "outputId": "608acfde-086b-4471-bc74-17dcf7251a7c" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting binclass-tools\n", + " Downloading binclass_tools-1.1.2-py3-none-any.whl.metadata (40 kB)\n", + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/40.7 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m40.7/40.7 kB\u001b[0m \u001b[31m1.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.12/dist-packages (from binclass-tools) (2.0.2)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.12/dist-packages (from binclass-tools) (2.2.2)\n", + "Requirement already satisfied: scikit-learn>=0.22.1 in /usr/local/lib/python3.12/dist-packages (from binclass-tools) (1.6.1)\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.12/dist-packages (from binclass-tools) (3.10.0)\n", + "Requirement already satisfied: plotly>=5.5.0 in /usr/local/lib/python3.12/dist-packages (from binclass-tools) (5.24.1)\n", + "Requirement already satisfied: nbformat>=4.2.0 in /usr/local/lib/python3.12/dist-packages (from binclass-tools) (5.10.4)\n", + "Requirement already satisfied: fastjsonschema>=2.15 in /usr/local/lib/python3.12/dist-packages (from nbformat>=4.2.0->binclass-tools) (2.21.2)\n", + "Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.12/dist-packages (from nbformat>=4.2.0->binclass-tools) (4.25.1)\n", + "Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in /usr/local/lib/python3.12/dist-packages (from nbformat>=4.2.0->binclass-tools) (5.9.1)\n", + "Requirement already satisfied: traitlets>=5.1 in /usr/local/lib/python3.12/dist-packages (from nbformat>=4.2.0->binclass-tools) (5.7.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.12/dist-packages (from plotly>=5.5.0->binclass-tools) (8.5.0)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.12/dist-packages (from plotly>=5.5.0->binclass-tools) (25.0)\n", + "Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.12/dist-packages (from scikit-learn>=0.22.1->binclass-tools) (1.16.3)\n", + "Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.12/dist-packages (from scikit-learn>=0.22.1->binclass-tools) (1.5.2)\n", + "Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.12/dist-packages (from scikit-learn>=0.22.1->binclass-tools) (3.6.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib->binclass-tools) (1.3.3)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.12/dist-packages (from matplotlib->binclass-tools) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.12/dist-packages (from matplotlib->binclass-tools) (4.60.1)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib->binclass-tools) (1.4.9)\n", + "Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.12/dist-packages (from matplotlib->binclass-tools) (11.3.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib->binclass-tools) (3.2.5)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.12/dist-packages (from matplotlib->binclass-tools) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.12/dist-packages (from pandas->binclass-tools) (2025.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.12/dist-packages (from pandas->binclass-tools) (2025.2)\n", + "Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.12/dist-packages (from jsonschema>=2.6->nbformat>=4.2.0->binclass-tools) (25.4.0)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.12/dist-packages (from jsonschema>=2.6->nbformat>=4.2.0->binclass-tools) (2025.9.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.12/dist-packages (from jsonschema>=2.6->nbformat>=4.2.0->binclass-tools) (0.37.0)\n", + "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.12/dist-packages (from jsonschema>=2.6->nbformat>=4.2.0->binclass-tools) (0.28.0)\n", + "Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.12/dist-packages (from jupyter-core!=5.0.*,>=4.12->nbformat>=4.2.0->binclass-tools) (4.5.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.12/dist-packages (from python-dateutil>=2.7->matplotlib->binclass-tools) (1.17.0)\n", + "Requirement already satisfied: typing-extensions>=4.4.0 in /usr/local/lib/python3.12/dist-packages (from referencing>=0.28.4->jsonschema>=2.6->nbformat>=4.2.0->binclass-tools) (4.15.0)\n", + "Downloading binclass_tools-1.1.2-py3-none-any.whl (36 kB)\n", + "Installing collected packages: binclass-tools\n", + "Successfully installed binclass-tools-1.1.2\n" + ] + } + ], + "source": [ + "!pip install binclass-tools\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "FTA6x4jOuaRI" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import plotly.express as px\n", + "import bctools as bc\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TwMZ6Fd0QIab" + }, + "source": [ + "A continuación nos dedicaremos a explorar el dataset del Titanic" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + }, + "id": "0A2DEvfFugvM", + "outputId": "8561b7c3-f6c2-4607-a0d2-038d15573ca5" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " survived pclass sex age sibsp parch fare embarked class \\\n", + "0 0 3 male 22.0 1 0 7.2500 S Third \n", + "1 1 1 female 38.0 1 0 71.2833 C First \n", + "2 1 3 female 26.0 0 0 7.9250 S Third \n", + "3 1 1 female 35.0 1 0 53.1000 S First \n", + "4 0 3 male 35.0 0 0 8.0500 S Third \n", + ".. ... ... ... ... ... ... ... ... ... \n", + "886 0 2 male 27.0 0 0 13.0000 S Second \n", + "887 1 1 female 19.0 0 0 30.0000 S First \n", + "888 0 3 female NaN 1 2 23.4500 S Third \n", + "889 1 1 male 26.0 0 0 30.0000 C First \n", + "890 0 3 male 32.0 0 0 7.7500 Q Third \n", + "\n", + " who adult_male deck embark_town alive alone \n", + "0 man True NaN Southampton no False \n", + "1 woman False C Cherbourg yes False \n", + "2 woman False NaN Southampton yes True \n", + "3 woman False C Southampton yes False \n", + "4 man True NaN Southampton no True \n", + ".. ... ... ... ... ... ... \n", + "886 man True NaN Southampton no True \n", + "887 woman False B Southampton yes True \n", + "888 woman False NaN Southampton no False \n", + "889 man True C Cherbourg yes True \n", + "890 man True NaN Queenstown no True \n", + "\n", + "[891 rows x 15 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
survivedpclasssexagesibspparchfareembarkedclasswhoadult_maledeckembark_townalivealone
003male22.0107.2500SThirdmanTrueNaNSouthamptonnoFalse
111female38.01071.2833CFirstwomanFalseCCherbourgyesFalse
213female26.0007.9250SThirdwomanFalseNaNSouthamptonyesTrue
311female35.01053.1000SFirstwomanFalseCSouthamptonyesFalse
403male35.0008.0500SThirdmanTrueNaNSouthamptonnoTrue
................................................
88602male27.00013.0000SSecondmanTrueNaNSouthamptonnoTrue
88711female19.00030.0000SFirstwomanFalseBSouthamptonyesTrue
88803femaleNaN1223.4500SThirdwomanFalseNaNSouthamptonnoFalse
88911male26.00030.0000CFirstmanTrueCCherbourgyesTrue
89003male32.0007.7500QThirdmanTrueNaNQueenstownnoTrue
\n", + "

891 rows × 15 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "df", + "summary": "{\n \"name\": \"df\",\n \"rows\": 891,\n \"fields\": [\n {\n \"column\": \"survived\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 1,\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pclass\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 1,\n \"max\": 3,\n \"num_unique_values\": 3,\n \"samples\": [\n 3,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"sex\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"female\",\n \"male\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"age\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 14.526497332334044,\n \"min\": 0.42,\n \"max\": 80.0,\n \"num_unique_values\": 88,\n \"samples\": [\n 0.75,\n 22.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"sibsp\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1,\n \"min\": 0,\n \"max\": 8,\n \"num_unique_values\": 7,\n \"samples\": [\n 1,\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"parch\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 6,\n \"num_unique_values\": 7,\n \"samples\": [\n 0,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"fare\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 49.693428597180905,\n \"min\": 0.0,\n \"max\": 512.3292,\n \"num_unique_values\": 248,\n \"samples\": [\n 11.2417,\n 51.8625\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"embarked\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"S\",\n \"C\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"class\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Third\",\n \"First\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"who\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"man\",\n \"woman\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"adult_male\",\n \"properties\": {\n \"dtype\": \"boolean\",\n \"num_unique_values\": 2,\n \"samples\": [\n false,\n true\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"deck\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 7,\n \"samples\": [\n \"C\",\n \"E\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"embark_town\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Southampton\",\n \"Cherbourg\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"alive\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"yes\",\n \"no\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"alone\",\n \"properties\": {\n \"dtype\": \"boolean\",\n \"num_unique_values\": 2,\n \"samples\": [\n true,\n false\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "# Leemos los datos\n", + "df = sns.load_dataset('titanic')\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Nvj0bMDC1AWt" + }, + "source": [ + "## Exploración de datos" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 300 + }, + "id": "SirSRbVQu3kl", + "outputId": "e5175bb9-2552-4cbc-e1eb-1808da7d463f" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " survived pclass age sibsp parch fare\n", + "count 891.000000 891.000000 714.000000 891.000000 891.000000 891.000000\n", + "mean 0.383838 2.308642 29.699118 0.523008 0.381594 32.204208\n", + "std 0.486592 0.836071 14.526497 1.102743 0.806057 49.693429\n", + "min 0.000000 1.000000 0.420000 0.000000 0.000000 0.000000\n", + "25% 0.000000 2.000000 20.125000 0.000000 0.000000 7.910400\n", + "50% 0.000000 3.000000 28.000000 0.000000 0.000000 14.454200\n", + "75% 1.000000 3.000000 38.000000 1.000000 0.000000 31.000000\n", + "max 1.000000 3.000000 80.000000 8.000000 6.000000 512.329200" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
survivedpclassagesibspparchfare
count891.000000891.000000714.000000891.000000891.000000891.000000
mean0.3838382.30864229.6991180.5230080.38159432.204208
std0.4865920.83607114.5264971.1027430.80605749.693429
min0.0000001.0000000.4200000.0000000.0000000.000000
25%0.0000002.00000020.1250000.0000000.0000007.910400
50%0.0000003.00000028.0000000.0000000.00000014.454200
75%1.0000003.00000038.0000001.0000000.00000031.000000
max1.0000003.00000080.0000008.0000006.000000512.329200
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"df\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"survived\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 314.8713661874558,\n \"min\": 0.0,\n \"max\": 891.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.3838383838383838,\n 1.0,\n 0.4865924542648585\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pclass\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 314.2523437079693,\n \"min\": 0.8360712409770513,\n \"max\": 891.0,\n \"num_unique_values\": 6,\n \"samples\": [\n 891.0,\n 2.308641975308642,\n 3.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"age\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 242.9056731818781,\n \"min\": 0.42,\n \"max\": 714.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 29.69911764705882,\n 28.0,\n 714.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"sibsp\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 314.4908277465442,\n \"min\": 0.0,\n \"max\": 891.0,\n \"num_unique_values\": 6,\n \"samples\": [\n 891.0,\n 0.5230078563411896,\n 8.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"parch\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 314.65971717879,\n \"min\": 0.0,\n \"max\": 891.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.38159371492704824,\n 6.0,\n 0.8060572211299559\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"fare\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 330.6256632228577,\n \"min\": 0.0,\n \"max\": 891.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 32.204207968574636,\n 14.4542,\n 891.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "source": [ + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "sns.barplot(data=df, x=\"survived\", y=\"age\", estimator=\"mean\", errorbar=None)\n", + "plt.title(\"Edad media por supervivencia\")\n", + "plt.xlabel(\"¿Sobrevivió? (0 = No, 1 = Sí)\")\n", + "plt.ylabel(\"Edad media\")\n", + "plt.show()\n" + ], + "metadata": { + "id": "IPZL8RNMSkEd", + "outputId": "ef4ab132-f034-4a37-ee11-3d868b0c1df6", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + } + }, + "execution_count": 32, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAO+NJREFUeJzt3XlcVPX+x/H3IDKoCIQiS6KpmOGGXU0lF0xN1HIpc2sRtZvXMm9mWXpbTCtpVVvcssI2by6ZrW4ZYhpqoWYuqXjdysQUAUUFge/vjx7MzwnQQcHh2Ov5eJzHg/M93/mez5kZ5O053zNjM8YYAQAAWJCHuwsAAAC4WAQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZ4Bz79u2TzWbTnDlzSm3MZ555RjabrdTGKyurVq2SzWbTqlWrHG2DBw/WNddc47aaUHJl8R4uax06dFCHDh3cXQYsiiCDK8qcOXNks9mKXdatW+fuEgEApcjT3QUAZWHixImqU6dOofbw8HA3VGNds2fPVn5+vrvLQAnUrl1bp0+fVsWKFd1disuWL1/u7hJgYQQZXJG6deumFi1auLsMy7PSH8MCubm5ys/Pl5eXl7tLKRX5+fnKycmRt7e3S/1tNpvLfcuLK+W1gntwaQl/W+np6Ro8eLD8/Pzk7++v2NhYpaenF+q3ZcsWDR48WHXr1pW3t7eCg4M1dOhQHTt2rFDfNWvW6IYbbpC3t7fq1aunWbNmuVxPhw4d1LhxY23ZskXR0dGqXLmywsPDtXDhQklSYmKiWrVqpUqVKqlBgwb65ptvCo3x22+/aejQoQoKCpLdblejRo307rvvFur366+/qnfv3qpSpYpq1Kihhx9+WNnZ2YX6FTVH5pVXXtGNN96oatWqqVKlSmrevLmjRlePMTk5WTfeeKMqVaqkOnXqaObMmYX6HjlyRPfee6+CgoLk7e2tyMhIvffee059CuaDvPLKK5o6darq1asnu92u7du3F1vDihUr1LZtW/n7+8vHx0cNGjTQf/7zH8f2gsuT+/btc3pcUXOISnI82dnZGj9+vMLDw2W32xUWFqbHHnus0PNus9n04IMP6qOPPlKjRo1kt9v1xRdfKCAgQEOGDCk0bmZmpry9vfXoo486PScFc2ReeeUV2Ww27d+/v9Bjx40bJy8vLx0/ftzRtn79enXt2lV+fn6qXLmyoqOjtXbtWqfHFcz7SklJ0eDBg+Xv7y8/Pz8NGTJEp06dKrSfDz/8UC1btlTlypV11VVXqX379k5nYf46RyYnJ0dPP/20mjdvLj8/P1WpUkXt2rVTQkJCobEBzsjgipSRkaGjR486tdlsNlWrVk2SZIxRr169tGbNGg0fPlwRERH69NNPFRsbW2isFStW6H//+5+GDBmi4OBgbdu2TW+99Za2bdumdevWOSby/vzzz+rSpYsCAwP1zDPPKDc3V+PHj1dQUJDLdR8/fly33nqrBgwYoL59+2rGjBkaMGCAPvroI40aNUrDhw/XnXfeqZdffll33HGHDh48qKpVq0qSUlNT1bp1a8cfwsDAQC1ZskT33nuvMjMzNWrUKEnS6dOn1alTJx04cED//ve/FRoaqg8++EDffvutSzW+9tpr6tmzp+666y7l5OTo448/Vt++ffXll1/qlltucekYu3fvrn79+mngwIGaP3++7r//fnl5eWno0KGOGjt06KCUlBQ9+OCDqlOnjhYsWKDBgwcrPT1dDz30kNOY8fHxOnPmjIYNGya73a6AgIAi971t2zbdeuutatq0qSZOnCi73a6UlJRCf6hLwpXjyc/PV8+ePbVmzRoNGzZMERER+vnnnzVlyhTt2rVLixcvdhrz22+/1fz58/Xggw+qevXqql+/vm677TYtWrRIs2bNcjqDsXjxYmVnZ2vAgAFF1tevXz899thjmj9/vsaMGeO0bf78+erSpYuuuuoqx367deum5s2ba/z48fLw8FB8fLw6duyo7777Ti1btiw0dp06dRQXF6eNGzfq7bffVo0aNfTiiy86+kyYMEHPPPOMbrzxRk2cOFFeXl5av369vv32W3Xp0qXImjMzM/X2229r4MCBuu+++3TixAm98847iomJ0YYNG9SsWTOXXhv8TRjgChIfH28kFbnY7XZHv8WLFxtJ5qWXXnK05ebmmnbt2hlJJj4+3tF+6tSpQvv573//aySZ1atXO9p69+5tvL29zf79+x1t27dvNxUqVDCu/KpFR0cbSWbu3LmOtl9++cVIMh4eHmbdunWO9mXLlhWq89577zUhISHm6NGjTuMOGDDA+Pn5OY5j6tSpRpKZP3++o09WVpYJDw83kkxCQoKjPTY21tSuXdtpvL8+Hzk5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V1paWqG2gj+wBZdrCv6gr1692tEnLy+v2OfHlePp16+ffvvtN82ePbvQ40+fPq2srCyX6vfw8NAdd9yhL774Qh988IFyc3MveFmpQJ8+fVShQgX997//1YIFC3Trrbc6ha/mzZurXr16euWVV3Ty5MlCjz/3PeSq3r17y8PDQxMnTix09vJ8Z22K+r1bv369kpKSSlwDrnyckcEVacmSJY7/vZ/rxhtvVN26ddWjRw+1adNGY8eO1b59+9SwYUMtWrSo0PV3X19ftW/fXi+99JLOnj2rq6++WsuXL9fevXsLjT1hwgQtXbpU7dq10wMPPOD4w9uoUSNt2bKlzI61wAsvvKCEhAS1atVK9913nxo2bKi0tDRt3LhR33zzjeOP+H333ac333xTgwYNUnJyskJCQvTBBx+ocuXKF9zHLbfcosmTJ6tr16668847deTIEU2bNk3h4eEuH2NoaKhefPFF7du3T9dee63mzZunzZs366233nJ8AN+wYcM0a9YsDR48WMnJybrmmmu0cOFCrV27VlOnTnXccl5SEydO1OrVq3XLLbeodu3aOnLkiKZPn66aNWuqbdu2kqRGjRqpdevWGjdunNLS0hQQEKCPP/5Yubm5F30899xzj+bPn6/hw4crISFBbdq0UV5enn755RfNnz9fy5Ytc/kDHPv376833nhD48ePV5MmTRzzhi6kRo0auummmzR58mSdOHGiUADy8PDQ22+/rW7duqlRo0YaMmSIrr76av32229KSEiQr6+vvvjiC5f2VSA8PFxPPPGEnn32WbVr106333677Ha7fvjhB4WGhiouLq7Ix916661atGiRbrvtNt1yyy3au3evZs6cqYYNGxYZsvA357b7pYAycL7br/WXW1KPHTtm7rnnHuPr62v8/PzMPffcYzZt2lSo36+//mpuu+024+/vb/z8/Ezfvn3NoUOHjCQzfvx4p/0nJiaa5s2bGy8vL1O3bl0zc+ZMx62qFxIdHW0aNWpUqL127drmlltuKdQuyYwYMcKpLTU11YwYMcKEhYWZihUrmuDgYNOpUyfz1ltvOfXbv3+/6dmzp6lcubKpXr26eeihh8zSpUtduv36nXfeMfXr1zd2u91cd911Jj4+vsTH+OOPP5qoqCjj7e1tateubd58881CfVNTU82QIUNM9erVjZeXl2nSpInT62LM/99q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efNmSVJISEgZVwcAAMo7twaZESNGaO7cufrss89UtWpVHT58WJLk5+enSpUqac+ePZo7d666d++uatWqacuWLXr44YfVvn17NW3a1J2lAwCAcsCtQWbGjBmS/vzQu3PFx8dr8ODB8vLy0jfffKOpU6cqKytLYWFh6tOnj5588kk3VAsAAMobt19aOp+wsDAlJiZepmoAAIDVlKvPkQEAACgJggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAstwaZuLg43XDDDapatapq1Kih3r17a+fOnU59zpw5oxEjRqhatWry8fFRnz59lJqa6qaKAQBAeeLWIJOYmKgRI0Zo3bp1WrFihc6ePasuXbooKyvL0efhhx/WF198oQULFigxMVGHDh3S7bff7saqAQBAeeHpzp0vXbrUaX3OnDmqUaOGkpOT1b59e2VkZOidd97R3Llz1bFjR0lSfHy8IiIitG7dOrVu3brQmNnZ2crOznasZ2Zmlu1BAAAAtylXc2QyMjIkSQEBAZKk5ORknT17Vp07d3b0ue6661SrVi0lJSUVOUZcXJz8/PwcS1hYWNkXDgAA3KLcBJn8/HyNGjVKbdq0UePGjSVJhw8flpeXl/z9/Z36BgUF6fDhw0WOM27cOGVkZDiWgwcPlnXpAADATdx6aelcI0aM0NatW7VmzZpLGsdut8tut5dSVQAAoDwrF2dkHnzwQX355ZdKSEhQzZo1He3BwcHKyclRenq6U//U1FQFBwdf5ioBAEB549YgY4zRgw8+qE8//VTffvut6tSp47S9efPmqlixolauXOlo27lzpw4cOKCoqKjLXS4AAChn3HppacSIEZo7d64+++wzVa1a1THvxc/P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AACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZbk1yKxevVo9evRQaGiobDabFi9e7LTdGKOnn35aISEhqlSpkjp37qzdu3e7p1gAAFDuuDXIZGVlKTIyUtOmTSty+0svvaTXX39dM2fO1Pr161WlShXFxMTozJkzl7lSAABQHnm6c+fdunVTt27ditxmjNHUqVP15JNPqlevXpKk999/X0FBQVq8eLEGDBhwOUsFAADlULmdI7N3714dPnxYnTt3drT5+fmpVatWSkpKKvZx2dnZyszMdFoAAMCVqdwGmcOHD0uSgoKCnNqDgoIc24oSFxcnPz8/xxIWFlamdQIAAPcpt0HmYo0bN04ZGRmO5eDBg+4uCQAAlJFyG2SCg4MlSampqU7tqampjm1Fsdvt8vX1dVoAAMCVqdwGmTp16ig4OFgrV650tGVmZmr9+vWKiopyY2UAAKC8cOtdSydPnlRKSopjfe/evdq8ebMCAgJUq1YtjRo1Ss8995zq16+vOnXq6KmnnlJoaKh69+7tvqIBAEC54dYg8+OPP+qmm25yrI8ePVqSFBsbqzlz5uixxx5TVlaWhg0bpvT0dLVt21ZLly6Vt7e3u0oGAADliFuDTIcOHWSMKXa7zWbTxIkTNXHixMtYFQAAsIpyO0cGAADgQggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAssp1kHnmmWdks9mcluuuu87dZQEAgHLC090FXEijRo30zTffONY9Pct9yQAA4DIp96nA09NTwcHB7i4DAACUQ+X60pIk7d69W6Ghoapbt67uuusuHThw4Lz9s7OzlZmZ6bQAAIArU7kOMq1atdKcOXO0dOlSzZgxQ3v37lW7du104sSJYh8TFxcnPz8/xxIWFnYZKwYAAJdTuQ4y3bp1U9++fdW0aVPFxMTo66+/Vnp6uubPn1/sY8aNG6eMjAzHcvDgwctYMQAAuJzK/RyZc/n7++vaa69VSkpKsX3sdrvsdvtlrAoAALhLuT4j81cnT57Unj17FBIS4u5SAABAOVCug8yjjz6qxMRE7du3T99//71uu+02VahQQQMHDnR3aQAAoBwo15eWfv31Vw0cOFDHjh1TYGCg2rZtq3Xr1ikwMNDdpQEAgHKgXAeZjz/+2N0lAACAcqxcX1oCAAA4H4IMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLEsEmWnTpumaa66Rt7e3WrVqpQ0bNri7JAAAUA6U+yAzb948jR49WuPHj9fGjRsVGRmpmJgYHTlyxN2lAQAANyv3QWby5Mm67777NGTIEDVs2FAzZ85U5cqV9e6777q7NAAA4Gae7i7gfHJycpScnKxx48Y52jw8PNS5c2clJSUV+Zjs7GxlZ2c71jMyMiRJmZmZZVprXvbpMh0fsKKy/r27XPj9Bgor69/vgvGNMeftV66DzNGjR5WXl6egoCCn9qCgIP3yyy9FPiYuLk4TJkwo1B4WFlYmNQIont8bw91dAoAycrl+v0+cOCE/P79it5frIHMxxo0bp9GjRzvW8/PzlZaWpmrVqslms7mxMlwOmZmZCgsL08GDB+Xr6+vucgCUIn6//16MMTpx4oRCQ0PP269cB5nq1aurQoUKSk1NdWpPTU1VcHBwkY+x2+2y2+1Obf7+/mVVIsopX19f/qEDrlD8fv99nO9MTIFyPdnXy8tLzZs318qVKx1t+fn5WrlypaKiotxYGQAAKA/K9RkZSRo9erRiY2PVokULtWzZUlOnTlVWVpaGDBni7tIAAICblfsg079/f/3xxx96+umndfjwYTVr1kxLly4tNAEYkP68tDh+/PhClxcBWB+/3yiKzVzoviYAAIByqlzPkQEAADgfggwAALAsggwAALAsggwAALAsggwAALAsggyuGNOmTdM111wjb29vtWrVShs2bHB3SQBKwerVq9WjRw+FhobKZrNp8eLF7i4J5QhBBleEefPmafTo0Ro/frw2btyoyMhIxcTE6MiRI+4uDcAlysrKUmRkpKZNm+buUlAO8TkyuCK0atVKN9xwg958801Jf36VRVhYmEaOHKmxY8e6uToApcVms+nTTz9V79693V0KygnOyMDycnJylJycrM6dOzvaPDw81LlzZyUlJbmxMgBAWSPIwPKOHj2qvLy8Ql9bERQUpMOHD7upKgDA5UCQAQAAlkWQgeVVr15dFSpUUGpqqlN7amqqgoOD3VQVAOByIMjA8ry8vNS8eXOtXLnS0Zafn6+VK1cqKirKjZUBAMqap7sLAErD6NGjFRsbqxYtWqhly5aaOnWqsrKyNGTIEHeXBuASnTx5UikpKY71vXv3avPmzQoICFCtWrXcWBnKA26/xhXjzTff1Msvv6zDhw+rWbNmev3119WqVSt3lwXgEq1atUo33XRTofbY2FjNmTPn8heEcoUgAwAALIs5MgAAwLIIMgAAwLIIMgAAwLIIMgAAwLIIMgAAwLIIMgAAwLIIMgAAwLIIMgDKTEpKiiZNmqTTp0+7uxSUotTUVE2cOFFpaWnuLgUgyADlzb59+2Sz2bR582a37N9ms2nx4sUu97/mmms0derUQu1nzpzRHXfcodDQUFWqVOmSatq5c6eCg4N14sSJSxoHly43N1f9+vWTt7e3AgICNGDAAL366qvuLgt/YwQZoJTNnj1bkZGR8vHxkb+/v66//nrFxcW5uyyX/f777+rWrZvL/X/44QcNGzasUPvIkSPVu3dvDR482Kn9s88+U9u2beXr66vg4GCNHTtWF/qA8XHjxmnkyJGqWrWqo23Lli1q166dvL29FRYWppdeesnlmi9GQcCsUaNGoUDVrFkzPfPMM6W6v23btqlPnz665pprZLPZigyLZeFC798xY8YoMjJSjz32mCTpySef1PPPP6+MjIzLUh/wV3xpJFCK3n33XY0aNUqvv/66oqOjlZ2drS1btmjr1q1lul9jjPLy8uTpeem/0sHBwSXqHxgYWGT77Nmzi2xfsWKF7r//frVq1Uo///yz7rzzTkVERCg2NrbI/gcOHNCXX36pN954w9GWmZmpLl26qHPnzpo5c6Z+/vlnDR06VP7+/kWGqtJ04sQJvfLKK5owYUKZ7ufUqVOqW7eu+vbtq4cffrhM91XAlffvlClTnB7TuHFj1atXTx9++KFGjBhxWeoEnBgAF+Whhx4y0dHRTm29evUygwcPPu/j8vLyzIQJE8zVV19tvLy8TGRkpFmyZIlj+969e40k89///tdERUUZu91uGjVqZFatWuXok5CQYCSZr7/+2vzjH/8wFStWNAkJCSYvL89MmjTJXHPNNcbb29s0bdrULFiwwLHfq6++2kyfPt2pno0bNxqbzWb27dtnjDFGkvn000+NMcZERUWZxx57zKn/kSNHjKenp0lMTDTGGFO7dm0zZcoUx/b9+/ebnj17mipVqpiqVauavn37msOHDxf7fDRp0sQ8++yzxW5/+eWXTYsWLZzapk+fbq666iqTnZ3taHv88cdNgwYNih3nUhW8LmPGjDE+Pj4mNTXVsS0yMtKMHz/esZ6Wlmbuuece4+/vbypVqmS6du1qdu3addH7/utzXFZcef/GxsaaXr16ObVNmDDBtG3btgwrA4rHpSXgIgUFBalWrVpObcHBwVq3bp32799f7ONee+01vfrqq3rllVe0ZcsWxcTEqGfPntq9e7dTvzFjxuiRRx7Rpk2bFBUVpR49eujYsWNOfcaOHasXXnhBO3bsUNOmTRUXF6f3339fM2fO1LZt2/Twww/r7rvvVmJiojw8PDRw4EDNnTvXaYyPPvpIbdq0Ue3atQvVetddd+njjz92uvQzb948hYaGql27doX65+fnq1evXkpLS1NiYqJWrFih//3vf+rfv3+Rz0V8fLz27t2rfv36Fft8fffdd2rRooVTW1JSktq3by8vLy9HW0xMjHbu3Knjx48XO5aPj895l+HDhxf72AIDBw5UeHi4Jk6cWGyfwYMH68cff9Tnn3+upKQkGWPUvXt3nT179oLj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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "yzTdgQBRwI-j", + "outputId": "59ad1f26-cc30-41a2-cbd1-53ba50ffdd4d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "survived 0\n", + "pclass 0\n", + "sex 0\n", + "age 177\n", + "sibsp 0\n", + "parch 0\n", + "fare 0\n", + "embarked 2\n", + "class 0\n", + "who 0\n", + "adult_male 0\n", + "deck 688\n", + "embark_town 2\n", + "alive 0\n", + "alone 0\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "print(df.isnull().sum())\n" + ] + }, + { + "cell_type": "code", + "source": [ + "sns.barplot(data=df, x=\"sex\", y=\"age\", hue=\"survived\", estimator=\"mean\", errorbar=None)\n", + "plt.title(\"Edad media por sexo y supervivencia\")\n", + "plt.xlabel(\"Sexo\")\n", + "plt.ylabel(\"Edad media\")\n", + "plt.legend(title=\"¿Sobrevivió?\", labels=[\"No\", \"Sí\"])\n", + "plt.show()\n" + ], + "metadata": { + "id": "ZMGtNxKzTih3", + "outputId": "c500380b-f30a-4833-8bb3-ab6d6c21b435", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + } + }, + "execution_count": 35, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR1tJREFUeJzt3Xl8DWf///H3SSQnIZJYIpEmQsQWYl8aNFE7ra1qK0WL9rbdRWnpfdt7C13QorSKasvX2qpvWxQ3WoqitbUoSmktsSX2kOT6/dGf83WaIEFyMryej8c8HjnXXDPzmXNyTt6ZuWaOzRhjBAAAYEFuri4AAADgbhFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkkCMdPnxYNptNH3300X1b54gRI2Sz2e7b+rLK2rVrZbPZtHbtWkdb165dVbRoUZfVBNyOVd5bN2TF5wtchyCDLPHRRx/JZrPdctq0aZOrSwQAPAByuboAPNhGjRqlYsWKpWmPiIhwQTXWNX36dKWmprq6DCBd//73vzV48GBXl5FhYWFhunLlijw8PFxdCu4DggyyVJMmTVS1alVXl2F5VvzATU5OVmpqqjw9PV1dCjLp0qVLypMnT4b758qVS7lyWefPic1mk5eXl6vLwH3CqSW4XEJCgrp27So/Pz/5+/urS5cuSkhISNNv586d6tq1q8LDw+Xl5aWgoCA9//zzOnPmTJq+69evV7Vq1eTl5aXixYvr/fffz3A9derUUbly5bRz507FxsYqd+7cioiI0KJFiyRJ69atU40aNeTt7a1SpUpp1apVadbx559/6vnnn1dgYKDsdrvKli2rmTNnpun3xx9/qGXLlsqTJ48KFSqk/v37KykpKU2/9MbIvPXWW6pZs6YKFCggb29vValSxVFjRvdx27Ztqlmzpry9vVWsWDFNmzYtTd/4+Hh169ZNgYGB8vLyUoUKFTR79mynPjfGHLz11luaOHGiihcvLrvdrl9++eWWNaxcuVK1a9eWv7+/fHx8VKpUKb322mtOfZKSkjR8+HBFRETIbrcrNDRUr7zyitNz1KVLF3l5eWnPnj1OyzZq1Ej58uXTsWPHHG3vvfeeypYtK7vdruDgYPXu3Tvd37WbrVmzRjabTZ9//nmaeXPnzpXNZtPGjRtvufz169c1cuRIlShRQl5eXipQoIBq166tlStXOvrUqVNHderUSbPs31/3m5/nCRMmKCwsTN7e3oqNjdXu3bvTLL937149/fTTyp8/v7y8vFS1alUtXbrUqc+N08Dr1q1Tr169VKhQIYWEhGjRokWO9r97//33ZbPZHNv8+xiZcuXK6fHHH0+zXGpqqh555BE9/fTTTm0TJ05U2bJl5eXlpcDAQL344os6d+6c07JFixbVk08+qfXr16t69ery8vJSeHi4Pv744zTbSUhIUP/+/VW0aFHZ7XaFhISoc+fOOn36tNPzePMYmcx8viCHMUAWmDVrlpFkVq1aZU6dOuU0nT592tEvNTXVxMTEGDc3N9OrVy8zadIkU7duXVO+fHkjycyaNcvR96233jKPPfaYGTVqlPnggw/MSy+9ZLy9vU316tVNamqqo9/OnTuNt7e3KVKkiImLizOjR482gYGBjnXeSWxsrAkODjahoaFm0KBBZtKkSSYyMtK4u7ubefPmmaCgIDNixAgzceJE88gjjxg/Pz9z/vx5x/InTpwwISEhJjQ01IwaNcpMnTrVNG/e3EgyEyZMcPS7fPmyKVmypPHy8jKvvPKKmThxoqlSpYqjzjVr1jj6dunSxYSFhTnVGRISYnr16mUmT55sxo8fb6pXr24kmS+//DLD+1ioUCHTp08f8+6775ratWsbSWbGjBlONZYpU8Z4eHiY/v37m3fffdc89thjRpKZOHGio9+hQ4eMJBMZGWnCw8PN2LFjzYQJE8zvv/+e7vZ3795tPD09TdWqVc0777xjpk2bZgYOHGhiYmIcfVJSUkzDhg1N7ty5Tb9+/cz7779v+vTpY3LlymVatGjh6Hfu3DkTEhJiqlWrZpKTk40xxkybNs1IMp988omj3/Dhw40kU79+fTNp0iTTp08f4+7ubqpVq2auXbt2y+cqNTXVhIaGmtatW6eZ17RpU1O8ePHbPtevvfaasdlspkePHmb69Onm7bffNh06dDBjx4519ImNjTWxsbFplv37637jeY6KijJFixY148aNMyNHjjT58+c3AQEB5sSJE07PsZ+fn4mMjDTjxo0zkydPNjExMcZms5nPPvvM0e/GezUyMtLExsaaSZMmmbFjx5rLly8bHx8f06tXrzR1Pf7446Zs2bKOxzee2xtGjRpl3NzczPHjx52WW7dunZFkFi5c6Gjr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8+d17Ngx1apVy2m5WrVqac+ePU5tN8KIJOXKlUtVq1ZN06dq1aqOnw8cOKDLly+rQYMG8vHxcUwff/yxDh48KEmqWLGiypQp4zgqs27dOsXHx6tNmzbp7mNAQIAaNmyoOXPmSJIOHTqkjRs3qmPHjun237Nnj0JDQx0hRpIiIyPl7+/vVHtKSor69u2rN998U7Gxsemu634hyAAAkI5z584pT5486c4rV66cevXqpU8//VQrV67UypUrnca43C83b//ixYuSpK+++krbt293TL/88otjnIz01+miG0Fm7ty5aty48W2/iqFjx45atGiRrl+/rrlz5yoqKkpRUVH3VPfFixd14cIFlSpV6p7WkxEEGQAA/mbbtm1atGiRWrRocce+kZGRkqRLly7J19dXwcHB2rBhg1OfDRs2OPrdsGnTJsfPycnJ2rZtm8qUKXPb7djtdh05ckQRERFO081HSJ555hnt3r3bsQ+3OrpyQ4sWLXT16lUtX75cc+fOvW3/MmXK6OjRo06Dd3/55RclJCQ47Z+Pj4+2bNmiKlWq3Hbb9wNjZAAAuMn+/fvVuHFj9e7dO80g1Z49eyo4OFh169ZVSEiIjh8/rtdff10BAQGOU0WDBg3S8OHDVbx4cVWsWFGzZs3S9u3bHadvbpgyZYpKlCihMmXKaMKECTp37pyef/75W9aVN29eDRw4UP3791dqaqpq166txMREbdiwQb6+vo7Lm4sWLaqaNWuqW7duSklJUfPmzW+7v3ny5FHLli01dOhQ7dmzRx06dLhl3/r16ysqKkodO3bUxIkTlZycrF69eik2NtbpNNiJEyfUqVMnffzxx6pevfptt3+vCDIAANyke/fuql27tt5444008+rXr6+ZM2dq6tSpOnPmjAoWLKjo6GitXr3acfrmn//8pxITE/Xyyy8rPj5ekZGRWrp0qUqUKOG0rrFjx2rs2LHavn27IiIitHTpUhUsWPC2tY0ePVoBAQGKi4vTb7/9Jn9/f1WuXFmvvfaaU7+OHTuqV69e6ty5c4buutuxY0c1bdpUMTExaa7UupnNZtMXX3yhvn37KiYmRm5ubmrcuLEmTZrk1O/69evat2+fLl++fMdt3yubycrb7eUA58+fl5+fnxITE+Xr65tl2+GqpZyDq5YA3M7Vq1d16NAhFStWTF5eXmnm586dW++//76effZZ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VLRo0Tu+39auXSubzaYVK1aoUqVK8vb2Vt26dRUfH69ly5apTJky8vX11TPPPKPLly87llu+fLlq164tf39/FShQQE8++aQOHjx42/p2796tJk2ayMfHR4GBgXr22Wd1+vTpLHs+kPUIMsiRZs+erYIFC+qHH35Q37591bNnT7Vp00Y1a9bUjz/+qIYNG+rZZ5/V5cuXlZqaqpCQEC1cuFC//PKLhg0bptdee00LFiy45frj4uL08ccfa9q0afr555/Vv39/derUSevWrcvGvQQePO+8845GjRqlkJAQHT9+XFu2bMnw+23EiBGaPHmyvv/+ex09elRt27bVxIkTNXfuXH311Vf65ptvNGnSJEf/S5cuacCAAdq6datWr14tNzc3tWrVSqmpqenWlpCQoLp166pSpUraunWrli9frpMnT6pt27ZZ+pwgixkgh4mNjTW1a9d2PE5OTjZ58uQxzz77rKPt+PHjRpLZuHFjuuvo3bu3ad26teNxly5dTIsWLYwxxly9etXkzp3bfP/9907LdOvWzXTo0OE+7gnwcJowYYIJCwszxmTs/bZmzRojyaxatcoxPy4uzkgyBw8edLS9+OKLplGjRrfc7qlTp4wks2vXLmOMMYcOHTKSzE8//WSMMWb06NGmYcOGTsscPXrUSDL79u276/2FazFGBjlS+fLlHT+7u7urQIECioqKcrTd+K6t+Ph4SdKUKVM0c+ZMHTlyRFeuXNG1a9dUsWLFdNd94MABXb58WQ0aNHBqv3btmipVqnSf9wR4uGXm/Xbz+z4wMFC5c+dWeHi4U9sPP/zgeLx//34NGzZMmzdv1unTpx1HYo4cOaJy5cqlqWXHjh1as2aNfHx80sw7ePCgSpYseXc7CZciyCBH8vDwcHpss9mc2mw2m6S/xrrMmzdPAwcO1Ntvv63o6GjlzZtXb775pjZv3pzuui9evChJ+uqrr/TII484zeM7XID7KzPvt7+/x9P7HLj5tFGzZs0UFham6dOnKzg4WKmpqSpXrpyuXbt2y1qaNWumcePGpZlXuHDhzO0YcgyCDCxvw4YNqlmzpnr16uVou92Av8jISNntdh05ckSxsbHZUSLw0Mqq99uZM2e0b98+TZ8+XY899pgkaf369bddpnLlylq8eLGKFi2qXLn48/eg4JWE5ZUoUUIff/yxVqxYoWLFiumTTz7Rli1bVKxYsXT7582bVwMHDlT//v2Vmpqq2rVrKzExURs2bJCvr6+6dOmSzXsAPLiy6v2WL18+FShQQB988IEKFy6sI0eOaPDgwbddpnfv3po+fbo6dOigV155Rfnz59eBAwc0b948ffjhh3J3d7+rWuBaBBlY3osvvqiffvpJ7dq1k81mU4cOHdSrVy/H5dnpGT16tAICAhQXF6fffvtN/v7+qly5sl577bVsrBx4OGTF+83NzU3z5s3TP//5T5UrV06lSpXSu+++qzp16txymeDgYG3YsEGvvvqqGjZsqKSkJIWFhalx48Zyc+MiXquyGWOMq4sAAAC4G0RQAABgWQQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZAABgWQQZAC536tQp9ezZU0WKFJHdbldQUJAaNWqkDRs2uLo0ADkcX1EAwOVat26ta9euafbs2QoPD9fJkye1evVqnTlzxtWlAcjhOCIDwKUSEhL03Xffady4cXr88ccVFham6tWra8iQIWrevLmjT/fu3RUQECBfX1/VrVtXO3bskPTX0ZygoCCNGTPGsc7vv/9enp6eWr16tSTp3Llz6ty5s/Lly6fcuXOrSZMm2r9/f/bvLID7jiADwKV8fHzk4+OjJUuWKCkpKd0+bdq0UXx8vJYtW6Zt27apcuXKqlevns6ePauAgADNnDlTI0aM0NatW3XhwgU9++yz6tOnj+rVqydJ6tq1q7Zu3aqlS5dq48aNMsaoadOmun79enbuKoAswJdGAnC5xYsXq0ePHrpy5YoqV66s2NhYtW/fXuXLl9f69ev1xBNPKD4+Xna73bFMRESEXnnlFb3wwguSpN69e2vVqlWqWrWqdu3apS1btshut2v//v0qWbKkNmzYoJo1a0qSzpw5o9DQUM2ePVtt2rRxyT4DuD84IgPA5Vq3bq1jx45p6dKlaty4sdauXavKlSvro48+0o4dO3Tx4kUVKFDAcfTGx8dHhw4d0sGDBx3reOutt5ScnKyFCxdqzpw5jtCzZ88e5cqVSzVq1HD0LVCggEqVKqU9e/Zk+74CuL8Y7AsgR/Dy8lKDBg3UoEEDDR06VN27d9fw4cPVq1cvFS5cWGvXrk2zjL+/v+PngwcP6tixY0pNTdXhw4cVFRWVfcUDcBmCDIAcKTIyUkuWLFHlypV14sQJ5cqVS0WLFk2377Vr19SpUye1a9dOpUqVUvfu3bVr1y4VKlRIZcqUUXJysjZv3ux0amnfvn2KjIzMxj0CkBUYIwPApc6cOaM2bdro+eefV/ny5ZU3b15t3bpVffv21RNPPKEPP/xQMTExunDhgt544w2VLFlSx44d01dffaVWrVqpatWqGjRokBYtWqQdO3bIx8dHsbGx8vPz05dffilJatmypfbv36/3339fefPm1eDBg3XgwAH98ssv8vDwcPEzAOBeEGQAuFRSUpJGjBihb775RgcPHtT169cVGhqqNm3a6LXXXpO3t7cuXLigf/3rX1q8eLHjcuuYmBjFxcXp4MGDatCggdasWaPatWtLkg4fPqwKFSpo7Nix6tmzp86dO6eXXnpJS5cu1bVr1xQTE6NJkyapRIkSLt57APeKIAMAACyLq5YAAIBlEWQAAIBlEWQAAIBlEWQAAIBlEWQAAIBlEWQAAIBlEWQAAIBlEWQAAIBlEWQAAIBlEWQAAIBlEWQAAIBlEWQAAIBl/T9MpQNaNbj/nwAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "sns.histplot(data=df, x=\"age\", hue=\"survived\", bins=20, kde=True)\n", + "plt.title(\"Distribución de edades por supervivencia\")\n", + "plt.xlabel(\"Edad\")\n", + "plt.ylabel(\"Frecuencia\")\n", + "plt.show()\n" + ], + "metadata": { + "id": "KI1VyGy7Xg7Y", + "outputId": "7a64704f-e599-4df4-fafc-b7e86901604e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + } + }, + "execution_count": 36, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAnFpJREFUeJzs3Xd0VNX2wPHvlGQmk94LqYQQWmih9yaIoCAooKDYG+oDnuWHBbtYntgV9dnBJ0ixIUV6b6FD6CEJpPeeTGbu74+QaAwlZZJJ2Z+1Zq3MnTvn7qnZc+4+56gURVEQQgghhGiC1NYOQAghhBCitiSREUIIIUSTJYmMEEIIIZosSWSEEEII0WRJIiOEEEKIJksSGSGEEEI0WZLICCGEEKLJkkRGCCGEEE2WJDJC1KPi4mJef/111qxZY+1QhBCiWZJERljEiy++iEqlapBjDRkyhCFDhlRc37RpEyqViqVLlzbI8f9OpVLx4osvXvH22bNns2jRInr37t0g8dx1110EBwc3yLGq45tvvkGlUnH+/HmLtfnP1180D/XxXqlv1/r8i4YhiYyoovwLpfyi1+vx8/Nj1KhRfPDBB+Tm5lrkOAkJCbz44oscPHjQIu01NkuWLOHnn39m1apVuLi4WDscIYRolrTWDkA0Xi+//DIhISEYjUaSkpLYtGkTM2fOZP78+fz666907ty5Yt/nnnuO//u//6tR+wkJCbz00ksEBwfTtWvXat9v7dq1NTpOfSosLESrrfoxUhSFCxcusGrVKgIDA60QmRBNyx133MGUKVPQ6XTWDqXarvT5Fw1LXgFxRaNHj6ZHjx4V1+fMmcOGDRsYO3YsN910E9HR0djZ2QGg1Wrr/QNdUFCAwWDA1ta2Xo9TE3q9/rLbVSoVs2fPbuBoRFOWn5+Pvb29tcOwmKKiImxtbVGrq9fxr9Fo0Gg09RyVZV3p8y8alpxaEjUybNgwnn/+eWJjY1m4cGHF9svVyPz5558MGDAAFxcXHBwcCA8P55lnngHK6lp69uwJwN13311xGuubb74ByuogOnXqRFRUFIMGDcJgMFTc90o1EiaTiWeeeQYfHx/s7e256aabiI+Pr7RPcHAwd911V5X7Xq7NoqIiXnzxRdq2bYter8fX15cJEyZw9uzZin0ud478wIEDjB49GicnJxwcHBg+fDi7du2qtE/56bvt27cze/ZsPD09sbe35+abbyY1NbVKfJfz888/06lTJ/R6PZ06dWLFihWX3c9sNvPee+/RsWNH9Ho93t7ePPjgg2RmZlbrOCdOnOCWW27Bzc0NvV5Pjx49+PXXX6vsd+zYMYYNG4adnR3+/v68+uqrmM3mKvv98ssvjBkzBj8/P3Q6HaGhobzyyiuYTKYq+37++eeEhoZiZ2dHr1692Lp162VjLC4u5oUXXqBNmzbodDoCAgJ46qmnKC4urrTf1d6TV6NSqXj00UdZtGgR4eHh6PV6IiMj2bJlS5V9a/L6b968mUceeQQvLy/8/f2vGsOHH35Ix44dMRgMuLq60qNHD3744YeK269UH3W5z2ZNHs/Fixe555578Pb2RqfT0bFjR7766qtK+5TXqf34448899xztGrVCoPBwP79+1GpVHz77bdV2l2zZg0qlYrff/+90nNSXiMzduxYWrdufdnnom/fvpV+ZAEsXLiQyMhI7OzscHNzY8qUKVU+/+XfK8ePH2fo0KEYDAZatWrFW2+9VeUYtfn8x8bG8sgjjxAeHo6dnR3u7u7ceuutTarupymSHhlRY3fccQfPPPMMa9eu5f7777/sPseOHWPs2LF07tyZl19+GZ1Ox5kzZ9i+fTsA7du35+WXX2bu3Lk88MADDBw4EIB+/fpVtJGens7o0aOZMmUK06ZNw9vb+6pxvfbaa6hUKp5++mlSUlJ47733GDFiBAcPHqzoOaouk8nE2LFjWb9+PVOmTOFf//oXubm5/Pnnnxw9epTQ0NArPu6BAwfi5OTEU089hY2NDZ999hlDhgxh8+bNVYp+H3vsMVxdXXnhhRc4f/487733Ho8++iiLFy++anxr165l4sSJdOjQgXnz5pGens7dd9992X+GDz74IN988w133303jz/+ODExMXz00UccOHCA7du3Y2Njc8XjHDt2jP79+9OqVSv+7//+D3t7e5YsWcL48eNZtmwZN998MwBJSUkMHTqU0tLSiv0+//zzyz7v33zzDQ4ODsyePRsHBwc2bNjA3LlzycnJ4e23367Y78svv+TBBx+kX79+zJw5k3PnznHTTTfh5uZGQEBAxX5ms5mbbrqJbdu28cADD9C+fXuOHDnCu+++y6lTp/j5558rHsvV3pPXsnnzZhYvXszjjz+OTqfjk08+4frrr2fPnj106tSp4hg1ef0feeQRPD09mTt3Lvn5+Vc89hdffMHjjz/OLbfcwr/+9S+Kioo4fPgwu3fv5vbbb69W/LV5PMnJyfTp06ci8fH09GTVqlXce++95OTkMHPmzEptvvLKK9ja2vLEE09QXFxMhw4daN26NUuWLGH69OmV9l28eDGurq6MGjXqsvFNnjyZO++8k71791b86IGyZGHXrl2V3iuvvfYazz//PJMmTeK+++4jNTWVDz/8kEGDBnHgwIFKNWqZmZlcf/31TJgwgUmTJrF06VKefvppIiIiGD16NFD7z//evXvZsWMHU6ZMwd/fn/Pnz/Ppp58yZMgQjh8/jsFgqPbrI2pAEeIfvv76awVQ9u7de8V9nJ2dlW7dulVcf+GFF5S/v53effddBVBSU1Ov2MbevXsVQPn666+r3DZ48GAFUBYsWHDZ2wYPHlxxfePGjQqgtGrVSsnJyanYvmTJEgVQ3n///YptQUFByvTp06/Z5ldffaUAyvz586vsazabK/4GlBdeeKHi+vjx4xVbW1vl7NmzFdsSEhIUR0dHZdCgQRXbyp/jESNGVGpv1qxZikajUbKysqoc9++6du2q+Pr6Vtpv7dq1CqAEBQVVbNu6dasCKIsWLap0/9WrV192+z8NHz5ciYiIUIqKiio9/n79+ilhYWEV22bOnKkAyu7duyu2paSkKM7OzgqgxMTEVGwvKCiocpwHH3xQMRgMFccpKSlRvLy8lK5duyrFxcUV+33++ecKUOm1+v777xW1Wq1s3bq1UpsLFixQAGX79u2KolTvPXklgAIo+/btq9gWGxur6PV65eabb67YVtPXf8CAAUppaek1jz9u3DilY8eOV91n+vTplV77cv/8bNbk8dx7772Kr6+vkpaWVun+U6ZMUZydnStey/LPYOvWrau8vnPmzFFsbGyUjIyMim3FxcWKi4uLcs8991RsK39Oyt8r2dnZik6nU/79739Xau+tt95SVCqVEhsbqyiKopw/f17RaDTKa6+9Vmm/I0eOKFqtttL28u+V7777rlIsPj4+ysSJEyu21fbzf7n39s6dO6scU1iWnFoSteLg4HDV0Uvlv4B++eWXy55eqA6dTsfdd99d7f3vvPNOHB0dK67fcsst+Pr68scff9T42MuWLcPDw4PHHnusym1XGmZuMplYu3Yt48ePr9Ql7uvry+233862bdvIycmpdJ8H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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "df[\"age\"]" + ], + "metadata": { + "id": "6C0jrfM3YR3Y" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 652 + }, + "id": "Yj2VQf4lvZ4Y", + "outputId": "1a65b4fa-eae2-47d6-a0ee-0a3f2ba3541f" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " count sum mean\n", + "pclass \n", + "1 216 136 0.629630\n", + "2 184 87 0.472826\n", + "3 491 119 0.242363" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countsummean
pclass
12161360.629630
2184870.472826
34911190.242363
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"df\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"pclass\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1,\n \"min\": 1,\n \"max\": 3,\n \"num_unique_values\": 3,\n \"samples\": [\n 1,\n 2,\n 3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"count\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 168,\n \"min\": 184,\n \"max\": 491,\n \"num_unique_values\": 3,\n \"samples\": [\n 216,\n 184,\n 491\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"sum\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 24,\n \"min\": 87,\n \"max\": 136,\n \"num_unique_values\": 3,\n \"samples\": [\n 136,\n 87,\n 119\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mean\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.19479759330588634,\n \"min\": 0.24236252545824846,\n \"max\": 0.6296296296296297,\n \"num_unique_values\": 3,\n \"samples\": [\n 0.6296296296296297,\n 0.47282608695652173,\n 0.24236252545824846\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 8 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Distributions

\n", + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_0['count'].plot(kind='hist', bins=20, title='count')\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_1['sum'].plot(kind='hist', bins=20, title='sum')\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_2['mean'].plot(kind='hist', bins=20, title='mean')\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

2-d distributions

\n", + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_3.plot(kind='scatter', x='count', y='sum', s=32, alpha=.8)\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_4.plot(kind='scatter', x='sum', y='mean', s=32, alpha=.8)\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Values

\n", + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_5['count'].plot(kind='line', figsize=(8, 4), title='count')\n", + "plt.gca().spines[['top', 'right']].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_6['sum'].plot(kind='line', figsize=(8, 4), title='sum')\n", + "plt.gca().spines[['top', 'right']].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_7['mean'].plot(kind='line', figsize=(8, 4), title='mean')\n", + "plt.gca().spines[['top', 'right']].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + } + ], + "source": [ + "df.groupby(\"pclass\")[\"survived\"].agg([\"count\", \"sum\", \"mean\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 783 + }, + "id": "jZJxNWZYvZrt", + "outputId": "6ba72ca9-476e-4da2-963d-614036a1aae1" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " count sum mean\n", + "sex \n", + "female 314 233 0.742038\n", + "male 577 109 0.188908" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countsummean
sex
female3142330.742038
male5771090.188908
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"df\",\n \"rows\": 2,\n \"fields\": [\n {\n \"column\": \"sex\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"male\",\n \"female\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"count\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 185,\n \"min\": 314,\n \"max\": 577,\n \"num_unique_values\": 2,\n \"samples\": [\n 577,\n 314\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"sum\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 87,\n \"min\": 109,\n \"max\": 233,\n \"num_unique_values\": 2,\n \"samples\": [\n 109,\n 233\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mean\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.391122024068098,\n \"min\": 0.18890814558058924,\n \"max\": 0.7420382165605095,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.18890814558058924,\n 0.7420382165605095\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 9 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Distributions

\n", + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_8['count'].plot(kind='hist', bins=20, title='count')\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_9['sum'].plot(kind='hist', bins=20, title='sum')\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_10['mean'].plot(kind='hist', bins=20, title='mean')\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

2-d distributions

\n", + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_11.plot(kind='scatter', x='count', y='sum', s=32, alpha=.8)\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_12.plot(kind='scatter', x='sum', y='mean', s=32, alpha=.8)\n", + "plt.gca().spines[['top', 'right',]].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Time series

\n", + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "import seaborn as sns\n", + "def _plot_series(series, series_name, series_index=0):\n", + " palette = list(sns.palettes.mpl_palette('Dark2'))\n", + " xs = series['count']\n", + " ys = series['sum']\n", + " \n", + " plt.plot(xs, ys, label=series_name, color=palette[series_index % len(palette)])\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 5.2), layout='constrained')\n", + "df_sorted = _df_13.sort_values('count', ascending=True)\n", + "_plot_series(df_sorted, '')\n", + "sns.despine(fig=fig, ax=ax)\n", + "plt.xlabel('count')\n", + "_ = plt.ylabel('sum')" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "import seaborn as sns\n", + "def _plot_series(series, series_name, series_index=0):\n", + " palette = list(sns.palettes.mpl_palette('Dark2'))\n", + " xs = series['count']\n", + " ys = series['mean']\n", + " \n", + " plt.plot(xs, ys, label=series_name, color=palette[series_index % len(palette)])\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 5.2), layout='constrained')\n", + "df_sorted = _df_14.sort_values('count', ascending=True)\n", + "_plot_series(df_sorted, '')\n", + "sns.despine(fig=fig, ax=ax)\n", + "plt.xlabel('count')\n", + "_ = plt.ylabel('mean')" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "import seaborn as sns\n", + "def _plot_series(series, series_name, series_index=0):\n", + " palette = list(sns.palettes.mpl_palette('Dark2'))\n", + " counted = (series['count']\n", + " .value_counts()\n", + " .reset_index(name='counts')\n", + " .rename({'index': 'count'}, axis=1)\n", + " .sort_values('count', ascending=True))\n", + " xs = counted['count']\n", + " ys = counted['counts']\n", + " plt.plot(xs, ys, label=series_name, color=palette[series_index % len(palette)])\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 5.2), layout='constrained')\n", + "df_sorted = _df_15.sort_values('count', ascending=True)\n", + "_plot_series(df_sorted, '')\n", + "sns.despine(fig=fig, ax=ax)\n", + "plt.xlabel('count')\n", + "_ = plt.ylabel('count()')" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Values

\n", + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_16['count'].plot(kind='line', figsize=(8, 4), title='count')\n", + "plt.gca().spines[['top', 'right']].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_17['sum'].plot(kind='line', figsize=(8, 4), title='sum')\n", + "plt.gca().spines[['top', 'right']].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "from matplotlib import pyplot as plt\n", + "_df_18['mean'].plot(kind='line', figsize=(8, 4), title='mean')\n", + "plt.gca().spines[['top', 'right']].set_visible(False)" + ], + "text/html": [ + "
\n", + " \n", + "
\n", + " \n", + " " + ] + }, + "metadata": {} + } + ], + "source": [ + "df.groupby(\"sex\")[\"survived\"].agg([\"count\", \"sum\", \"mean\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 175 + }, + "id": "sdQVnsUevQdn", + "outputId": "a4c0b364-1081-4da9-c6f3-2e13e0c9062d" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " count sum mean\n", + "embark_town \n", + "Cherbourg 168 93 0.553571\n", + "Queenstown 77 30 0.389610\n", + "Southampton 644 217 0.336957" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countsummean
embark_town
Cherbourg168930.553571
Queenstown77300.389610
Southampton6442170.336957
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"df\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"embark_town\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Cherbourg\",\n \"Queenstown\",\n \"Southampton\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"count\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 304,\n \"min\": 77,\n \"max\": 644,\n \"num_unique_values\": 3,\n \"samples\": [\n 168,\n 77,\n 644\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"sum\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 95,\n \"min\": 30,\n \"max\": 217,\n \"num_unique_values\": 3,\n \"samples\": [\n 93,\n 30,\n 217\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mean\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.11297320475888119,\n \"min\": 0.33695652173913043,\n \"max\": 0.5535714285714286,\n \"num_unique_values\": 3,\n \"samples\": [\n 0.5535714285714286,\n 0.38961038961038963,\n 0.33695652173913043\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 10 + } + ], + "source": [ + "df.groupby([\"embark_town\"])[\"survived\"].agg([\"count\", \"sum\", \"mean\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 624 + }, + "id": "X23iTVxgww_u", + "outputId": "cd3d6e20-afe2-437a-e79f-b22e46cc7d47" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 11 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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tfnqq6/ctrnhhhtMenr6BetD3dEf6A9nNLQ/TJ8+3W2frHyWs7KyjCSzf/9+1/L777/ftG/f3i1AJycnm/vvv7/G9962bZuR5Nrm7NA0efJkM2XKFLdtPvjgA9OqVStTXl5+wf3ypjbeOLrl76688krdcMMN6tOnj5KTkzVq1Cj97Gc/U+fOnes0ztVXX+32umvXrho1apRWrlyp6667TgcPHlRubq7+9Kc/nXf7Nm3a6NZbb9XKlSt155136uTJk3rttde0atUqSdL+/ft16tQpjRw50m27iooK9e/fX5K0e/duDRw40G15YmJirbVfdNFFlvezqYwcOVIxMTHq0aOHbrzxRt1444366U9/qvbt21v6WUjSLbfcojVr1ujpp5/W4sWL1bNnzwu+Z7du3dStW7cG1d23b1/Xv8PDwyVJffr0OWfe0aNHFRERoaqqKj311FP629/+pq+++koVFRVyOp01nsvy2WefqaqqSpdddpnbfKfTqbCwsAbVjnPRH+gPZ3iiP/yQ1c9y+/btdckll7heh4eHKzY2Vh07dnSb98Ov3/Ly8vSb3/xGn3zyib799ltVV1dLkgoKCtS7d+9zavnkk0/06aefauXKla55xhhVV1fr4MGDSkhIaPgONwJCkxe0bt1a77zzjjZv3qx//vOfWrRokX71q19p69atiouLU6tWrVzfe59RWVl5zjgdOnQ4Z96ECRP00EMPadGiRcrOzlafPn3c/gN6vvWHDRumo0eP6p133lFQUJBuvPFGSdKJEyckSW+++eY5Tcxms9V5v39o9OjR+uCDD2pcHhMTo88///y8yyIiIlRRUaHS0lKFhIS45hcXFysiIqLeNXXq1Ek7duzQhg0b9M9//lNz5szRb37zG23bts3yz+LUqVPKy8tT69attW/fvlrf84EHHtBLL710wXXOvHdNAgMDXf8+c6Ln+eadaWLPPPOM/vCHP2jhwoXq06ePOnTooBkzZtR4svCJEyfUunVr13790A+bKDyD/kB/OMMT/eHsda18ln/YP6Tve8j55p3pKSdPnlRycrKSk5O1cuVKde3aVQUFBUpOTr5gX7n//vv10EMPnbMsOjra8j41NUKTlwQEBGjIkCEaMmSI5syZo5iYGK1Zs0ZpaWnq2rWrCgsLXetWVVVp165dGj58eK3jjhkzRlOmTNG6deuUnZ2tu+66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4/X888+7lt17773q27evnE6npO//I9W/f3/dddddHq3xh66//npNmzZNM2bMUOfOnRUeHq5ly5bp5MmTuueee9SpUyddeumlevvtt13bVFVVafLkya7faa9evfSHP/zhgu9j5e8AnkWPaBh6xPdfs0+bNk0FBQUKCAhwffVY2+/szNen69evV//+/RUUFKQRI0bo6NGjevvtt5WQkKDg4GDdcccdOnXqlGu7devWaejQoQoJCVFYWJh+8pOf6MCBAxescdeuXRo9erQ6duyo8PBw3XnnnSopKWmUn4fHGDSpI0eOmDZt2pj58+ebgwcPmk8//dRkZmaa48ePG2OMGTZsmJk+fbrbNmPGjDGTJk1yvY6JiTHBwcHm97//vdm/f7/Zv3+/ee6550x0dLSprq52rbdo0SK3eTExMWbBggXGGGPeeOMNExQU5HpfY4xZu3atCQoKMg6HwxhjzBNPPGHi4+PNunXrzIEDB0xWVpax2Wxmw4YNxhhjCgoKjM1mM2lpaWbPnj3mpZdeMuHh4UaS+fbbb2v8Gdx4442mQ4cONU69e/e29LN8//33a32vH64bExNT4/Lafi8vvfSSiYyMNH//+9/Nl19+af7+97+b0NBQs2LFCmOMMcePHzc9evQwM2bMMMYY8/DDD5vY2FhTVlZW43s++eSTF/w5dOjQwfz73/+ucfthw4aZTp06mccff9zs3bvXPP7446Z169Zm9OjRZunSpWbv3r3mwQcfNGFhYebkyZPGGGMqKirMnDlzzLZt28yXX35pXnrpJdO+fXvz8ssvu8adNGmSGTNmjOt1bX8H8Cx6BD3ijIb0iNLSUvPYY4+Ziy++2BQWFpqjR48aY2r/nZ35mQ0aNMh8+OGHZseOHebSSy81w4YNM6NGjTI7duwwmzZtMmFhYebpp592vd8rr7xi/v73v5t9+/aZf/3rX+bmm282ffr0MVVVVcYYYw4ePGgkmX/961/GGGO+/fZb07VrV5Oenm52795tduzYYUaOHGmGDx9e6+/KmwhNTSwvL89IMocOHTrvcqsNcezYsW7rHD161LRp08Zs2rTJNS8xMdHMmjXLbbszDbGystJ06dLFvPjii67l48ePN7fddpsxxpjTp0+b9u3bm82bN7u9z+TJk8348eONMcakp6ef07xmzZpVa5P6z3/+Y/bt21fjVNPP5myebIi1/V4uueQSk52d7Tbv8ccfN4mJia7XmzdvNoGBgWb27NmmTZs25oMPPrhgTceOHbvgz2Hfvn2msrKyxu2HDRtmhg4d6nr93XffmQ4dOpg777zTNa+wsNBIMrm5uTWOk5qaalJSUlyvfxiarPwdwLPoEfSIMxraIxYsWOC2T1Z+Z2d+Zu+++65reUZGhpFkDhw44Jp3//33m+Tk5Brf++uvvzaSzGeffWaMOTc0Pf7442bUqFFu2xw+fNhIMvn5+Rf8uXgTX3A2sSuvvFI33HCD+vTpo+TkZI0aNUo/+9nP1Llz5zqNc/XVV7u97tq1q0aNGqWVK1fquuuu08GDB5Wbm6s//elP592+TZs2uvXWW7Vy5UrdeeedOnnypF577TWtWrVKkrR//36dOnVKI0eOdNvuzCFlSdq9e7cGDhzotjwxMbHW2i+66CLL+9lULvR7OXnypA4cOKDJkyfrvvvuc23z3XffyW63u14nJibq4Ycf1uOPP65Zs2Zp6NChF3zP0NBQhYaGNqjuvn37uv7dunVrhYWFqU+fPq554eHhkqSjR4+65mVmZuqFF15QQUGBysvLVVFRoX79+p13fCt/B/AsegQ94gxP9Igfqsvn+Ye9JTw8XO3bt1ePHj3c5n388ceu1/v27dOcOXO0detWlZSUqLq6WpJUUFCgK6644pxaPvnkE73//vvq2LHjOcsOHDigyy67rH472cgITU2sdevWeuedd7R582b985//1KJFi/SrX/1KW7duVVxcnFq1aiVjjNs2lZWV54xzvitcJkyYoIceekiLFi1Sdna2+vTp4/Yf0POtP2zYMB09elTvvPOOgoKCdOONN0qSTpw4IUl68803z2lgNputzvv9Q6NHj9YHH3xQ4/KYmBh9/vnnDXqPurrQ7+XMibHLli075z8ArVu3dv27urpaH330kVq3bq39+/fX+p5PPfWUnnrqqQuu88UXXyg6OrrG5YGBgW6vAwIC3OYFBAS4apOkVatW6eGHH9azzz6rxMREderUSc8884y2bt163vEb8+8A50ePoEec4Yke8UN1+Z2d3UfO12vO9BVJuvnmmxUTE6Nly5ape/fuqq6u1hVXXFHjRQgnTpzQzTffrN/+9rfnLIuMjLS0P95AaPKCgIAADRkyREOGDNGcOXMUExOjNWvWKC0tTV27dlVhYaFr3aqqKu3atUvDhw+vddwxY8ZoypQpWrdunbKzs2s9wXDw4MGKiorSyy+/rLffflu33HKL64PRu3dv2Ww2FRQUaNiwYefdPiEhQa+//rrbvC1bttRa55///GeVl5fXuPzsD2dTudDvpXv37vryyy81YcKEGrd/5plntGfPHm3cuFHJycnKysrSPffcU+P6DzzwgG699dYL1tS9e/d678/5fPTRRxo8eLD++7//2zXvQidrWvk7gOfRI+gRkud7RGN9no8dO6b8/HwtW7ZM1113nSTpww8/vOA2V111lf7+978rNja2WV3V13wqbSG2bt2qnJwcjRo1St26ddPWrVv19ddfKyEhQZI0YsQIpaWl6c0339Qll1yi+fPnW74JXIcOHTR27FjNnj1bu3fv1vjx42vd5o477tCSJUu0d+9evf/++675nTp10sMPP6yZM2equrpaQ4cOVVlZmT766CMFBwdr0qRJeuCBB/Tss8/ql7/8pX7+858rLy9PK1asqPU9G3rovaioSEVFRa7/U/vss8/UqVMnRUdH1/tQdm2/l3nz5umhhx6S3W7XjTfeKKfTqe3bt+vbb79VWlqa/vWvf2nOnDl65ZVXNGTIEM2fP1/Tp0/XsGHD3A5p/5CnD71b0bNnT7344otav3694uLi9L//+7/atm2b4uLizru+lb8DeBY9gh5xhqd7RGN9njt37qywsDAtXbpUkZGRKigo0KOPPnrBbVJTU7Vs2TKNHz9ejzzyiEJDQ7V//36tWrVKf/7zn92O0PkUb59U5W+++OILk5ycbLp27WpsNpu57LLLzKJFi1zLKyoqzIMPPmhCQ0NNt27dTEZGxnlP8jxzsubZ3nrrLSPJ/OhHPzpn2fm2++KLL4wkExMT43ZVjTHGVFdXm4ULF5pevXqZwMBA07VrV5OcnGw2btzoWmft2rXm0ksvNTabzVx33XXmhRdesHziZX3NnTvXSDpnysrKqnGb2k7yrO33YowxK1euNP369TNt27Y1nTt3Nj/60Y/MP/7xD1NeXm569+5tpkyZ4rb+f/3Xf5nBgweb7777riG7W6PznRB8vt+xJLNmzRpjzPcngt59993GbrebkJAQ8+CDD5pHH33UXHnlla71z756zsrfATyHHtFw9IjvnX0iuDG1/87Od/J8VlaWsdvtbuPMnTvXrW+88847JiEhwdhsNtO3b1+zYcMGt95z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xw5t27btnGVFRUVq27atQkJC3OaHh4erqKioxjEzMjI0b948S+8PAGfQOwDUpl5HmubNm6dRo0YpJydHJSUl+vbbb90mKw4fPqzp06dr5cqVateuXX3KOK/09HSVlZW5psOHD3tsbAAtF70DQG3qdaRpyZIlWrFihe688856v3FeXp6OHj2qq666yjWvqqpKmzZt0nPPPaf169eroqJCpaWlbkebiouLFRERUeO4NptNNput3nUB8E/0DgC1qVdoqqio0ODBgxv0xjfccIM+++wzt3n33HOP4uPjNWvWLEVFRSkwMFA5OTlKSUmRJOXn56ugoECJiYkNem8AAIC6qldo+vnPf67s7GzNnj273m/cqVMnXXHFFW7zOnTooLCwMNf8yZMnKy0tTaGhoQoODta0adOUmJjIlXMAAKDJ1Ss0nT59WkuXLtW7776rvn37KjAw0G35/PnzPVLcggUL1KpVK6WkpLjd3BIAAKCpBRhjTF03Gj58eM0DBgTovffea1BRnuRwOGS321VWVqbg4GBvlwOgmaB3ADhbvY40vf/++56uAwAAwKfV65YDAAAA/qZeR5qGDx+ugICAGpf70tdzAAAAnlCv0NSvXz+315WVldq5c6d27dp1zoN8AQAAWoJ6haYFCxacd/5vfvMbnThxokEFAQAA+CKPntM0ceJEy8+dAwAAaE48Gppyc3M9+hw5AAAAX1Gvr+fGjRvn9toYo8LCQm3fvr1BdwkHAADwVfUKTXa73e11q1at1KtXLz322GMaNWqURwoDAADwJfUKTVlZWZ6uAwAAwKfVKzSdkZeXp927d0uSLr/8cvXv398jRQEAAPiaeoWmo0eP6vbbb9eGDRsUEhIiSSotLdXw4cO1atUqde3a1ZM1AgAAeF29QtO0adN0/Phxff7550pISJAkffHFF5o0aZIeeugh/fWvf/VokQAA7ykoKFBJSUmDx+nSpYuio6M9UBHgHQHGGFPXjex2u959911dc801bvM//vhjjRo1SqWlpZ6qr8F4UjmA+qB3fK+goEDx8QkqLz/V4LGCgtprz57dBCc0W/U60lRdXa3AwMBz5gcGBqq6urrBRQEAfENJSYnKy09p4L1zFRwZW+9xHIWHtPWFeSopKSE0odmqV2gaMWKEpk+frr/+9a/q3r27JOmrr77SzJkzdcMNN3i0QACA9wVHxio0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iOX3DA4ObtF/RGf4w376wz5K/rGfTbGPDe0dEr+LlsQf9tMf9lHy7H76dGiSpLS0NE2aNElXX321rr32Wi1cuFAnT550XU0HAADQFHw+NN122236+uuvNWfOHBUVFalfv35at27dOSeHAwAANCafD02SNHXq1Bq/jvMUm82muXPnevSBqL7IH/bTH/ZR8o/9bC772FzqbAh/2EfJP/bTH/ZRapz99OkTwQEAAHxFK28XAAAA0BwQmgAAACwgNAEAAFhAaPr/MjMzFRsbq3bt2mngwIH6+OOPvV1SvWVkZOiaa65Rp06d1K1bN40dO9b1iIszTp8+rdTUVIWFhaljx45KSUlRcXGxlypuuKeffloBAQGaMWOGa15L2cevvvpKEydOVFhYmIKCgtSnTx9t377dtdwYozlz5igyMlJBQUFKSkrSvn37vFhx3VRVVWn27NmKi4tTUFCQLrnkEj3++OP64emWvryP9I7m+bn6oZbaP1p675C80D/q/KyBFmjVqlWmbdu25oUXXjCff/65ue+++0xISIgpLi72dmn1kpycbLKyssyuXbvMzp07zY9//GMTHR1tTpw44VrngQceMFFRUSYnJ8ds377dDBo0yAwePNiLVdffxx9/bGJjY03fvn3N9OnTXfNbwj5+8803JiYmxtx9991m69at5ssvvzTr1683+/fvd63z9NNPG7vdbl599VXzySefmP/6r/8ycXFxpry83IuVW/fkk0+asLAw88Ybb5iDBw+a1atXm44dO5o//OEPrnV8dR/pHc3zc/VDLbV/+EPvMKbp+wehyRhz7bXXmtTUVNfrqqoq0717d5ORkeHFqjzn6NGjRpLZuHGjMcaY0tJSExgYaFavXu1aZ/fu3UaSyc3N9VaZ9XL8+HHTs2dP884775hhw4a5ml5L2cdZs2aZoUOH1ri8urraREREmGeeecY1r7S01NhsNvPXv/61KUpssJtuusnce++9bvPGjRtnJkyYYIzx7X2kdzTPz9UZLbl/+EPvMKbp+4fffz1XUVGhvLw8JSUluea1atVKSUlJys3N9WJlnnPmae2hoaGSvn+yfWVlpds+x8fHKzo6utntc2pqqm666Sa3fZFazj6+/vrruvrqq3XLLbeoW7du6t+/v5YtW+ZafvDgQRUVFbntp91u18CBA5vNfg4ePFg5OTnau3evJOmTTz7R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\n" + }, + "metadata": {} + } + ], + "source": [ + "g = sns.FacetGrid(df, col=\"sex\", row=\"survived\")\n", + "g.map_dataframe(sns.histplot, x=\"age\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 523 + }, + "id": "c-PyGZ77yI8v", + "outputId": "7223a12c-2f02-4e5b-d29c-2cf83acd6252" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 12 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + } + ], + "source": [ + "ax = sns.displot(data=df, x=\"fare\", hue=\"survived\")\n", + "ax.set(xlim = (0,300))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 524 + }, + "id": "hCXbpCBryWbD", + "outputId": "3ba12cb0-33b8-41a4-82de-e16d4d237942" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAABiAAAAHqCAYAAACNy4bRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATTBJREFUeJzt3XuYlnWdP/D3cD4OI2dQQDxLoLKaiFZqEqhtZrodjJLK1c0FN2XXVVsPaVtWHnJzXa120/ZayQ6btj81NsVTJaKSZKigjCConBGGg8LAPL8/XJ8YRIWZexgGXq/req6L5z5+7i/K55l5P9/7riiVSqUAAAAAAAAUqFVzFwAAAAAAAOx6BBAAAAAAAEDhBBAAAAAAAEDhBBAAAAAAAEDhBBAAAAAAAEDhBBAAAAAAAEDhBBAAAAAAAEDhBBAAAAAAAEDhBBAAAAAAAEDhBBBAozz00EOpqKjIypUrm7sUANil6LEA0DT0WIAdRwAB7Na+8Y1v5Oijj06nTp1SVVXV3OUAwC5h3rx5OeusszJ48OB07Ngx++67b6644ops2LChuUsDgBbvlFNOycCBA9OhQ4f069cvn//85/Pqq682d1kAWyWAAHZrGzZsyCc/+cmce+65zV0KAOwyZs2albq6unz/+9/PM888k+9+97u55ZZb8tWvfrW5SwOAFu/444/Pz372s8yePTv//d//nerq6vzVX/1Vc5cFsFUCCNjNHXfccZkwYUImTJiQbt26pWfPnrnssstSKpXK26xfvz4XXXRRBgwYkPbt22e//fbLf/zHf2z1eMuXL88ZZ5yRPffcM506dcqwYcPyk5/8pN42v/jFLzJs2LB07NgxPXr0yKhRo7J27dokb06FPfLII9O5c+dUVVXlmGOOyUsvvdRk13/llVfmggsuyLBhw5rsHADsnnbnHnviiSfm1ltvzejRo7PPPvvklFNOyT/8wz/kl7/8ZZOcD4Ddy+7cY5PkggsuyFFHHZVBgwbl6KOPzsUXX5zHHnsstbW1TXZOgIZq09wFAM3vxz/+cc4666w8/vjjefLJJ3POOedk4MCBOfvss5MkZ555ZqZOnZrvfe97OfTQQzN37twsW7Zsq8d64403cvjhh+eiiy5KZWVl7rnnnnz+85/PvvvumyOPPDILFy7MGWecke985zv5xCc+kdWrV+e3v/1tSqVSNm7cmFNPPTVnn312fvKTn2TDhg15/PHHU1FR8Y61v+9973vXD3Yf/OAH8+tf/7pxAwQADaTH/tmqVavSvXv3bd4eAN6NHvumFStW5Pbbb8/RRx+dtm3bbtM+ADtSRWnzeBjY7Rx33HFZsmRJnnnmmfIHpIsvvjj/8z//k2effTbPP/98DjzwwNx3330ZNWrU2/Z/6KGHcvzxx+e11157x2co/OVf/mUOOuigXHvttfnDH/6Qww8/PPPmzcugQYPqbbdixYr06NEjDz30UI499thtqv+ll1561295dOzYMXvuued7Hue2227L+eef7yFkABRGj/2zOXPm5PDDD8+1115b/sUQADSUHptcdNFF+dd//desW7cuRx11VO6+++706NFjm84PsCOZAQHkqKOOqvftjJEjR+a6667Lpk2bMmPGjLRu3XqbP0ht2rQp3/zmN/Ozn/0sr7zySjZs2JD169enU6dOSZJDDz00J5xwQoYNG5YxY8Zk9OjR+au/+qvsscce6d69e77whS9kzJgx+chHPpJRo0blU5/6VPr16/eO59vywx8A7Ez02OSVV17JiSeemE9+8pPCBwAKs7v32AsvvDBnnXVWXnrppVx55ZU588wzc/fdd7/rzAuA5uAZEMC76tix43Ztf8011+Rf/uVfctFFF+XBBx/MjBkzMmbMmGzYsCFJ0rp169x333359a9/nSFDhuTGG2/MgQcemLlz5yZJbr311kydOjVHH310fvrTn+aAAw7IY4899o7ne9/73pcuXbq84+ukk05q+MUDQBPaHXrsq6++muOPPz5HH310fvCDH2zX9QJAQ+0OPbZnz5454IAD8pGPfCR33HFH7r333nc9J0BzMQMCyLRp0+q9f+yxx7L//vundevWGTZsWOrq6vLwww9vderqln7/+9/n4x//eD73uc8lSerq6vL8889nyJAh5W0qKipyzDHH5Jhjjsnll1+eQYMG5c4778zEiROTJMOHD8/w4cNzySWXZOTIkZk0aVKOOuqorZ7v3nvvfc+pqwDQXHbnHvvKK6/k+OOPz+GHH55bb701rVr57hMAxdmde+yW6urqkrz54G2AnY0AAsj8+fMzceLE/M3f/E3+8Ic/5MYbb8x1112XJNl7770zbty4fOlLXyo/vOull17KkiVL8qlPfeptx9p///3zi1/8Io8++mj22GOPXH/99Vm8eHH5g9u0adMyZcqUjB49Or179860adOydOnSHHzwwZk7d25+8IMf5JRTTkn//v0ze/bsvPDCCznzzDPfsfbGTl2dP39+VqxYkfnz55en6ibJfvvtly5dujTq2ACwu/bYV155Jccdd1wGDRqUa6+9NkuXLi2v69u3b4OPCwBv2V177LRp0/LEE0/kAx/4QPbYY49UV1fnsssuy7777puRI0c2+LgATUUAAeTMM8/M66+/niOPPDKtW7fOV77ylZxzzjnl9TfffHO++tWv5m//9m+zfPnyDBw4MF/96le3eqxLL700L774YsaMGZNOnTrlnHPOyamnnppVq1YlSSorK/PII4/khhtuSE1NTQYNGpTrrrsuJ510UhYvXpxZs2blxz/+cZYvX55+/fpl/Pjx+Zu/+Zsmu/bLL788P/7xj8vvhw8fniR58MEHc9xxxzXZeQHYPeyuPfa+++7LnDlzMmfOnOy111711pVKpSY5JwC7l921x3bq1Cm//OUvc8UVV2Tt2rXp169fTjzxxFx66aVp3759k5wToDEqSn4CgN3acccdl8MOOyw33HBDc5cCALsUPRYAmoYeC9ByuBErAAAAAABQOAEEAAAAAABQOLdgAgAAAAAACmcGBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBRJJSqZSampp4HAYAFEd/BYCmoccCAC2FACLJ6tWr061bt6xevbq5SwGAXYb+CgBNQ48FAFoKAQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFA4AQQAAAAAAFC4Zg0grr766rz//e9P165d07t375x66qmZPXt2vW2OO+64VFRU1Ht9+ctfrrfN/Pnz89GPfjSdOnVK7969c+GFF2bjxo078lIAAAAAAIDNtGnOkz/88MMZP3583v/+92fjxo356le/mtGjR+fZZ59N586dy9udffbZueqqq8rvO3XqVP7zpk2b8tGPfjR9+/bNo48+moULF+bMM89M27Zt881vfnOHXg8AAAAAAPCmZg0gJk+eXO/9bbfdlt69e2f69On50Ic+VF7eqVOn9O3bd6vH+M1vfpNnn302999/f/r06ZPDDjssX//613PRRRfla1/7Wtq1a9ek1wAAAAAAALzdTvUMiFWrViVJunfvXm/57bffnp49e2bo0KG55JJLsm7duvK6qVOnZtiwYenTp0952ZgxY1JTU5NnnnlmxxQOAAAAAADU06wzIDZXV1eX888/P8ccc0yGDh1aXv7Zz342gwYNSv/+/fP000/noosuyuzZs/PLX/4ySbJo0aJ64UOS8vtFixZt9Vzr16/P+vXry+9ramqKvhwA2O3orwDQNPRYAKCl2mkCiPHjx2fmzJn53e9+V2/5OeecU/7zsGHD0q9fv5xwwgmprq7Ovvvu26BzXX311bnyyisbVS8AUJ/+CgBNQ48FAFqqneIWTBMmTMjdd9+dBx98MHvttde7bjtixIgkyZw5c5Ikffv2zeLFi+tt89b7d3puxCWXXJJVq1aVXwsWLGjsJQDAbk9/BYCmoccCAC1Vs86AKJVKOe+883LnnXfmoYceyuDBg99znxkzZiRJ+vXrlyQZOXJkvvGNb2TJkiXp3bt3kuS+++5LZWVlhgwZstVjtG/fPu3bty/mIgCAJPorADSV5uixtbW1mTlzZr1lQ4cOTdu2bXdoHQBAy9asAcT48eMzadKk/OpXv0rXrl3Lz2zo1q1bOnbsmOrq6kyaNCknn3xyevTokaeffjoXXHBBPvShD+WQQw5JkowePTpDhgzJ5z//+XznO9/JokWLcumll2b8+PF+CQIAAAANMHPmzFz/8wfTe8A+SZIlC17MxCTDhw9v3sIAgBalWQOIm2++OUly3HHH1Vt+66235gtf+ELatWuX+++/PzfccEPWrl2bAQMG5PTTT8+ll15a3rZ169a5++67c+6552bkyJHp3Llzxo0bl6uuumpHXgoAAADsUnoP2Cd77bf1OwsAAGyLZr8F07sZMGBAHn744fc8zqBBg3LvvfcWVRYAAAAAANBIO8VDqAEAAAAAgF2LAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAACicAAIAAAAAAChcswYQV199dd7//vena9eu6d27d0499dTMnj273jZvvPFGxo8fnx49eqRLly45/fTTs3jx4nrbzJ8/Px/96EfTqVOn9O7dOxdeeGE2bty4Iy8FAAAAAADYTLMGEA8//HDGjx+fxx57LPfdd19qa2szevTorF27trzNBRdckP/3//5ffv7zn+fhhx/Oq6++mtNOO628ftOmTfnoRz+aDRs25NFHH82Pf/zj3Hbbbbn88sub45IAAAAAAIAkbZrz5JMnT673/rbbbkvv3r0zffr0fOhDH8qqVavyH//xH5k0aVI+/OEPJ0luvfXWHHzwwXnsscdy1FFH5Te/+U2effbZ3H///enTp08OO+ywfP3rX89FF12Ur33ta2nXrl1zXBoAAAAAAOzWdqpnQKxatSpJ0r179yTJ9OnTU1tbm1GjRpW3OeiggzJw4MBMnTo1STJ16tQMGzYsffr0KW8zZsyY1NTU5JlnntmB1QMAAAAAAG9p1hkQm6urq8v555+fY445JkOHDk2SLFq0KO3atUtVVVW9bfv06ZNFixaVt9k8fHhr/Vvrtmb9+vVZv359+X1NTU1RlwEAuy39FQCahh4LALRUO80MiPHjx2fmzJm54447mvxcV199dbp161Z+DRgwoMnPCQC7Ov0VAJqGHgsAtFQ7RQAxYcKE3H333XnwwQez1157lZf37ds3GzZsyMqVK+ttv3jx4vTt27e8zeLFi9+2/q11W3PJJZdk1apV5deCBQsKvBoA2D3prwDQNPRYAKClatYAolQqZcKECbnzzjvzwAMPZPDgwfXWH3744Wnbtm2mTJlSXjZ79uzMnz8/I0eOTJKMHDkyf/rTn7JkyZLyNvfdd18qKyszZMiQrZ63ffv2qaysrPcCABpHfwWApqHHAgAtVbM+A2L8+PGZNGlSfvWrX6Vr167lZzZ069YtHTt2TLdu3XLWWWdl4sSJ6d69eyorK3Peeedl5MiROeqoo5Iko0ePzpAhQ/L5z38+3/nOd7Jo0aJceumlGT9+fNq3b9+clwcAAAAAALutZg0gbr755iTJcccdV2/5rbfemi984QtJku9+97tp1apVTj/99Kxfvz5jxozJv/3bv5W3bd26de6+++6ce+65GTlyZDp37pxx48blqquu2lGXAQAAAAAAbKFZA4hSqfSe23To0CE33XRTbrrppnfcZtCgQbn33nuLLA0AAAAAAGiEneIh1AAAAAAAwK5FAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABSuWQOIRx55JB/72MfSv3//VFRU5K677qq3/gtf+EIqKirqvU488cR626xYsSJjx45NZWVlqqqqctZZZ2XNmjU78CoAAAAAAIAtNWsAsXbt2hx66KG56aab3nGbE088MQsXLiy/fvKTn9RbP3bs2DzzzDO57777cvfdd+eRRx7JOeec09SlAwAAAAAA76JNc578pJNOykknnfSu27Rv3z59+/bd6rrnnnsukydPzhNPPJEjjjgiSXLjjTfm5JNPzrXXXpv+/fsXXjMAAAAAAPDedvpnQDz00EPp3bt3DjzwwJx77rlZvnx5ed3UqVNTVVVVDh+SZNSoUWnVqlWmTZv2jsdcv359ampq6r0AgMbRXwGgaeixAEBLtVMHECeeeGL+8z//M1OmTMm3v/3tPPzwwznppJOyadOmJMmiRYvSu3fvevu0adMm3bt3z6JFi97xuFdffXW6detWfg0YMKBJrwMAdgf6KwA0DT0WAGipduoA4jOf+UxOOeWUDBs2LKeeemruvvvuPPHEE3nooYcaddxLLrkkq1atKr8WLFhQTMEAsBvTXwGgaeixAEBL1azPgNhe++yzT3r27Jk5c+bkhBNOSN++fbNkyZJ622zcuDErVqx4x+dGJG8+V6J9+/ZNXS4A7Fb0VwBoGnosANBS7dQzILb08ssvZ/ny5enXr1+SZOTIkVm5cmWmT59e3uaBBx5IXV1dRowY0VxlAgAAAADAbq9ZZ0CsWbMmc+bMKb+fO3duZsyYke7du6d79+658sorc/rpp6dv376prq7OP/7jP2a//fbLmDFjkiQHH3xwTjzxxJx99tm55ZZbUltbmwkTJuQzn/lM+vfv31yXBQAAAAAAu71mnQHx5JNPZvjw4Rk+fHiSZOLEiRk+fHguv/zytG7dOk8//XROOeWUHHDAATnrrLNy+OGH57e//W29qae33357DjrooJxwwgk5+eST84EPfCA/+MEPmuuSAAAAAACANPMMiOOOOy6lUukd1//v//7vex6je/fumTRpUpFlAQAAAAAAjdSingEBAAAAAAC0DAIIAAAAAACgcAIIAAAAAACgcAIIAAAAAACgcAIIAAAAAACgcAIIAAAAAACgcA0KIPbZZ58sX778bctXrlyZffbZp9FFAQAAAAAALVuDAoh58+Zl06ZNb1u+fv36vPLKK40uCgAAAAAAaNnabM/G//M//1P+8//+7/+mW7du5febNm3KlClTsvfeexdWHAAAAAAA8HZ77713zj///Jx//vlNdo6HHnooxx9/fF577bVUVVVt9/7bFUCceuqpSZKKioqMGzeu3rq2bdtm7733znXXXbfdRQAAAAAAANvuiSeeSOfOnZu7jHe1XQFEXV1dkmTw4MF54okn0rNnzyYpCgAAAAAAdkcbNmxIu3bt3nO7Xr167YBqGqdBz4CYO3eu8AEAAAAAAJL84he/yLBhw9KxY8f06NEjo0aNytq1a3Pccce97RZJp556ar7whS+U3++99975+te/njPPPDOVlZU555xzcvTRR+eiiy6qt9/SpUvTtm3bPPLII+X9brjhhiTJZz/72Xz605+ut31tbW169uyZ//zP/0zy5gSDq6++OoMHD07Hjh1z6KGH5he/+EW9fe69994ccMAB6dixY44//vjMmzevUeOyXTMgNjdlypRMmTIlS5YsKc+MeMuPfvSjRhUFAAAAAAAtwcKFC3PGGWfkO9/5Tj7xiU9k9erV+e1vf5tSqbTNx7j22mtz+eWX54orrkiSTJ48Od/5znfyrW99KxUVFUmSn/70p+nfv38++MEPvm3/sWPH5pOf/GTWrFmTLl26JHnzOc7r1q3LJz7xiSTJ1Vdfnf/6r//KLbfckv333z+PPPJIPve5z6VXr1459thjs2DBgpx22mkZP358zjnnnDz55JP5+7//+0aNTYMCiCuvvDJXXXVVjjjiiPTr1688AAAAAAAAsDtZuHBhNm7cmNNOOy2DBg1KkgwbNmy7jvHhD3+43i/7P/WpT+X888/P7373u3LgMGnSpJxxxhlb/X38mDFj0rlz59x55535/Oc/X97+lFNOSdeuXbN+/fp885vfzP3335+RI0cmSfbZZ5/87ne/y/e///0ce+yxufnmm7PvvvuWn/N84IEH5k9/+lO+/e1vb/+g/J8GBRC33HJLbrvttvKFAAAAAADA7ujQQw/NCSeckGHDhmXMmDEZPXp0/uqv/ip77LHHNh/jiCOOqPe+V69eGT16dG6//fZ88IMfzNy5czN16tR8//vf3+r+bdq0yac+9ancfvvt+fznP5+1a9fmV7/6Ve64444kyZw5c7Ju3bp85CMfqbffhg0bMnz48CTJc889lxEjRtRb/1ZY0VANCiA2bNiQo48+ulEnBgAAAACAlq5169a577778uijj+Y3v/lNbrzxxvzTP/1Tpk2bllatWr3tVky1tbVvO0bnzp3ftmzs2LH5u7/7u9x4442ZNGlShg0b9q4zK8aOHZtjjz02S5YsyX333ZeOHTvmxBNPTJKsWbMmSXLPPfdkzz33rLdf+/btt/uat1WDHkL913/915k0aVLRtQAAAAAAQItTUVGRY445JldeeWWeeuqptGvXLnfeeWd69eqVhQsXlrfbtGlTZs6cuU3H/PjHP5433ngjkydPzqRJkzJ27Nh33f7oo4/OgAED8tOf/jS33357PvnJT6Zt27ZJkiFDhqR9+/aZP39+9ttvv3qvAQMGJEkOPvjgPP744/WO+dhjj23PMLxNg2ZAvPHGG/nBD36Q+++/P4ccckj5It5y/fXXN6ooAAAAAABoCaZNm5YpU6Zk9OjR6d27d6ZNm5alS5fm4IMPTufOnTNx4sTcc8892XfffXP99ddn5cqV23Tczp0759RTT81ll12W5557LmecccZ77vPZz342t9xyS55//vk8+OCD5eVdu3bNP/zDP+SCCy5IXV1dPvCBD2TVqlX5/e9/n8rKyowbNy5f/vKXc9111+XCCy/MX//1X2f69Om57bbbGjgqb2pQAPH000/nsMMOS5K3pTUeSA0AAAAAwO6isrIyjzzySG644YbU1NRk0KBBue6663LSSSeltrY2f/zjH3PmmWemTZs2ueCCC3L88cdv87HHjh2bk08+OR/60IcycODAbdr+G9/4RgYNGpRjjjmm3rqvf/3r6dWrV66++uq8+OKLqaqqyl/8xV/kq1/9apJk4MCB+e///u9ccMEFufHGG3PkkUfmm9/8Zr70pS9t34BspqK05Q2odkM1NTXp1q1bVq1alcrKyuYuBwB2CforADSNHdFjn3rqqfzXYy9lr/2GJElenvNsPnfUoPJDKgEAtkWDngEBAAAAAADwbhp0C6bjjz/+XW+19MADDzS4IAAAAAAAoOVrUADx1vMf3lJbW5sZM2Zk5syZGTduXBF1AQAAAAAALViDAojvfve7W13+ta99LWvWrGlUQQAAAAAAQMtX6DMgPve5z+VHP/pRkYcEAAAAAABaoEIDiKlTp6ZDhw5FHhIAAAAAAGiBGnQLptNOO63e+1KplIULF+bJJ5/MZZddVkhhAAAAAABAy9WgAKJbt2713rdq1SoHHnhgrrrqqowePbqQwgAAAAAAgJarQQHErbfeWnQdAAAAAADALqRBAcRbpk+fnueeey5J8r73vS/Dhw8vpCgAAAAAAGip5s+fn2XLlu2w8/Xs2TMDBw7cYefbVg0KIJYsWZLPfOYzeeihh1JVVZUkWblyZY4//vjccccd6dWrV5E1AgAAAABAizB//vwcdPDBeX3duh12zo6dOmXWc89tdwhx00035ZprrsmiRYty6KGH5sYbb8yRRx5ZWF0NCiDOO++8rF69Os8880wOPvjgJMmzzz6bcePG5e/+7u/yk5/8pLACAQAAAACgpVi2bFleX7cuYy+6Jn0G7tvk51s8vzq3f/vCLFu2bLsCiJ/+9KeZOHFibrnllowYMSI33HBDxowZk9mzZ6d3796F1NagAGLy5Mm5//77y+FDkgwZMiQ33XSTh1ADAAAAALDb6zNw3+y1//uau4x3dP311+fss8/OF7/4xSTJLbfcknvuuSc/+tGPcvHFFxdyjlYN2amuri5t27Z92/K2bdumrq6u0UUBAAAAAABNY8OGDZk+fXpGjRpVXtaqVauMGjUqU6dOLew8DQogPvzhD+crX/lKXn311fKyV155JRdccEFOOOGEwooDAAAAAACKtWzZsmzatCl9+vSpt7xPnz5ZtGhRYedpUADxr//6r6mpqcnee++dfffdN/vuu28GDx6cmpqa3HjjjYUVBwAAAAAAtEwNegbEgAED8oc//CH3339/Zs2alSQ5+OCD603XAAAAAAAAdj49e/ZM69ats3jx4nrLFy9enL59+xZ2nu2aAfHAAw9kyJAhqampSUVFRT7ykY/kvPPOy3nnnZf3v//9ed/73pff/va3hRUHAAAAAAAUq127djn88MMzZcqU8rK6urpMmTIlI0eOLOw82xVA3HDDDTn77LNTWVn5tnXdunXL3/zN3+T6668vrDgAAAAAAKB4EydOzA9/+MP8+Mc/znPPPZdzzz03a9euzRe/+MXCzrFdt2D64x//mG9/+9vvuH706NG59tprG10UAAAAAAC0ZIvnV+/U5/n0pz+dpUuX5vLLL8+iRYty2GGHZfLkyW97MHVjbFcAsXjx4rRt2/adD9amTZYuXdroogAAAAAAoCXq2bNnOnbqlNu/feEOO2fHTp3Ss2fP7d5vwoQJmTBhQhNU9KbtCiD23HPPzJw5M/vtt99W1z/99NPp169fIYUBAAAAAEBLM3DgwMx67rksW7Zsh52zZ8+eGThw4A4737bargDi5JNPzmWXXZYTTzwxHTp0qLfu9ddfzxVXXJG//Mu/LLRAAAAAAABoSQYOHLhTBgI72nYFEJdeeml++ctf5oADDsiECRNy4IEHJklmzZqVm266KZs2bco//dM/NUmhAAAAAABAy7FdAUSfPn3y6KOP5txzz80ll1ySUqmUJKmoqMiYMWNy0003FfqACgAAAAAAoGXargAiSQYNGpR77703r732WubMmZNSqZT9998/e+yxR1PUBwAAAAAAtEDbHUC8ZY899sj73//+ImsBAAAAAAB2Ea2auwAAAAAAAGDXI4AAAAAAAAAKJ4AAAAAAAAAK1+BnQAAAAAAAAG83f/78LFu2bIedr2fPnhk4cOAOO9+2EkAAAAAAAEBB5s+fn4MPPijr1r2+w87ZqVPHPPfcrO0KIR555JFcc801mT59ehYuXJg777wzp556aqF1CSAAAAAAAKAgy5Yty7p1r+e/vvqpHDywV5Of77n5S/O5b/4sy5Yt264AYu3atTn00EPzpS99KaeddlqT1CaAAAAAAACAgh08sFf+4oA9m7uMd3TSSSflpJNOatJzeAg1AAAAAABQOAEEAAAAAABQOAEEAAAAAABQOAEEAAAAAABQOAEEAAAAAABQuDbNXQAAAAAAALBjrVmzJnPmzCm/nzt3bmbMmJHu3btn4MCBhZxDAAEAAAAAAAV7bv7Snfo8Tz75ZI4//vjy+4kTJyZJxo0bl9tuu62I0gQQAAAAAABQlJ49e6ZTp4753Dd/tsPO2alTx/Ts2XO79jnuuONSKpWaqKI3CSAAAAAAAKAgAwcOzHPPzcqyZct22Dl79uxZ2G2TiiSAAAAAAACAAg0cOHCnDAR2tFbNXQAAAAAAALDrEUAAAAAAAACFE0AAAAAAAACFa9YA4pFHHsnHPvax9O/fPxUVFbnrrrvqrS+VSrn88svTr1+/dOzYMaNGjcoLL7xQb5sVK1Zk7NixqaysTFVVVc4666ysWbNmB14FAAAAAACwpWYNINauXZtDDz00N91001bXf+c738n3vve93HLLLZk2bVo6d+6cMWPG5I033ihvM3bs2DzzzDO57777cvfdd+eRRx7JOeecs6MuAQAAAAAA2Io2zXnyk046KSeddNJW15VKpdxwww259NJL8/GPfzxJ8p//+Z/p06dP7rrrrnzmM5/Jc889l8mTJ+eJJ57IEUcckSS58cYbc/LJJ+faa69N//79d9i1AAAAAAAAf7bTPgNi7ty5WbRoUUaNGlVe1q1bt4wYMSJTp05NkkydOjVVVVXl8CFJRo0alVatWmXatGnveOz169enpqam3gsAaBz9FQCahh4LALRUO20AsWjRoiRJnz596i3v06dPed2iRYvSu3fveuvbtGmT7t27l7fZmquvvjrdunUrvwYMGFBw9QCw+9FfAaBp6LEAQEu10wYQTemSSy7JqlWryq8FCxY0d0kA0OLprwDQNPRYAKClatZnQLybvn37JkkWL16cfv36lZcvXrw4hx12WHmbJUuW1Ntv48aNWbFiRXn/rWnfvn3at29ffNEAsBvTXwGgaeixAEBLtdPOgBg8eHD69u2bKVOmlJfV1NRk2rRpGTlyZJJk5MiRWblyZaZPn17e5oEHHkhdXV1GjBixw2sGAAAAAADe1KwzINasWZM5c+aU38+dOzczZsxI9+7dM3DgwJx//vn553/+5+y///4ZPHhwLrvssvTv3z+nnnpqkuTggw/OiSeemLPPPju33HJLamtrM2HChHzmM59J//79m+mqAAAAAACAZg0gnnzyyRx//PHl9xMnTkySjBs3Lrfddlv+8R//MWvXrs0555yTlStX5gMf+EAmT56cDh06lPe5/fbbM2HChJxwwglp1apVTj/99Hzve9/b4dcCAAAAAAD8WbMGEMcdd1xKpdI7rq+oqMhVV12Vq6666h236d69eyZNmtQU5QEAAAAAAA200z4DAgAAAAAAaLkEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOEEEAAAAAAAQOHaNHcBAAAAwM6ltrY2y5ctS5suC5Mky5ctS21t/2auCgBoacyAAAAAAOqprq7OyhdnJK+8+Vr54oxUV1c3d1kAQAtjBgQAAADwNlVdO6Zvj65JksVdOzZzNQBAS2QGBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAUDgBBAAAAAAAULg2zV0AAEBRamtrM3PmzHrLhg4dmrZt2zZTRQAAALD72qlnQHzta19LRUVFvddBBx1UXv/GG29k/Pjx6dGjR7p06ZLTTz89ixcvbsaKAYDmNHPmzFz/8wfzX4+9lP967KVc//MH3xZIAAAAADvGTj8D4n3ve1/uv//+8vs2bf5c8gUXXJB77rknP//5z9OtW7dMmDAhp512Wn7/+983R6kAwE6g94B9std+Q5q7DAAAANjt7fQBRJs2bdK3b9+3LV+1alX+4z/+I5MmTcqHP/zhJMmtt96agw8+OI899liOOuqoHV0qAAAAAADwf3bqWzAlyQsvvJD+/ftnn332ydixYzN//vwkyfTp01NbW5tRo0aVtz3ooIMycODATJ069V2PuX79+tTU1NR7AQCNo78CQNPQYwGAlmqnDiBGjBiR2267LZMnT87NN9+cuXPn5oMf/GBWr16dRYsWpV27dqmqqqq3T58+fbJo0aJ3Pe7VV1+dbt26lV8DBgxowqsAgN2D/goATUOPBQBaqp06gDjppJPyyU9+MoccckjGjBmTe++9NytXrszPfvazRh33kksuyapVq8qvBQsWFFQxAOy+9FcAaBp6LADQUu30z4DYXFVVVQ444IDMmTMnH/nIR7Jhw4asXLmy3iyIxYsXb/WZEZtr37592rdv38TVAsDuRX8FgKahxwIALdVOPQNiS2vWrEl1dXX69euXww8/PG3bts2UKVPK62fPnp358+dn5MiRzVglAAAAAACwU8+A+Id/+Id87GMfy6BBg/Lqq6/miiuuSOvWrXPGGWekW7duOeusszJx4sR07949lZWVOe+88zJy5MgcddRRzV06AAAAAADs1nbqAOLll1/OGWeckeXLl6dXr175wAc+kMceeyy9evVKknz3u99Nq1atcvrpp2f9+vUZM2ZM/u3f/q2ZqwYAAAAAAHbqAOKOO+541/UdOnTITTfdlJtuumkHVQQAAAAAAGyLFvUMCAAAAAAAoGUQQAAAAAAAAIUTQAAAAAAAAIUTQAAAAAAAAIUTQAAAAAAAAIUTQAAAAAAAAIUTQAAAAAAAAIUTQAAAAAAAAIVr09wFAAAAAC1HbW1tZs6cWW/Z0KFD07Zt22aqCADYWQkgAAAAgG02c+bMXP/zB9N7wD5JkiULXszEJMOHD2/ewgCAnY4AAgAAANguvQfsk732G9LcZQAAOznPgAAAAAAAAAongAAAAAAAAAongAAAAAAAAAongAAAAAAAAAongAAAAAAAAAongAAAAAAAAAongAAAAAAAAAongAAAAAAAAArXprkLAAAoSm1tbZYvW5Y2XRYmSZYvW5ba2v7NXBUAAADsnsyAAAB2GdXV1Vn54ozklTdfK1+ckerq6uYuCwAAAHZLZkAAALuUqq4d07dH1yTJ4q4dm7kaAAAA2H2ZAQEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABROAAEAAAAAABSuTXMXAADQHGprazNz5sx6y4YOHZq2bds2U0UAAACwaxFAAAC7pZkzZ2bWf387Bw3slSSZNX9pkosyfPjw5i0MAAAAdhECCABgt3XQwF4Zvn//5i4DAAAAdkmeAQEAAAAA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AAAAAAA7xi4RQCTJhAkT3vGWSzta+/btc8UVV7xtiizbzhg2jvFrHOPXeMawcYzfOzM2jWP8Gs8YNo7xazxj2DjG750Zm8Yxfo1nDBvH+DWO8Ws8Y8g7afEPoQYAAAAAAHY+rZq7AAAAAAAAYNcjgAAAAAAAAAongAAAAAAAAAongGgCN910U/bee+906NAhI0aMyOOPP97cJe0UHnnkkXzsYx9L//79U1FRkbvuuqve+lKplMsvvzz9+vVLx44dM2rUqLzwwgv1tlmxYkXGjh2bysrKVFVV5ayzzsqaNWt24FU0n6uvvjrvf//707Vr1/Tu3TunnnpqZs+eXW+bN954I+PHj0+PHj3SpUuXnH766Vm8eHG9bebPn5+PfvSj6dSpU3r37p0LL7wwGzdu3JGX0ixuvvnmHHLIIamsrExlZWVGjhyZX//61+X1xm77fOtb30pFRUXOP//88jJj+O6+9rWvpaKiot7roIMOKq83fttGj906PbZx9NjG0WOLpcduPz228fTXd6bHNo4e2zh6bLH02O2nx1KIEoW64447Su3atSv96Ec/Kj3zzDOls88+u1RVVVVavHhxc5fW7O69997SP/3TP5V++ctflpKU7rzzznrrv/Wtb5W6detWuuuuu0p//OMfS6ecckpp8ODBpddff728zYknnlg69NBDS4899ljpt7/9bWm//fYrnXHGGTv4SprHmDFjSrfeemtp5syZpRkzZpROPvnk0sCBA0tr1qwpb/PlL3+5NGDAgNKUKVNKTz75ZOmoo44qHX300eX1GzduLA0dOrQ0atSo0lNPPVW69957Sz179ixdcsklzXFJO9T//M//lO65557S888/X5o9e3bpq1/9aqlt27almTNnlkolY7c9Hn/88dLee+9dOuSQQ0pf+cpXysuN4bu74oorSu973/tKCxcuLL+WLl1aXm/83pse+8702MbRYxtHjy2OHtswemzj6K/vTo9tHD22cfTY4uixDaPHUgQBRMGOPPLI0vjx48vvN23aVOrfv3/p6quvbsaqdj5bfnCrq6sr9e3bt3TNNdeUl61cubLUvn370k9+8pNSqVQqPfvss6UkpSeeeKK8za9//etSRUVF6ZVXXtlhte8slixZUkpSevjhh0ul0pvj1bZt29LPf/7z8jbPPfdcKUlp6tSppVLpzQ/PrVq1Ki1atKi8zc0331yqrKwsrV+/fsdewE5gjz32KP37v/+7sdsOq1evLu2///6l++67r3TssceWP7gZw/d2xRVXlA499NCtrjN+20aP3TZ6bOPpsY2nx24/Pbbh9NjG0V+3nR7beHps4+mx20+PbTg9liK4BVOBNmzYkOnTp2fUqFHlZa1atcqoUaMyderUZqxs5zd37twsWrSo3th169YtI0aMKI/d1KlTU1VVlSOOOKK8zahRo9KqVatMmzZth9fc3FatWpUk6d69e5Jk+vTpqa2trTeGBx10UAYOHFhvDIcNG5Y+ffqUtxkzZkxqamryzDPP7MDqm9emTZtyxx13ZO3atRk5cqSx2w7jx4/PRz/60Xpjlfjvb1u98MIL6d+/f/bZZ5+MHTs28+fPT2L8toUe23B67PbTYxtOj204PbZx9NiG0V8bR4/dfnpsw+mxDafHNo4eS2O1ae4CdiXLli3Lpk2b6v1PlSR9+vTJrFmzmqmqlmHRokVJstWxe2vdokWL0rt373rr27Rpk+7du5e32V3U1dXl/PPPzzHHHJOhQ4cmeXN82rVrl6qqqnrbbjmGWxvjt9bt6v70pz9l5MiReeONN9KlS5fceeedGTJkSGbMmGHstsEdd9yRP/zhD3niiSfets5/f+9txIgRue2223LggQdm4cKFufLKK/PBD34wM2fONH7bQI9tOD12++ixDaPHNo4e2zh6bMPpr42jx24fPbZh9NjG0WMbR4+lCAIIaIHGjx+fmTNn5ne/+11zl9KiHHjggZkxY0ZWrVqVX/ziFxk3blwefvjh5i6rRViwYEG+8pWv5L777kuHDh2au5wW6aSTTir/+ZBDDsmIESMyaNCg/OxnP0vHjh2bsTJgc3psw+ixDafHNp4eCy2DHtswemzD6bGNp8dSBLdgKlDPnj3TunXrtz3tffHixenbt28zVdUyvDU+7zZ2ffv2zZIlS+qt37hxY1asWLFbje+ECRNy991358EHH8xee+1VXt63b99s2LAhK1eurLf9lmO4tTF+a92url27dtlvv/1y+OGH5+qrr86hhx6af/mXfzF222D69OlZsmRJ/uIv/iJt2rRJmzZt8vDDD+d73/te2rRpkz59+hjD7VRVVZUDDjggc+bM8d/gNtBjG06P3XZ6bMPpsQ2nxxZPj912+mvj6LHbTo9tOD224fTY4umxNIQAokDt2rXL4YcfnilTppSX1dXVZcqUKRk5cmQzVrbzGzx4cPr27Vtv7GpqajJt2rTy2I0cOTIrV67M9OnTy9s88MADqaury4gRI3Z4zTtaqVTKhAkTcuedd+aBBx7I4MGD660//PDD07Zt23pjOHv27MyfP7/eGP7pT3+q9wH4vvvuS2VlZYYMGbJjLmQnUldXl/Xr1xu7bXDCCSfkT3/6U2bMmFF+HXHEERk7dmz5z8Zw+6xZsybV1dXp16+f/wa3gR7bcHrse9Nji6fHbjs9tnh67LbTXxtHj31vemzx9Nhtp8cWT4+lQZr5Idi7nDvuuKPUvn370m233VZ69tlnS+ecc06pqqqq3tPed1erV68uPfXUU6WnnnqqlKR0/fXXl5566qnSSy+9VCqVSqVvfetbpaqqqtKvfvWr0tNPP136+Mc/Xho8eHDp9ddfLx/jxBNPLA0fPrw0bdq00u9+97vS/vvvXzrjjDOa65J2qHPPPbfUrVu30kMPPVRauHBh+bVu3bryNl/+8pdLAwcOLD3wwAOlJ598sjRy5MjSyJEjy+s3btxYGjp0aGn06NGlGTNmlCZPnlzq1atX6ZJLLmmOS9qhLr744tLDDz9cmjt3bunpp58uXXzxxaWKiorSb37zm1KpZOwa4thjjy195StfKb83hu/u7//+70sPPfRQae7cuaXf//73pVGjRpV69uxZWrJkSalUMn7bQo99Z3ps4+ixjaPHFk+P3T56bOPor+9Oj20cPbZx9Nji6bHbR4+lCAKIJnDjjTeWBg4cWGrXrl3pyCOPLD322GPNXdJO4cEHHywledtr3LhxpVKpVKqrqytddtllpT59+pTat29fOuGEE0qzZ8+ud4zly5eXzjjjjFKXLl1KlZWVpS9+8Yul1atXN8PV7HhbG7skpVtvvbW8zeuvv17627/929Iee+xR6tSpU+kTn/hEaeHChfWOM2/evNJJJ51U6tixY6lnz56lv//7vy/V1tbu4KvZ8b70pS+VBg0aVGrXrl2pV69epRNOOKH8oa1UMnYNseUHN2P47j796U+X+vXrV2rXrl1pzz33LH36058uzZkzp7ze+G0bPXbr9NjG0WMbR48tnh67ffTYxtNf35ke2zh6bOPoscXTY7ePHksRKkqlUqlp51gAAAAAAAC7G8+AAAAAAAAACieAAAAAAAAACieAAAAAAAAACieAAAAAAAAACieAAAAAAAAACieAAAAAAAAACieAAAAAAAAACieAAAAAAAAACieAAJpMqVTKOeeck+7du6eioiIzZsxo7pIAYJegxwJA8fRXgOJVlEqlUnMXAeyafv3rX+fjH/94Hnrooeyzzz7p2bNn2rRp09xlAUCLp8cCQPH0V4Di+VcUaDLV1dXp169fjj766AYfo7a2Nm3bti2wKgBo+fRYACie/gpQPLdgAprEF77whZx33nmZP39+Kioqsvfee2fy5Mn5wAc+kKqqqvTo0SN/+Zd/merq6vI+8+bNS0VFRX7605/m2GOPTYcOHXL77bcnSf793/89Bx98cDp06JCDDjoo//Zv/9ZclwYAzUqPBYDi6a8ATcMtmIAmsWrVqnzve9/LD37wgzzxxBNp3bp1HnnkkVRUVOSQQw7JmjVrcvnll2fevHmZMWNGWrVqlXnz5mXw4MHZe++9c91112X48OHp0KFDHnjggVx44YX513/91wwfPjxPPfVUzj777Fx//fUZN25cc18qAOxQeiwAFE9/BWgabsEENIlu3bqla9euad26dfr27ZskOf300+tt86Mf/Si9evXKs88+m6FDh5aXn3/++TnttNPK76+44opcd9115WWDBw/Os88+m+9///s+vAGw29FjAaB4+itA03ALJmCHeeGFF3LGGWdkn332SWVlZfbee+8kyfz58+ttd8QRR5T/vHbt2lRXV+ess85Kly5dyq9//ud/rjf1FQB2Z3osABRPfwVoPDMggB3mYx/7WAYNGpQf/vCH6d+/f+rq6jJ06NBs2LCh3nadO3cu/3nNmjVJkh/+8IcZMWJEve1at27d9EUDQAugxwJA8fRXgMYTQAA7xPLlyzN79uz88Ic/zAc/+MEkye9+97v33K9Pnz7p379/XnzxxYwdO7apywSAFkePBYDi6a8AxRBAADvEHnvskR49euQHP/hB+vXrl/nz5+fiiy/epn2vvPLK/N3f/V26deuWE088MevXr8+TTz6Z1157LRMnTmziygFg56bHAkDx9FeAYngGBLBDtGrVKnfccUemT5+eoUOH5oILLsg111yzTfv+9V//df793/89t956a4YNG5Zjjz02t912WwYPHtzEVQPAzk+PBYDi6a8AxagolUql5i4CAAAAAADYtZgBAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFE4AAQAAAAAAFO7/A0pzfo86wZbMAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ], + "source": [ + "sns.displot(data=df, x=\"fare\", hue=\"survived\", col=\"pclass\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 466 + }, + "id": "8RUEKIB8xg9L", + "outputId": "c98203b6-2440-409d-b725-639056002864" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 15 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA0DFJREFUeJzs3Xd4k+X6wPFvRpO2adM9oWWvspdQAQFFEHEg4ETFvdBzFPV4PEc9jp/z6FGPHvdCBbeAoIgIAsree68C3bvpSJrx++OhI01Syiht4/25rl7K+yZv3qRp3jvPcz/3rXG5XC6EEEIIIfyUtqlPQAghhBCiMUmwI4QQQgi/JsGOEEIIIfyaBDtCCCGE8GsS7AghhBDCr0mwI4QQQgi/JsGOEEIIIfyavqlPoDlwOp2kp6cTGhqKRqNp6tMRQgghRAO4XC5KSkpITExEq/U9fiPBDpCenk5SUlJTn4YQQgghTsGRI0do3bq1z/0S7AChoaGAerHMZnMTn40QQgghGqK4uJikpKTq67gvEuxA9dSV2WyWYEcIIYRoYU6UgiIJykIIIYTwaxLsCCGEEMKvSbAjhBBCCL8mOTtCCCFEM+JwOKisrGzq02gWAgIC0Ol0p30cCXaEEEKIZsDlcpGZmUlhYWFTn0qzEh4eTnx8/GnVwZNgRwghhGgGqgKd2NhYgoOD//RFbl0uF2VlZWRnZwOQkJBwyseSYEcIIYRoYg6HozrQiYqKaurTaTaCgoIAyM7OJjY29pSntCRBWQghhGhiVTk6wcHBTXwmzU/Va3I6eUwS7AghhBDNxJ996sqbM/GayDSWEKLxOZ1QfFT91xQDRpPaXlkBFYWg0UFITJOeohDCf0mwI4RoXAWHYecPsOFTqCyHzqNh0N2gM8Dv/4F9CyEwDAbfA51GQ2hcU5+xEMLPyDSWEKLxFByG726BXx6D3D1QdATWfggfXgj5B2DzTCg+Btk74Id7Yc69YMlu6rMWQgBt27bltddea9THWLJkCRqNptGX28vIjhCi8WRuhaPrPLeXF8CWLyHlctj6Tc32fb9AwUEIiT175yiE8Grt2rWYTKamPo0zQkZ2hBCNw2GHbd/63r9nAbQd5rl9++xGOyUhBNhstgbdLiYmxm9Wh0mwI4RoHBot6Iy+9+sM4LR7btcHNd45CdFCffvtt/Ts2ZOgoCCioqIYNWoUpaWljBgxgvvvv9/ttuPHj+emm26q/nfbtm155plnuPHGGzGbzdxxxx2ce+65PPLII273y8nJISAggGXLllXfr2oa67rrruPqq692u31lZSXR0dF8+umnADidTp5//nnatWtHUFAQvXv35ttv3b/w/PTTT3Tu3JmgoCBGjhzJoUOHTv/FaQAJdoQQjUOrhb6Tfe/vfgXsme+5vccVjXdOQrRAGRkZXHvttdxyyy3s3LmTJUuWMGHCBFwuV4OP8fLLL9O7d282btzI448/zuTJk/nyyy/djvHVV1+RmJjIsGGeI66TJ09m7ty5WCyW6m0LFiygrKyMK65Qf7PPP/88n376Ke+88w7bt2/ngQce4Prrr2fp0qUAHDlyhAkTJnDppZeyadMmbrvtNv7+97+f6styUiRnRwjReCLbQ49JntNZUR2h8xj4fKL79tSpYG599s5PiBYgIyMDu93OhAkTaNOmDQA9e/Y8qWOcf/75PPjgg9X/vuqqq7j//vv5448/qoObmTNncu2113qtazNmzBhMJhOzZs3ihhtuqL79ZZddRmhoKFarleeee45ff/2V1NRUANq3b88ff/zBu+++y/Dhw3n77bfp0KEDr7zyCgBdunRh69atvPjiiyf/opwkCXaEEI0nrDVc+BT0uRbWfayWnqdcDu2Gg94Al7wGO2ZDYDgMuhOiO0NwRBOftBDNS+/evbngggvo2bMnY8aMYfTo0UyaNImIiIb/rQwYMMDt3zExMYwePZoZM2YwbNgwDh48yMqVK3n33Xe93l+v13PVVVcxY8YMbrjhBkpLS5kzZw5ffvklAPv27aOsrIwLL7zQ7X42m42+ffsCsHPnTgYNGuS2vyowamxNOo315JNPotFo3H66du1avb+iooKpU6cSFRVFSEgIEydOJCsry+0YaWlpjBs3juDgYGJjY3n44Yex273kAQghmkZYa+g4Cia8B5M+gv5TILItmBPV/1/9OVzxLiQPhuDIpj5bIZodnU7HwoULmT9/PikpKbzxxht06dKFgwcPotVqPaazvLVV8LaqavLkyXz77bdUVlYyc+ZMevbsWe+I0eTJk1m0aBHZ2dnMnj2boKAgLrroIoDq6a0ff/yRTZs2Vf/s2LHDI2+nKTR5zk737t3JyMio/vnjjz+q9z3wwAPMnTuXb775hqVLl5Kens6ECROq9zscDsaN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gvvuu8+9rbPL+MQTT6BQKDx+UlNT3fs7u3wtFBYWMmvWLEJCQjAYDPTt25ddu3a593f2+SYxMdHrPioUCu666y6g899Hp9PJY489Rrdu3TAYDCQnJ/P000979Kw6p/dQEpwxFi9eLGm1WumDDz6Q9u/fL91yyy2S2WyWSktLz/XQfherV6+WHn30UWnZsmUSIC1fvtxj/wsvvCAFBgZKK1askPbs2SNdeeWVUrdu3SSLxXJuBvwfcskll0gffvihlJ2dLWVlZUmXX365FB8fLzU0NLiPuf3226W4uDhp3bp10q5du6TzzjtPGjFixDkc9X/GN998I3377bfS4cOHpZycHOlvf/ubpNFopOzsbEmSOr98bdmxY4eUmJgo9evXT7r33nvd2zu7jI8//rjUp08fqbi42P1TXl7u3t/Z5ZMkSaqqqpISEhKkG264Qfrll1+kY8eOSWvXrpWOHj3qPqazzzdlZWUe9/CHH36QAGnDhg2SJHX++/jss89KISEh0qpVq6S8vDxpyZIlktFolF555RX3MefyHgpl5wwydOhQ6a677nL/7nQ6pejoaOn5558/h6M6M7RXdlwulxQZGSm9+OKL7m01NTWSTqeTPv/883Mwwv+esrIyCZA2bdokSZIsj0ajkZYsWeI+5uDBgxIgbdu27VwN878mKChIeu+997qUfPX19VKPHj2kH374QRozZoxb2ekKMj7++ONS//79fe7rCvJJkiTNnz9fGjVqVIf7u+J8c++990rJycmSy+XqEvfxiiuukObOneuxbcqUKdLMmTMlSTr391C4sc4QNpuN3bt3M378ePc2pVLJ+PHj2bZt2zkc2dkhLy+PkpISD3kDAwMZNmxYp5W3trYWgODgYAB2796N3W73kDE1NZX4+PhOKaPT6WTx4sU0NjYyfPjwLiXfXXfdxRVXXOEhC3Sde3jkyBGio6NJSkpi5syZnDhxAug68n3zzTekp6czdepUwsPDGThwIO+++657f1ebb2w2G4sWLWLu3LkoFIoucR9HjBjBunXrOHz4MAB79uxh8+bNXHbZZcC5v4eiEegZoqKiAqfTSUREhMf2iIgIDh06dI5GdfYoKSkB8Clvy77OhMvl4r777mPkyJGkpaUBsoxarRaz2exxbGeTcd++fQwfPpzm5maMRiPLly+nd+/eZGVldQn5Fi9eTEZGBjt3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\n" + }, + "metadata": {} + } + ], + "source": [ + "sns.scatterplot(data=df, x=\"age\", y=\"fare\", hue=\"survived\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 466 + }, + "id": "9jfGuH3gy3Do", + "outputId": "f6cfe705-ea9e-4345-cba7-c3c9ce5e7400" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 16 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAK1dJREFUeJzt3XtcVXW+//H3BgER3CCKXFLU1FQKcdTSnaVoJJlzRtPUzAuV2RnDGsXUcUaxtAbzXmbZeI6hM3psquM0WWkeRjCVvKA0ZnYd54HnyG0qwMsREPbvjw7rN3vUUtiwN19fz8djPx6u7/qu7/qs/Vg9ePddl21zOp1OAQAAGMrH0wUAAAA0JMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRmnm6AG9QU1Oj06dPq2XLlrLZbJ4uBwAAXAWn06kzZ84oOjpaPj5Xnr8h7Eg6ffq02rdv7+kyAABAHZw6dUrt2rW74nrCjqSWLVtK+v7LstvtHq4GAABcjfLycrVv3976O34lhB3JunRlt9sJOwAANDE/dgsKNygDAACjEXYAAIDRCDsAAMBo3LMDAIAXqa6uVlVVlafL8Ap+fn7y9fWt9ziEHQAAvIDT6VRhYaFKS0s9XYpXCQ0NVWRkZL3eg0fYAQDAC9QGnbZt26pFixbX/UtunU6nzp8/r+LiYklSVFRUncci7AAA4GHV1dVW0GndurWny/EagYGBkqTi4mK1bdu2zpe0uEEZAAAPq71Hp0WLFh6uxPvUfif1uY+JsAMAgJe43i9dXY47vhPCDgAAMBphBwAAGI2wAwAALtGxY0etXr26QfeRlZUlm83W4I/b8zQWAAC4xKFDhxQUFOTpMtyCsAMAwHWksrJS/v7+P9ovPDy8EappHFzGAgDAy7355puKi4tTYGCgWrdurcTERJ07d04JCQmaMWOGS9+RI0fqoYcespY7duyoxYsXa/LkybLb7Xrsscd0++23a+7cuS7blZSUyM/PT3v27LG2q72M9eCDD2rcuHEu/auqqtSmTRtt2rRJklRTU6P09HR16tRJgYGBio+P15tvvumyzXvvvaebbrpJgYGBGjx4sP72t7/V/8u5CszsuEmf2Zs8XYJXyF022dMlAIBRCgoKNH78eC1dulT33Xefzpw5ow8//FBOp/Oqx1i+fLnS0tK0cOFCSdKOHTu0dOlSLVmyxHq0+/XXX1d0dLTuvPPOS7afMGGCxowZo7Nnzyo4OFiStHPnTp0/f1733XefJCk9PV2///3vtW7dOnXt2lV79uzRxIkTFR4erkGDBunUqVMaNWqUUlJS9Nhjj+nw4cOaNWtWfb+eq0LYAQDAixUUFOjixYsaNWqUOnToIEmKi4u7pjGGDBniEizGjh2rGTNmaO/evVa42bJli8aPH3/Z99okJSUpKChI27Zt06RJk6z+P/vZz9SyZUtVVFToN7/5jf7rv/5LDodDknTjjTdq7969evXVVzVo0CC98sor6ty5s1asWCFJ6tatm44dO6bnn3/+2r+Ua8RlLAAAvFh8fLzuuusuxcXFacyYMVq/fr2+++67axqjb9++Lsvh4eEaOnSoNm/eLEk6efKkcnJyNGHChMtu36xZM40dO9bqf+7cOb399ttW/6+++krnz5/X3XffreDgYOuzadMmff3115KkEydOqF+/fi7j1gajhsbMDgAAXszX11e7du3S/v379cEHH2jNmjX69a9/rQMHDsjHx+eSy1mX+1mFyz1VNWHCBD355JNas2aNtmzZori4uB+cMZowYYIGDRqk4uJi7dq1S4GBgbrnnnskSWfPnpUkvfvuu7rhhhtctgsICLjmY3Y3ZnYAAPByNptNAwYM0DPPPKOjR4/K399f27ZtU3h4uAoKCqx+1dXV+uSTT65qzBEjRujChQvasWOHtmzZcsVZnVq333672rdvr9dff12bN2/WmDFj5OfnJ0mKjY1VQECA8vPz1aVLF5dP+/btJUk9evTQwYMHXcb86KOPruVrqDNmdgAA8GIHDhxQZmamhg4dqrZt2+rAgQMqKSlRjx49FBQUpNTUVL377rvq3LmzVq5cedUv6AsKCtLIkSO1YMECnThxQuPHj//RbR588EGtW7dOX3zxhXbv3m21t2zZUk899ZRmzpypmpoa3XHHHSorK9O+fftkt9uVnJysn//851qxYoVmz56tRx99VLm5ucrIyKjjt3JtCDsAAHgxu92uPXv2aPXq1SovL1eHDh20YsUKDRs2TFVVVfr44481efJkNWvWTDNnztTgwYOveuwJEybo3nvv1cCBAxUTE3NV/Z977jl16NBBAwYMcFm3ePFihYeHKz09XX/9618VGhqq3r1761e/+pUkKSYmRm+99ZZmzpypNWvW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\n" + }, + "metadata": {} + } + ], + "source": [ + "sns.countplot(data=df, x=\"who\", hue=\"survived\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QMY1HSaI1FVK" + }, + "source": [ + "## Predicción del target survived\n", + "\n", + "El día de mañana tendréis que hacer predicciones sobre alguna variable objetivo. Por ahora no nos interesará entrar en el detalle de como hacer esas predicciones, pero una vez hechas esas predicciones, veremos de qué forma podemos comprobar si lo hemos hecho bien o mal. Para ello existen una serie de visualizaciones y métricas que podremos usar." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RC9UEhn-zjSg", + "outputId": "4566439c-f020-4f12-ac9d-c4e0557cdee9" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.12/dist-packages/sklearn/linear_model/_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + " n_iter_i = _check_optimize_result(\n" + ] + } + ], + "source": [ + "# Prediccion del modelo (No presteis demasiada atención aqui)\n", + "from sklearn.linear_model import LogisticRegression\n", + "y = df[\"survived\"]\n", + "X = pd.get_dummies(df[[\"pclass\", \"age\", \"sex\", \"fare\"]].fillna(\"mean\"))\n", + "\n", + "logreg = LogisticRegression()\n", + "logreg.fit(X,y)\n", + "df[\"pred_proba\"] = logreg.predict_proba(X)[:,1]\n", + "df[\"pred\"] = logreg.predict(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "phrM98d41KAF" + }, + "source": [ + "## Evaluación del modelo\n", + "\n", + "Primero veamos las métricas a usar para valorar un modelo de clasificación:\n", + "\n", + "![metricas](https://i1.wp.com/www.aprendemachinelearning.com/wp-content/uploads/2019/05/confusion_matix_example-2.png?fit=525%2C525)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "L6Sm2dga329q", + "outputId": "89a18d0f-6f9b-4032-c56c-189019909020" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Distribucion de las probabilidades\n", + "px.ecdf(df, x=\"pred_proba\", color=\"survived\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 817 + }, + "id": "SwZ5Ecz502_N", + "outputId": "1de51c4b-cc5d-48ff-9564-c8454dc19f07" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Distribucion de densidad\n", + "threshold_step = 0.01\n", + "curve_type = 'kde'\n", + "\n", + "density_curve_kde = bc.predicted_proba_density_curve_plot(true_y = df[\"survived\"],\n", + " predicted_proba = df[\"pred_proba\"],\n", + " threshold_step = threshold_step,\n", + " curve_type = curve_type)\n", + "density_curve_kde" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 617 + }, + "id": "JYURePwj15ef", + "outputId": "1947361b-7b4c-44bc-efa0-10de19bf42dc" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Matriz de confusion y metricas\n", + "cf_fig, var_metrics_df, invar_metrics_df, opt_thresh_df = bc.confusion_matrix_plot(\n", + " true_y = df[\"survived\"],\n", + " predicted_proba = df[\"pred_proba\"],\n", + " threshold_step = threshold_step,\n", + " title = 'Interactive Confusion Matrix')\n", + "cf_fig" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 602 + }, + "id": "ikUDLB3b2YYP", + "outputId": "09201d8c-4aa8-4ef5-e2c1-9f2105a06a21" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Class 0 is associated with probabilities: full_predicted_proba[:, 0]\n", + "Class 1 is associated with probabilities: full_predicted_proba[:, 1]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Curva lift\n", + "lift_curve = bc.lift_curve_plot(true_y = df[\"survived\"],\n", + " full_predicted_proba = logreg.predict_proba(X),\n", + " pos_label = 1,\n", + " )\n", + "lift_curve" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 567 + }, + "id": "gPCu1M2k290E", + "outputId": "c194aa91-0fdf-467c-fca9-eb1bc2b255a9" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Curva response\n", + "resp_curve = bc.response_curve_plot(true_y = df[\"survived\"],\n", + " predicted_proba = df[\"pred_proba\"],\n", + " n_tiles = 10,\n", + " )\n", + "resp_curve" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 567 + }, + "id": "2NmDUAQh3KEj", + "outputId": "7e2e519e-9d0f-4a14-c8ba-0b3f3ad584df" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Curva cumulative response\n", + "cumres_plot = bc.cumulative_response_plot(true_y = df[\"survived\"],\n", + " predicted_proba = df[\"pred_proba\"],\n", + " )\n", + "cumres_plot" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 567 + }, + "id": "HLtM9HM63mva", + "outputId": "b1cbc64a-f316-40e7-bc2f-92ef96d8075a" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "calib_curve, ece = bc.calibration_curve_plot(true_y = df[\"survived\"],\n", + " predicted_proba = df[\"pred_proba\"],\n", + " n_bins = 10, #default\n", + " strategy = 'uniform', #default\n", + " show_gaps = False, #default\n", + " ece_bins = 'fd' #default\n", + " )\n", + "\n", + "calib_curve" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file