Skip to content

Instantly share code, notes, and snippets.

@lutfiedu
Created May 25, 2025 00:14
Show Gist options
  • Save lutfiedu/169ccb76b0c18411890bdf313f29f980 to your computer and use it in GitHub Desktop.
Save lutfiedu/169ccb76b0c18411890bdf313f29f980 to your computer and use it in GitHub Desktop.
Hands on EDA Python II.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"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": [
"<a href=\"https://colab.research.google.com/gist/lutfiedu/169ccb76b0c18411890bdf313f29f980/hands-on-eda-python-ii.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# EDA with Python II\n",
"In this notebook, we will\n",
"1. Learn additional dataframe manipulation techniques\n",
"2. Perform deep-dive (question-based) EDA on ecommerce dataset"
],
"metadata": {
"id": "8Gr8jBvT4NvD"
}
},
{
"cell_type": "markdown",
"source": [
"# Import Libraries"
],
"metadata": {
"id": "djHJoSQm4sOP"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "hW_qI38AF2Tf"
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns"
]
},
{
"cell_type": "markdown",
"source": [
"# Import Datasets\n",
"1. **mpg**: miles per gallon details of various cars\n",
"2. **titanic**: titanic's passengers survival status details\n",
"3. **app_visitor**: dummy (synthetic) application visitor data\n",
"4. **ecommerce**: ecommerce transaction data"
],
"metadata": {
"id": "6pnM20huD1hg"
}
},
{
"cell_type": "code",
"source": [
"# load datasets\n",
"mpg = sns.load_dataset('mpg')\n",
"titanic = sns.load_dataset('titanic')\n",
"app_visitor = pd.read_csv('/content/drive/MyDrive/Dibimbing/app_visitor.csv')\n",
"ecommerce = pd.read_csv('/content/drive/MyDrive/Dibimbing/data/ecommerce.csv')"
],
"metadata": {
"id": "CtN2j2pYD0ab"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# first 5 rows\n",
"mpg.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "GffJlxZAF9RO",
"outputId": "4aed2c1b-8fb7-468b-cd6d-525d12c28533"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" mpg cylinders displacement horsepower weight acceleration \\\n",
"0 18.0 8 307.0 130.0 3504 12.0 \n",
"1 15.0 8 350.0 165.0 3693 11.5 \n",
"2 18.0 8 318.0 150.0 3436 11.0 \n",
"3 16.0 8 304.0 150.0 3433 12.0 \n",
"4 17.0 8 302.0 140.0 3449 10.5 \n",
"\n",
" model_year origin name \n",
"0 70 usa chevrolet chevelle malibu \n",
"1 70 usa buick skylark 320 \n",
"2 70 usa plymouth satellite \n",
"3 70 usa amc rebel sst \n",
"4 70 usa ford torino "
],
"text/html": [
"\n",
" <div id=\"df-120680a5-169b-47d5-8420-32ed35434ff9\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mpg</th>\n",
" <th>cylinders</th>\n",
" <th>displacement</th>\n",
" <th>horsepower</th>\n",
" <th>weight</th>\n",
" <th>acceleration</th>\n",
" <th>model_year</th>\n",
" <th>origin</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>18.0</td>\n",
" <td>8</td>\n",
" <td>307.0</td>\n",
" <td>130.0</td>\n",
" <td>3504</td>\n",
" <td>12.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>chevrolet chevelle malibu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>15.0</td>\n",
" <td>8</td>\n",
" <td>350.0</td>\n",
" <td>165.0</td>\n",
" <td>3693</td>\n",
" <td>11.5</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>buick skylark 320</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>18.0</td>\n",
" <td>8</td>\n",
" <td>318.0</td>\n",
" <td>150.0</td>\n",
" <td>3436</td>\n",
" <td>11.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>plymouth satellite</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>16.0</td>\n",
" <td>8</td>\n",
" <td>304.0</td>\n",
" <td>150.0</td>\n",
" <td>3433</td>\n",
" <td>12.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>amc rebel sst</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>17.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>140.0</td>\n",
" <td>3449</td>\n",
" <td>10.5</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>ford torino</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-120680a5-169b-47d5-8420-32ed35434ff9')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-120680a5-169b-47d5-8420-32ed35434ff9 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-120680a5-169b-47d5-8420-32ed35434ff9');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 3
}
]
},
{
"cell_type": "code",
"source": [
"# first 5 rows\n",
"titanic.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 250
},
"id": "UV_k4PUNFd2y",
"outputId": "05fe62af-fda8-48c2-bd68-6053a69cd256"
},
"execution_count": null,
"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",
" 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 "
],
"text/html": [
"\n",
" <div id=\"df-e79eeb5f-aac1-44bf-adb6-1bfec3c6640a\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>7.2500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.9250</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.0500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e79eeb5f-aac1-44bf-adb6-1bfec3c6640a')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-e79eeb5f-aac1-44bf-adb6-1bfec3c6640a button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-e79eeb5f-aac1-44bf-adb6-1bfec3c6640a');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 4
}
]
},
{
"cell_type": "code",
"source": [
"# first 5 rows\n",
"app_visitor.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "fePLkx7kFdso",
"outputId": "f8b01eed-6caf-47ee-8c27-dba7ff62e842"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" date android ios\n",
"0 2021-07-01 11706 2216\n",
"1 2021-07-02 11158 4444\n",
"2 2021-07-03 9298 4273\n",
"3 2021-07-04 10094 2542\n",
"4 2021-07-05 11178 4891"
],
"text/html": [
"\n",
" <div id=\"df-7738f2b1-a997-4dfb-9f6a-3115da41a2b8\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>android</th>\n",
" <th>ios</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2021-07-01</td>\n",
" <td>11706</td>\n",
" <td>2216</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2021-07-02</td>\n",
" <td>11158</td>\n",
" <td>4444</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2021-07-03</td>\n",
" <td>9298</td>\n",
" <td>4273</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2021-07-04</td>\n",
" <td>10094</td>\n",
" <td>2542</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2021-07-05</td>\n",
" <td>11178</td>\n",
" <td>4891</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7738f2b1-a997-4dfb-9f6a-3115da41a2b8')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-7738f2b1-a997-4dfb-9f6a-3115da41a2b8 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-7738f2b1-a997-4dfb-9f6a-3115da41a2b8');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"source": [
"# first 5 rows\n",
"ecommerce.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 250
},
"id": "9q6yAtG_FdfG",
"outputId": "d804c72c-8559-497e-ba73-c35bca194b5b"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" InvoiceNo StockCode Description Quantity \\\n",
"0 554697 21166 COOK WITH WINE METAL SIGN 1 \n",
"1 561038 82482 WOODEN PICTURE FRAME WHITE FINISH 2 \n",
"2 560552 23192 BUNDLE OF 3 ALPHABET EXERCISE BOOKS 1 \n",
"3 559884 85183B CHARLIE & LOLA WASTEPAPER BIN FLORA 12 \n",
"4 544450 21789 KIDS RAIN MAC PINK 3 \n",
"\n",
" InvoiceDate UnitPrice CustomerID Country \n",
"0 5/25/2011 17:31 2.08 14584 United Kingdom \n",
"1 7/24/2011 11:58 2.55 17114 United Kingdom \n",
"2 7/19/2011 12:54 1.65 15311 United Kingdom \n",
"3 7/13/2011 11:34 1.25 16843 United Kingdom \n",
"4 2/20/2011 12:23 0.85 17811 United Kingdom "
],
"text/html": [
"\n",
" <div id=\"df-30bc42ee-6ea5-44bf-be05-bed4f4e3a72e\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>InvoiceNo</th>\n",
" <th>StockCode</th>\n",
" <th>Description</th>\n",
" <th>Quantity</th>\n",
" <th>InvoiceDate</th>\n",
" <th>UnitPrice</th>\n",
" <th>CustomerID</th>\n",
" <th>Country</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>554697</td>\n",
" <td>21166</td>\n",
" <td>COOK WITH WINE METAL SIGN</td>\n",
" <td>1</td>\n",
" <td>5/25/2011 17:31</td>\n",
" <td>2.08</td>\n",
" <td>14584</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>561038</td>\n",
" <td>82482</td>\n",
" <td>WOODEN PICTURE FRAME WHITE FINISH</td>\n",
" <td>2</td>\n",
" <td>7/24/2011 11:58</td>\n",
" <td>2.55</td>\n",
" <td>17114</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>560552</td>\n",
" <td>23192</td>\n",
" <td>BUNDLE OF 3 ALPHABET EXERCISE BOOKS</td>\n",
" <td>1</td>\n",
" <td>7/19/2011 12:54</td>\n",
" <td>1.65</td>\n",
" <td>15311</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>559884</td>\n",
" <td>85183B</td>\n",
" <td>CHARLIE &amp; LOLA WASTEPAPER BIN FLORA</td>\n",
" <td>12</td>\n",
" <td>7/13/2011 11:34</td>\n",
" <td>1.25</td>\n",
" <td>16843</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>544450</td>\n",
" <td>21789</td>\n",
" <td>KIDS RAIN MAC PINK</td>\n",
" <td>3</td>\n",
" <td>2/20/2011 12:23</td>\n",
" <td>0.85</td>\n",
" <td>17811</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-30bc42ee-6ea5-44bf-be05-bed4f4e3a72e')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-30bc42ee-6ea5-44bf-be05-bed4f4e3a72e button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-30bc42ee-6ea5-44bf-be05-bed4f4e3a72e');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 6
}
]
},
{
"cell_type": "markdown",
"source": [
"# Rows Filtering"
],
"metadata": {
"id": "gkTQ_ihnFqnN"
}
},
{
"cell_type": "markdown",
"source": [
"## Logical Operator"
],
"metadata": {
"id": "iBSy-u9mFzdX"
}
},
{
"cell_type": "code",
"source": [
"# retrieve female passengers data from titanic\n",
"titanic[titanic['sex']=='female']"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "p4PxHJe3Fp1e",
"outputId": "89804086-f62a-4b15-c6de-e6c9e6ad0889"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" survived pclass sex age sibsp parch fare embarked class \\\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",
"8 1 3 female 27.0 0 2 11.1333 S Third \n",
"9 1 2 female 14.0 1 0 30.0708 C Second \n",
".. ... ... ... ... ... ... ... ... ... \n",
"880 1 2 female 25.0 0 1 26.0000 S Second \n",
"882 0 3 female 22.0 0 0 10.5167 S Third \n",
"885 0 3 female 39.0 0 5 29.1250 Q Third \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",
"\n",
" who adult_male deck embark_town alive alone \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",
"8 woman False NaN Southampton yes False \n",
"9 child False NaN Cherbourg yes False \n",
".. ... ... ... ... ... ... \n",
"880 woman False NaN Southampton yes False \n",
"882 woman False NaN Southampton no True \n",
"885 woman False NaN Queenstown no False \n",
"887 woman False B Southampton yes True \n",
"888 woman False NaN Southampton no False \n",
"\n",
"[314 rows x 15 columns]"
],
"text/html": [
"\n",
" <div id=\"df-5a7f2a2a-43eb-4e8d-bc52-e8bb0e29025b\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.9250</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>27.0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>11.1333</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>female</td>\n",
" <td>14.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>30.0708</td>\n",
" <td>C</td>\n",
" <td>Second</td>\n",
" <td>child</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>880</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>female</td>\n",
" <td>25.0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>26.0000</td>\n",
" <td>S</td>\n",
" <td>Second</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>882</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>22.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>10.5167</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>885</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>39.0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>29.1250</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>887</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>19.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>B</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>888</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>23.4500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>314 rows × 15 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-5a7f2a2a-43eb-4e8d-bc52-e8bb0e29025b')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-5a7f2a2a-43eb-4e8d-bc52-e8bb0e29025b button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-5a7f2a2a-43eb-4e8d-bc52-e8bb0e29025b');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"source": [
"# retrieve passengers less than or equal to 50 y.o\n",
"titanic[titanic['age']<=50]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "FmTV-afsGuyB",
"outputId": "cfb22ff7-f674-41a3-9a3e-cae9d9bb7237"
},
"execution_count": null,
"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",
"885 0 3 female 39.0 0 5 29.1250 Q Third \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",
"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",
"885 woman False NaN Queenstown no False \n",
"886 man True NaN Southampton no True \n",
"887 woman False B Southampton yes True \n",
"889 man True C Cherbourg yes True \n",
"890 man True NaN Queenstown no True \n",
"\n",
"[650 rows x 15 columns]"
],
"text/html": [
"\n",
" <div id=\"df-a5cd73d6-91af-4231-86f2-facc806f10c4\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>7.2500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.9250</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.0500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>885</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>39.0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>29.1250</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>886</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>male</td>\n",
" <td>27.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>S</td>\n",
" <td>Second</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>887</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>19.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>B</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>889</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>890</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>32.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.7500</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>650 rows × 15 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a5cd73d6-91af-4231-86f2-facc806f10c4')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-a5cd73d6-91af-4231-86f2-facc806f10c4 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-a5cd73d6-91af-4231-86f2-facc806f10c4');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 8
}
]
},
{
"cell_type": "code",
"source": [
"# passengers older than 30 y.o AND fare greater than 20\n",
"titanic[(titanic['age']>30)&(titanic['fare']>20)]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 467
},
"id": "APEntHsYGIgh",
"outputId": "db9ee601-e731-4d73-b1a5-704be2c2252f"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" survived pclass sex age sibsp parch fare embarked class \\\n",
"1 1 1 female 38.0 1 0 71.2833 C First \n",
"3 1 1 female 35.0 1 0 53.1000 S First \n",
"6 0 1 male 54.0 0 0 51.8625 S First \n",
"11 1 1 female 58.0 0 0 26.5500 S First \n",
"13 0 3 male 39.0 1 5 31.2750 S Third \n",
".. ... ... ... ... ... ... ... ... ... \n",
"862 1 1 female 48.0 0 0 25.9292 S First \n",
"867 0 1 male 31.0 0 0 50.4958 S First \n",
"871 1 1 female 47.0 1 1 52.5542 S First \n",
"879 1 1 female 56.0 0 1 83.1583 C First \n",
"885 0 3 female 39.0 0 5 29.1250 Q Third \n",
"\n",
" who adult_male deck embark_town alive alone \n",
"1 woman False C Cherbourg yes False \n",
"3 woman False C Southampton yes False \n",
"6 man True E Southampton no True \n",
"11 woman False C Southampton yes True \n",
"13 man True NaN Southampton no False \n",
".. ... ... ... ... ... ... \n",
"862 woman False D Southampton yes True \n",
"867 man True A Southampton no True \n",
"871 woman False D Southampton yes False \n",
"879 woman False C Cherbourg yes False \n",
"885 woman False NaN Queenstown no False \n",
"\n",
"[172 rows x 15 columns]"
],
"text/html": [
"\n",
" <div id=\"df-f53e735e-9009-45cc-a713-f12064839b6f\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>54.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>51.8625</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>E</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>58.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>26.5500</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>39.0</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>31.2750</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>862</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>48.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>25.9292</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>D</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>867</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>31.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>50.4958</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>A</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>871</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>47.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>52.5542</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>D</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>879</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>56.0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>83.1583</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>885</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>39.0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>29.1250</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>172 rows × 15 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f53e735e-9009-45cc-a713-f12064839b6f')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f53e735e-9009-45cc-a713-f12064839b6f button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f53e735e-9009-45cc-a713-f12064839b6f');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 9
}
]
},
{
"cell_type": "code",
"source": [
"# passengers older than 30 y.o OR fare greater than 20\n",
"titanic[(titanic['age']>30)|(titanic['fare']>20)]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "BUHArZvEGIdI",
"outputId": "f2f6f333-2165-463d-9b1f-51e2a2fcb2c2"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" survived pclass sex age sibsp parch fare embarked class \\\n",
"1 1 1 female 38.0 1 0 71.2833 C First \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",
"6 0 1 male 54.0 0 0 51.8625 S First \n",
"7 0 3 male 2.0 3 1 21.0750 S Third \n",
".. ... ... ... ... ... ... ... ... ... \n",
"885 0 3 female 39.0 0 5 29.1250 Q Third \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",
"1 woman False C Cherbourg yes False \n",
"3 woman False C Southampton yes False \n",
"4 man True NaN Southampton no True \n",
"6 man True E Southampton no True \n",
"7 child False NaN Southampton no False \n",
".. ... ... ... ... ... ... \n",
"885 woman False NaN Queenstown no False \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",
"[509 rows x 15 columns]"
],
"text/html": [
"\n",
" <div id=\"df-eafe2bfa-00c2-451a-93a0-883989e231fd\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.0500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>54.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>51.8625</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>E</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>2.0</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>21.0750</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>child</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>885</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>39.0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>29.1250</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>887</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>19.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>B</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>888</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>23.4500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>889</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>890</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>32.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.7500</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>509 rows × 15 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-eafe2bfa-00c2-451a-93a0-883989e231fd')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-eafe2bfa-00c2-451a-93a0-883989e231fd button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-eafe2bfa-00c2-451a-93a0-883989e231fd');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 10
}
]
},
{
"cell_type": "markdown",
"source": [
"Notice the number of rows! OR >> AND"
],
"metadata": {
"id": "fYiAhJ_qGh-f"
}
},
{
"cell_type": "markdown",
"source": [
"## isin, isnull, notnull"
],
"metadata": {
"id": "T87uccXVHBOS"
}
},
{
"cell_type": "code",
"source": [
"# isin\n",
"titanic[titanic['class'].isin(['First','Second'])]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "uJFACkTZHA8l",
"outputId": "f229282d-8a74-4b55-ea3a-993ecb69e0d0"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" survived pclass sex age sibsp parch fare embarked class \\\n",
"1 1 1 female 38.0 1 0 71.2833 C First \n",
"3 1 1 female 35.0 1 0 53.1000 S First \n",
"6 0 1 male 54.0 0 0 51.8625 S First \n",
"9 1 2 female 14.0 1 0 30.0708 C Second \n",
"11 1 1 female 58.0 0 0 26.5500 S First \n",
".. ... ... ... ... ... ... ... ... ... \n",
"880 1 2 female 25.0 0 1 26.0000 S Second \n",
"883 0 2 male 28.0 0 0 10.5000 S Second \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",
"889 1 1 male 26.0 0 0 30.0000 C First \n",
"\n",
" who adult_male deck embark_town alive alone \n",
"1 woman False C Cherbourg yes False \n",
"3 woman False C Southampton yes False \n",
"6 man True E Southampton no True \n",
"9 child False NaN Cherbourg yes False \n",
"11 woman False C Southampton yes True \n",
".. ... ... ... ... ... ... \n",
"880 woman False NaN Southampton yes False \n",
"883 man True NaN Southampton no True \n",
"886 man True NaN Southampton no True \n",
"887 woman False B Southampton yes True \n",
"889 man True C Cherbourg yes True \n",
"\n",
"[400 rows x 15 columns]"
],
"text/html": [
"\n",
" <div id=\"df-a209b391-569d-4e50-9603-a0e5a1f13a19\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>54.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>51.8625</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>E</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>female</td>\n",
" <td>14.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>30.0708</td>\n",
" <td>C</td>\n",
" <td>Second</td>\n",
" <td>child</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>58.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>26.5500</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>880</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>female</td>\n",
" <td>25.0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>26.0000</td>\n",
" <td>S</td>\n",
" <td>Second</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>883</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>male</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>10.5000</td>\n",
" <td>S</td>\n",
" <td>Second</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>886</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>male</td>\n",
" <td>27.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>S</td>\n",
" <td>Second</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>887</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>19.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>B</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>889</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>400 rows × 15 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a209b391-569d-4e50-9603-a0e5a1f13a19')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-a209b391-569d-4e50-9603-a0e5a1f13a19 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-a209b391-569d-4e50-9603-a0e5a1f13a19');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"source": [
"# check\n",
"temp = titanic[titanic['class'].isin(['First','Second'])]\n",
"temp['class'].value_counts()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "J_Q80927GIVn",
"outputId": "d67d6e46-fef9-4232-b344-a2150a1e777d"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"First 216\n",
"Second 184\n",
"Third 0\n",
"Name: class, dtype: int64"
]
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "code",
"source": [
"# isnull\n",
"titanic[titanic['age'].isnull()]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "jfkSU-KbHjYM",
"outputId": "e2963194-6033-4281-bbd1-33a78f9bdb4c"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" survived pclass sex age sibsp parch fare embarked class \\\n",
"5 0 3 male NaN 0 0 8.4583 Q Third \n",
"17 1 2 male NaN 0 0 13.0000 S Second \n",
"19 1 3 female NaN 0 0 7.2250 C Third \n",
"26 0 3 male NaN 0 0 7.2250 C Third \n",
"28 1 3 female NaN 0 0 7.8792 Q Third \n",
".. ... ... ... ... ... ... ... ... ... \n",
"859 0 3 male NaN 0 0 7.2292 C Third \n",
"863 0 3 female NaN 8 2 69.5500 S Third \n",
"868 0 3 male NaN 0 0 9.5000 S Third \n",
"878 0 3 male NaN 0 0 7.8958 S Third \n",
"888 0 3 female NaN 1 2 23.4500 S Third \n",
"\n",
" who adult_male deck embark_town alive alone \n",
"5 man True NaN Queenstown no True \n",
"17 man True NaN Southampton yes True \n",
"19 woman False NaN Cherbourg yes True \n",
"26 man True NaN Cherbourg no True \n",
"28 woman False NaN Queenstown yes True \n",
".. ... ... ... ... ... ... \n",
"859 man True NaN Cherbourg no True \n",
"863 woman False NaN Southampton no False \n",
"868 man True NaN Southampton no True \n",
"878 man True NaN Southampton no True \n",
"888 woman False NaN Southampton no False \n",
"\n",
"[177 rows x 15 columns]"
],
"text/html": [
"\n",
" <div id=\"df-e8050295-7ddb-4c03-aaf2-dfcc1cc49d04\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.4583</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>S</td>\n",
" <td>Second</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2250</td>\n",
" <td>C</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2250</td>\n",
" <td>C</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Cherbourg</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8792</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>859</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2292</td>\n",
" <td>C</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Cherbourg</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>863</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>69.5500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>868</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9.5000</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>878</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8958</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>888</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>23.4500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>177 rows × 15 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e8050295-7ddb-4c03-aaf2-dfcc1cc49d04')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-e8050295-7ddb-4c03-aaf2-dfcc1cc49d04 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-e8050295-7ddb-4c03-aaf2-dfcc1cc49d04');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"source": [
"# isnull == isna\n",
"titanic[titanic['age'].isna()]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "u6JNIbjFHjUz",
"outputId": "bad84f81-37cd-4749-92c2-ba8280d32ba0"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" survived pclass sex age sibsp parch fare embarked class \\\n",
"5 0 3 male NaN 0 0 8.4583 Q Third \n",
"17 1 2 male NaN 0 0 13.0000 S Second \n",
"19 1 3 female NaN 0 0 7.2250 C Third \n",
"26 0 3 male NaN 0 0 7.2250 C Third \n",
"28 1 3 female NaN 0 0 7.8792 Q Third \n",
".. ... ... ... ... ... ... ... ... ... \n",
"859 0 3 male NaN 0 0 7.2292 C Third \n",
"863 0 3 female NaN 8 2 69.5500 S Third \n",
"868 0 3 male NaN 0 0 9.5000 S Third \n",
"878 0 3 male NaN 0 0 7.8958 S Third \n",
"888 0 3 female NaN 1 2 23.4500 S Third \n",
"\n",
" who adult_male deck embark_town alive alone \n",
"5 man True NaN Queenstown no True \n",
"17 man True NaN Southampton yes True \n",
"19 woman False NaN Cherbourg yes True \n",
"26 man True NaN Cherbourg no True \n",
"28 woman False NaN Queenstown yes True \n",
".. ... ... ... ... ... ... \n",
"859 man True NaN Cherbourg no True \n",
"863 woman False NaN Southampton no False \n",
"868 man True NaN Southampton no True \n",
"878 man True NaN Southampton no True \n",
"888 woman False NaN Southampton no False \n",
"\n",
"[177 rows x 15 columns]"
],
"text/html": [
"\n",
" <div id=\"df-f2e79f78-75c5-4ec9-8388-54d8c0c504f0\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.4583</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>S</td>\n",
" <td>Second</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2250</td>\n",
" <td>C</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2250</td>\n",
" <td>C</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Cherbourg</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8792</td>\n",
" <td>Q</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Queenstown</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>859</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2292</td>\n",
" <td>C</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Cherbourg</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>863</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>69.5500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>868</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9.5000</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>878</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8958</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>888</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>23.4500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>177 rows × 15 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f2e79f78-75c5-4ec9-8388-54d8c0c504f0')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f2e79f78-75c5-4ec9-8388-54d8c0c504f0 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f2e79f78-75c5-4ec9-8388-54d8c0c504f0');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"source": [
"# notnull\n",
"titanic[titanic['deck'].notnull()]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 467
},
"id": "35UQhU8GHjRt",
"outputId": "03067dee-519b-4070-f74b-981d83c12ecc"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" survived pclass sex age sibsp parch fare embarked class \\\n",
"1 1 1 female 38.0 1 0 71.2833 C First \n",
"3 1 1 female 35.0 1 0 53.1000 S First \n",
"6 0 1 male 54.0 0 0 51.8625 S First \n",
"10 1 3 female 4.0 1 1 16.7000 S Third \n",
"11 1 1 female 58.0 0 0 26.5500 S First \n",
".. ... ... ... ... ... ... ... ... ... \n",
"871 1 1 female 47.0 1 1 52.5542 S First \n",
"872 0 1 male 33.0 0 0 5.0000 S First \n",
"879 1 1 female 56.0 0 1 83.1583 C First \n",
"887 1 1 female 19.0 0 0 30.0000 S First \n",
"889 1 1 male 26.0 0 0 30.0000 C First \n",
"\n",
" who adult_male deck embark_town alive alone \n",
"1 woman False C Cherbourg yes False \n",
"3 woman False C Southampton yes False \n",
"6 man True E Southampton no True \n",
"10 child False G Southampton yes False \n",
"11 woman False C Southampton yes True \n",
".. ... ... ... ... ... ... \n",
"871 woman False D Southampton yes False \n",
"872 man True B Southampton no True \n",
"879 woman False C Cherbourg yes False \n",
"887 woman False B Southampton yes True \n",
"889 man True C Cherbourg yes True \n",
"\n",
"[203 rows x 15 columns]"
],
"text/html": [
"\n",
" <div id=\"df-9a499b52-808f-4a60-bb44-0da83673f93c\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>54.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>51.8625</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>E</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>4.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>16.7000</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>child</td>\n",
" <td>False</td>\n",
" <td>G</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>58.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>26.5500</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>871</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>47.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>52.5542</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>D</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>872</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>33.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5.0000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>B</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>879</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>56.0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>83.1583</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>887</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>19.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>B</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>889</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>male</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>203 rows × 15 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9a499b52-808f-4a60-bb44-0da83673f93c')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-9a499b52-808f-4a60-bb44-0da83673f93c button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-9a499b52-808f-4a60-bb44-0da83673f93c');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 15
}
]
},
{
"cell_type": "markdown",
"source": [
"## Tilde (~) sign"
],
"metadata": {
"id": "DoD14j_4IFB4"
}
},
{
"cell_type": "code",
"source": [
"mpg.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "-dyQpluPKUeZ",
"outputId": "c5083a4b-c9bf-4a36-c809-ba47ce7ed78b"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" mpg cylinders displacement horsepower weight acceleration \\\n",
"0 18.0 8 307.0 130.0 3504 12.0 \n",
"1 15.0 8 350.0 165.0 3693 11.5 \n",
"2 18.0 8 318.0 150.0 3436 11.0 \n",
"3 16.0 8 304.0 150.0 3433 12.0 \n",
"4 17.0 8 302.0 140.0 3449 10.5 \n",
"\n",
" model_year origin name \n",
"0 70 usa chevrolet chevelle malibu \n",
"1 70 usa buick skylark 320 \n",
"2 70 usa plymouth satellite \n",
"3 70 usa amc rebel sst \n",
"4 70 usa ford torino "
],
"text/html": [
"\n",
" <div id=\"df-d669f870-bde8-4e62-812f-f76823dd373d\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mpg</th>\n",
" <th>cylinders</th>\n",
" <th>displacement</th>\n",
" <th>horsepower</th>\n",
" <th>weight</th>\n",
" <th>acceleration</th>\n",
" <th>model_year</th>\n",
" <th>origin</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>18.0</td>\n",
" <td>8</td>\n",
" <td>307.0</td>\n",
" <td>130.0</td>\n",
" <td>3504</td>\n",
" <td>12.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>chevrolet chevelle malibu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>15.0</td>\n",
" <td>8</td>\n",
" <td>350.0</td>\n",
" <td>165.0</td>\n",
" <td>3693</td>\n",
" <td>11.5</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>buick skylark 320</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>18.0</td>\n",
" <td>8</td>\n",
" <td>318.0</td>\n",
" <td>150.0</td>\n",
" <td>3436</td>\n",
" <td>11.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>plymouth satellite</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>16.0</td>\n",
" <td>8</td>\n",
" <td>304.0</td>\n",
" <td>150.0</td>\n",
" <td>3433</td>\n",
" <td>12.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>amc rebel sst</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>17.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>140.0</td>\n",
" <td>3449</td>\n",
" <td>10.5</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>ford torino</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d669f870-bde8-4e62-812f-f76823dd373d')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-d669f870-bde8-4e62-812f-f76823dd373d button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-d669f870-bde8-4e62-812f-f76823dd373d');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 16
}
]
},
{
"cell_type": "code",
"source": [
"# contains\n",
"filter = mpg['name'].str.contains('ford')\n",
"mpg[filter]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "HfAo8VTwIEw8",
"outputId": "964efdff-3163-4a59-e90a-1c335cd24685"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" mpg cylinders displacement horsepower weight acceleration \\\n",
"4 17.0 8 302.0 140.0 3449 10.5 \n",
"5 15.0 8 429.0 198.0 4341 10.0 \n",
"17 21.0 6 200.0 85.0 2587 16.0 \n",
"25 10.0 8 360.0 215.0 4615 14.0 \n",
"32 25.0 4 98.0 NaN 2046 19.0 \n",
"36 19.0 6 250.0 88.0 3302 15.5 \n",
"40 14.0 8 351.0 153.0 4154 13.5 \n",
"43 13.0 8 400.0 170.0 4746 12.0 \n",
"48 18.0 6 250.0 88.0 3139 14.5 \n",
"61 21.0 4 122.0 86.0 2226 16.5 \n",
"65 14.0 8 351.0 153.0 4129 13.0 \n",
"74 13.0 8 302.0 140.0 4294 16.0 \n",
"80 22.0 4 122.0 86.0 2395 16.0 \n",
"88 14.0 8 302.0 137.0 4042 14.5 \n",
"92 13.0 8 351.0 158.0 4363 13.0 \n",
"100 18.0 6 250.0 88.0 3021 16.5 \n",
"104 12.0 8 400.0 167.0 4906 12.5 \n",
"112 19.0 4 122.0 85.0 2310 18.5 \n",
"126 21.0 6 200.0 NaN 2875 17.0 \n",
"130 26.0 4 122.0 80.0 2451 16.5 \n",
"136 16.0 8 302.0 140.0 4141 14.0 \n",
"139 14.0 8 302.0 140.0 4638 16.0 \n",
"155 15.0 6 250.0 72.0 3158 19.5 \n",
"159 14.0 8 351.0 148.0 4657 13.5 \n",
"166 13.0 8 302.0 129.0 3169 12.0 \n",
"168 23.0 4 140.0 83.0 2639 17.0 \n",
"174 18.0 6 171.0 97.0 2984 14.5 \n",
"190 14.5 8 351.0 152.0 4215 12.8 \n",
"193 24.0 6 200.0 81.0 3012 17.6 \n",
"200 18.0 6 250.0 78.0 3574 21.0 \n",
"206 26.5 4 140.0 72.0 2565 13.6 \n",
"214 13.0 8 302.0 130.0 3870 15.0 \n",
"228 18.5 6 250.0 98.0 3525 19.0 \n",
"232 16.0 8 351.0 149.0 4335 14.5 \n",
"236 25.5 4 140.0 89.0 2755 15.8 \n",
"245 36.1 4 98.0 66.0 1800 14.4 \n",
"254 20.2 6 200.0 85.0 2965 15.8 \n",
"255 25.1 4 140.0 88.0 2720 15.4 \n",
"264 18.1 8 302.0 139.0 3205 11.2 \n",
"282 22.3 4 140.0 88.0 2890 17.3 \n",
"286 17.6 8 302.0 129.0 3725 13.4 \n",
"290 15.5 8 351.0 142.0 4054 14.3 \n",
"314 26.4 4 140.0 88.0 2870 18.1 \n",
"336 23.6 4 140.0 NaN 2905 14.3 \n",
"351 34.4 4 98.0 65.0 2045 16.2 \n",
"352 29.9 4 98.0 65.0 2380 20.7 \n",
"365 20.2 6 200.0 88.0 3060 17.1 \n",
"373 24.0 4 140.0 92.0 2865 16.4 \n",
"389 22.0 6 232.0 112.0 2835 14.7 \n",
"393 27.0 4 140.0 86.0 2790 15.6 \n",
"396 28.0 4 120.0 79.0 2625 18.6 \n",
"\n",
" model_year origin name \n",
"4 70 usa ford torino \n",
"5 70 usa ford galaxie 500 \n",
"17 70 usa ford maverick \n",
"25 70 usa ford f250 \n",
"32 71 usa ford pinto \n",
"36 71 usa ford torino 500 \n",
"40 71 usa ford galaxie 500 \n",
"43 71 usa ford country squire (sw) \n",
"48 71 usa ford mustang \n",
"61 72 usa ford pinto runabout \n",
"65 72 usa ford galaxie 500 \n",
"74 72 usa ford gran torino (sw) \n",
"80 72 usa ford pinto (sw) \n",
"88 73 usa ford gran torino \n",
"92 73 usa ford ltd \n",
"100 73 usa ford maverick \n",
"104 73 usa ford country \n",
"112 73 usa ford pinto \n",
"126 74 usa ford maverick \n",
"130 74 usa ford pinto \n",
"136 74 usa ford gran torino \n",
"139 74 usa ford gran torino (sw) \n",
"155 75 usa ford maverick \n",
"159 75 usa ford ltd \n",
"166 75 usa ford mustang ii \n",
"168 75 usa ford pinto \n",
"174 75 usa ford pinto \n",
"190 76 usa ford gran torino \n",
"193 76 usa ford maverick \n",
"200 76 usa ford granada ghia \n",
"206 76 usa ford pinto \n",
"214 76 usa ford f108 \n",
"228 77 usa ford granada \n",
"232 77 usa ford thunderbird \n",
"236 77 usa ford mustang ii 2+2 \n",
"245 78 usa ford fiesta \n",
"254 78 usa ford fairmont (auto) \n",
"255 78 usa ford fairmont (man) \n",
"264 78 usa ford futura \n",
"282 79 usa ford fairmont 4 \n",
"286 79 usa ford ltd landau \n",
"290 79 usa ford country squire (sw) \n",
"314 80 usa ford fairmont \n",
"336 80 usa ford mustang cobra \n",
"351 81 usa ford escort 4w \n",
"352 81 usa ford escort 2h \n",
"365 81 usa ford granada gl \n",
"373 82 usa ford fairmont futura \n",
"389 82 usa ford granada l \n",
"393 82 usa ford mustang gl \n",
"396 82 usa ford ranger "
],
"text/html": [
"\n",
" <div id=\"df-c6d0ef96-87c6-40d3-9b01-b67a25454754\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mpg</th>\n",
" <th>cylinders</th>\n",
" <th>displacement</th>\n",
" <th>horsepower</th>\n",
" <th>weight</th>\n",
" <th>acceleration</th>\n",
" <th>model_year</th>\n",
" <th>origin</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>17.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>140.0</td>\n",
" <td>3449</td>\n",
" <td>10.5</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>ford torino</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>15.0</td>\n",
" <td>8</td>\n",
" <td>429.0</td>\n",
" <td>198.0</td>\n",
" <td>4341</td>\n",
" <td>10.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>ford galaxie 500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>21.0</td>\n",
" <td>6</td>\n",
" <td>200.0</td>\n",
" <td>85.0</td>\n",
" <td>2587</td>\n",
" <td>16.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>ford maverick</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>10.0</td>\n",
" <td>8</td>\n",
" <td>360.0</td>\n",
" <td>215.0</td>\n",
" <td>4615</td>\n",
" <td>14.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>ford f250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>25.0</td>\n",
" <td>4</td>\n",
" <td>98.0</td>\n",
" <td>NaN</td>\n",
" <td>2046</td>\n",
" <td>19.0</td>\n",
" <td>71</td>\n",
" <td>usa</td>\n",
" <td>ford pinto</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>19.0</td>\n",
" <td>6</td>\n",
" <td>250.0</td>\n",
" <td>88.0</td>\n",
" <td>3302</td>\n",
" <td>15.5</td>\n",
" <td>71</td>\n",
" <td>usa</td>\n",
" <td>ford torino 500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>14.0</td>\n",
" <td>8</td>\n",
" <td>351.0</td>\n",
" <td>153.0</td>\n",
" <td>4154</td>\n",
" <td>13.5</td>\n",
" <td>71</td>\n",
" <td>usa</td>\n",
" <td>ford galaxie 500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>13.0</td>\n",
" <td>8</td>\n",
" <td>400.0</td>\n",
" <td>170.0</td>\n",
" <td>4746</td>\n",
" <td>12.0</td>\n",
" <td>71</td>\n",
" <td>usa</td>\n",
" <td>ford country squire (sw)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>18.0</td>\n",
" <td>6</td>\n",
" <td>250.0</td>\n",
" <td>88.0</td>\n",
" <td>3139</td>\n",
" <td>14.5</td>\n",
" <td>71</td>\n",
" <td>usa</td>\n",
" <td>ford mustang</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>21.0</td>\n",
" <td>4</td>\n",
" <td>122.0</td>\n",
" <td>86.0</td>\n",
" <td>2226</td>\n",
" <td>16.5</td>\n",
" <td>72</td>\n",
" <td>usa</td>\n",
" <td>ford pinto runabout</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>14.0</td>\n",
" <td>8</td>\n",
" <td>351.0</td>\n",
" <td>153.0</td>\n",
" <td>4129</td>\n",
" <td>13.0</td>\n",
" <td>72</td>\n",
" <td>usa</td>\n",
" <td>ford galaxie 500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>13.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>140.0</td>\n",
" <td>4294</td>\n",
" <td>16.0</td>\n",
" <td>72</td>\n",
" <td>usa</td>\n",
" <td>ford gran torino (sw)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>22.0</td>\n",
" <td>4</td>\n",
" <td>122.0</td>\n",
" <td>86.0</td>\n",
" <td>2395</td>\n",
" <td>16.0</td>\n",
" <td>72</td>\n",
" <td>usa</td>\n",
" <td>ford pinto (sw)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>14.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>137.0</td>\n",
" <td>4042</td>\n",
" <td>14.5</td>\n",
" <td>73</td>\n",
" <td>usa</td>\n",
" <td>ford gran torino</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>13.0</td>\n",
" <td>8</td>\n",
" <td>351.0</td>\n",
" <td>158.0</td>\n",
" <td>4363</td>\n",
" <td>13.0</td>\n",
" <td>73</td>\n",
" <td>usa</td>\n",
" <td>ford ltd</td>\n",
" </tr>\n",
" <tr>\n",
" <th>100</th>\n",
" <td>18.0</td>\n",
" <td>6</td>\n",
" <td>250.0</td>\n",
" <td>88.0</td>\n",
" <td>3021</td>\n",
" <td>16.5</td>\n",
" <td>73</td>\n",
" <td>usa</td>\n",
" <td>ford maverick</td>\n",
" </tr>\n",
" <tr>\n",
" <th>104</th>\n",
" <td>12.0</td>\n",
" <td>8</td>\n",
" <td>400.0</td>\n",
" <td>167.0</td>\n",
" <td>4906</td>\n",
" <td>12.5</td>\n",
" <td>73</td>\n",
" <td>usa</td>\n",
" <td>ford country</td>\n",
" </tr>\n",
" <tr>\n",
" <th>112</th>\n",
" <td>19.0</td>\n",
" <td>4</td>\n",
" <td>122.0</td>\n",
" <td>85.0</td>\n",
" <td>2310</td>\n",
" <td>18.5</td>\n",
" <td>73</td>\n",
" <td>usa</td>\n",
" <td>ford pinto</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td>21.0</td>\n",
" <td>6</td>\n",
" <td>200.0</td>\n",
" <td>NaN</td>\n",
" <td>2875</td>\n",
" <td>17.0</td>\n",
" <td>74</td>\n",
" <td>usa</td>\n",
" <td>ford maverick</td>\n",
" </tr>\n",
" <tr>\n",
" <th>130</th>\n",
" <td>26.0</td>\n",
" <td>4</td>\n",
" <td>122.0</td>\n",
" <td>80.0</td>\n",
" <td>2451</td>\n",
" <td>16.5</td>\n",
" <td>74</td>\n",
" <td>usa</td>\n",
" <td>ford pinto</td>\n",
" </tr>\n",
" <tr>\n",
" <th>136</th>\n",
" <td>16.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>140.0</td>\n",
" <td>4141</td>\n",
" <td>14.0</td>\n",
" <td>74</td>\n",
" <td>usa</td>\n",
" <td>ford gran torino</td>\n",
" </tr>\n",
" <tr>\n",
" <th>139</th>\n",
" <td>14.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>140.0</td>\n",
" <td>4638</td>\n",
" <td>16.0</td>\n",
" <td>74</td>\n",
" <td>usa</td>\n",
" <td>ford gran torino (sw)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>155</th>\n",
" <td>15.0</td>\n",
" <td>6</td>\n",
" <td>250.0</td>\n",
" <td>72.0</td>\n",
" <td>3158</td>\n",
" <td>19.5</td>\n",
" <td>75</td>\n",
" <td>usa</td>\n",
" <td>ford maverick</td>\n",
" </tr>\n",
" <tr>\n",
" <th>159</th>\n",
" <td>14.0</td>\n",
" <td>8</td>\n",
" <td>351.0</td>\n",
" <td>148.0</td>\n",
" <td>4657</td>\n",
" <td>13.5</td>\n",
" <td>75</td>\n",
" <td>usa</td>\n",
" <td>ford ltd</td>\n",
" </tr>\n",
" <tr>\n",
" <th>166</th>\n",
" <td>13.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>129.0</td>\n",
" <td>3169</td>\n",
" <td>12.0</td>\n",
" <td>75</td>\n",
" <td>usa</td>\n",
" <td>ford mustang ii</td>\n",
" </tr>\n",
" <tr>\n",
" <th>168</th>\n",
" <td>23.0</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>83.0</td>\n",
" <td>2639</td>\n",
" <td>17.0</td>\n",
" <td>75</td>\n",
" <td>usa</td>\n",
" <td>ford pinto</td>\n",
" </tr>\n",
" <tr>\n",
" <th>174</th>\n",
" <td>18.0</td>\n",
" <td>6</td>\n",
" <td>171.0</td>\n",
" <td>97.0</td>\n",
" <td>2984</td>\n",
" <td>14.5</td>\n",
" <td>75</td>\n",
" <td>usa</td>\n",
" <td>ford pinto</td>\n",
" </tr>\n",
" <tr>\n",
" <th>190</th>\n",
" <td>14.5</td>\n",
" <td>8</td>\n",
" <td>351.0</td>\n",
" <td>152.0</td>\n",
" <td>4215</td>\n",
" <td>12.8</td>\n",
" <td>76</td>\n",
" <td>usa</td>\n",
" <td>ford gran torino</td>\n",
" </tr>\n",
" <tr>\n",
" <th>193</th>\n",
" <td>24.0</td>\n",
" <td>6</td>\n",
" <td>200.0</td>\n",
" <td>81.0</td>\n",
" <td>3012</td>\n",
" <td>17.6</td>\n",
" <td>76</td>\n",
" <td>usa</td>\n",
" <td>ford maverick</td>\n",
" </tr>\n",
" <tr>\n",
" <th>200</th>\n",
" <td>18.0</td>\n",
" <td>6</td>\n",
" <td>250.0</td>\n",
" <td>78.0</td>\n",
" <td>3574</td>\n",
" <td>21.0</td>\n",
" <td>76</td>\n",
" <td>usa</td>\n",
" <td>ford granada ghia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>206</th>\n",
" <td>26.5</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>72.0</td>\n",
" <td>2565</td>\n",
" <td>13.6</td>\n",
" <td>76</td>\n",
" <td>usa</td>\n",
" <td>ford pinto</td>\n",
" </tr>\n",
" <tr>\n",
" <th>214</th>\n",
" <td>13.0</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>130.0</td>\n",
" <td>3870</td>\n",
" <td>15.0</td>\n",
" <td>76</td>\n",
" <td>usa</td>\n",
" <td>ford f108</td>\n",
" </tr>\n",
" <tr>\n",
" <th>228</th>\n",
" <td>18.5</td>\n",
" <td>6</td>\n",
" <td>250.0</td>\n",
" <td>98.0</td>\n",
" <td>3525</td>\n",
" <td>19.0</td>\n",
" <td>77</td>\n",
" <td>usa</td>\n",
" <td>ford granada</td>\n",
" </tr>\n",
" <tr>\n",
" <th>232</th>\n",
" <td>16.0</td>\n",
" <td>8</td>\n",
" <td>351.0</td>\n",
" <td>149.0</td>\n",
" <td>4335</td>\n",
" <td>14.5</td>\n",
" <td>77</td>\n",
" <td>usa</td>\n",
" <td>ford thunderbird</td>\n",
" </tr>\n",
" <tr>\n",
" <th>236</th>\n",
" <td>25.5</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>89.0</td>\n",
" <td>2755</td>\n",
" <td>15.8</td>\n",
" <td>77</td>\n",
" <td>usa</td>\n",
" <td>ford mustang ii 2+2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>245</th>\n",
" <td>36.1</td>\n",
" <td>4</td>\n",
" <td>98.0</td>\n",
" <td>66.0</td>\n",
" <td>1800</td>\n",
" <td>14.4</td>\n",
" <td>78</td>\n",
" <td>usa</td>\n",
" <td>ford fiesta</td>\n",
" </tr>\n",
" <tr>\n",
" <th>254</th>\n",
" <td>20.2</td>\n",
" <td>6</td>\n",
" <td>200.0</td>\n",
" <td>85.0</td>\n",
" <td>2965</td>\n",
" <td>15.8</td>\n",
" <td>78</td>\n",
" <td>usa</td>\n",
" <td>ford fairmont (auto)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>255</th>\n",
" <td>25.1</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>88.0</td>\n",
" <td>2720</td>\n",
" <td>15.4</td>\n",
" <td>78</td>\n",
" <td>usa</td>\n",
" <td>ford fairmont (man)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>264</th>\n",
" <td>18.1</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>139.0</td>\n",
" <td>3205</td>\n",
" <td>11.2</td>\n",
" <td>78</td>\n",
" <td>usa</td>\n",
" <td>ford futura</td>\n",
" </tr>\n",
" <tr>\n",
" <th>282</th>\n",
" <td>22.3</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>88.0</td>\n",
" <td>2890</td>\n",
" <td>17.3</td>\n",
" <td>79</td>\n",
" <td>usa</td>\n",
" <td>ford fairmont 4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>286</th>\n",
" <td>17.6</td>\n",
" <td>8</td>\n",
" <td>302.0</td>\n",
" <td>129.0</td>\n",
" <td>3725</td>\n",
" <td>13.4</td>\n",
" <td>79</td>\n",
" <td>usa</td>\n",
" <td>ford ltd landau</td>\n",
" </tr>\n",
" <tr>\n",
" <th>290</th>\n",
" <td>15.5</td>\n",
" <td>8</td>\n",
" <td>351.0</td>\n",
" <td>142.0</td>\n",
" <td>4054</td>\n",
" <td>14.3</td>\n",
" <td>79</td>\n",
" <td>usa</td>\n",
" <td>ford country squire (sw)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>314</th>\n",
" <td>26.4</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>88.0</td>\n",
" <td>2870</td>\n",
" <td>18.1</td>\n",
" <td>80</td>\n",
" <td>usa</td>\n",
" <td>ford fairmont</td>\n",
" </tr>\n",
" <tr>\n",
" <th>336</th>\n",
" <td>23.6</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>NaN</td>\n",
" <td>2905</td>\n",
" <td>14.3</td>\n",
" <td>80</td>\n",
" <td>usa</td>\n",
" <td>ford mustang cobra</td>\n",
" </tr>\n",
" <tr>\n",
" <th>351</th>\n",
" <td>34.4</td>\n",
" <td>4</td>\n",
" <td>98.0</td>\n",
" <td>65.0</td>\n",
" <td>2045</td>\n",
" <td>16.2</td>\n",
" <td>81</td>\n",
" <td>usa</td>\n",
" <td>ford escort 4w</td>\n",
" </tr>\n",
" <tr>\n",
" <th>352</th>\n",
" <td>29.9</td>\n",
" <td>4</td>\n",
" <td>98.0</td>\n",
" <td>65.0</td>\n",
" <td>2380</td>\n",
" <td>20.7</td>\n",
" <td>81</td>\n",
" <td>usa</td>\n",
" <td>ford escort 2h</td>\n",
" </tr>\n",
" <tr>\n",
" <th>365</th>\n",
" <td>20.2</td>\n",
" <td>6</td>\n",
" <td>200.0</td>\n",
" <td>88.0</td>\n",
" <td>3060</td>\n",
" <td>17.1</td>\n",
" <td>81</td>\n",
" <td>usa</td>\n",
" <td>ford granada gl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>373</th>\n",
" <td>24.0</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>92.0</td>\n",
" <td>2865</td>\n",
" <td>16.4</td>\n",
" <td>82</td>\n",
" <td>usa</td>\n",
" <td>ford fairmont futura</td>\n",
" </tr>\n",
" <tr>\n",
" <th>389</th>\n",
" <td>22.0</td>\n",
" <td>6</td>\n",
" <td>232.0</td>\n",
" <td>112.0</td>\n",
" <td>2835</td>\n",
" <td>14.7</td>\n",
" <td>82</td>\n",
" <td>usa</td>\n",
" <td>ford granada l</td>\n",
" </tr>\n",
" <tr>\n",
" <th>393</th>\n",
" <td>27.0</td>\n",
" <td>4</td>\n",
" <td>140.0</td>\n",
" <td>86.0</td>\n",
" <td>2790</td>\n",
" <td>15.6</td>\n",
" <td>82</td>\n",
" <td>usa</td>\n",
" <td>ford mustang gl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>396</th>\n",
" <td>28.0</td>\n",
" <td>4</td>\n",
" <td>120.0</td>\n",
" <td>79.0</td>\n",
" <td>2625</td>\n",
" <td>18.6</td>\n",
" <td>82</td>\n",
" <td>usa</td>\n",
" <td>ford ranger</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c6d0ef96-87c6-40d3-9b01-b67a25454754')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-c6d0ef96-87c6-40d3-9b01-b67a25454754 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-c6d0ef96-87c6-40d3-9b01-b67a25454754');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 17
}
]
},
{
"cell_type": "code",
"source": [
"# NOT contains\n",
"filter = mpg['name'].str.contains('ford')\n",
"mpg[~filter]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"id": "0k0KVsozIEnD",
"outputId": "99e7adc9-d65d-486e-fd12-75c255faf1ff"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" mpg cylinders displacement horsepower weight acceleration \\\n",
"0 18.0 8 307.0 130.0 3504 12.0 \n",
"1 15.0 8 350.0 165.0 3693 11.5 \n",
"2 18.0 8 318.0 150.0 3436 11.0 \n",
"3 16.0 8 304.0 150.0 3433 12.0 \n",
"6 14.0 8 454.0 220.0 4354 9.0 \n",
".. ... ... ... ... ... ... \n",
"391 36.0 4 135.0 84.0 2370 13.0 \n",
"392 27.0 4 151.0 90.0 2950 17.3 \n",
"394 44.0 4 97.0 52.0 2130 24.6 \n",
"395 32.0 4 135.0 84.0 2295 11.6 \n",
"397 31.0 4 119.0 82.0 2720 19.4 \n",
"\n",
" model_year origin name \n",
"0 70 usa chevrolet chevelle malibu \n",
"1 70 usa buick skylark 320 \n",
"2 70 usa plymouth satellite \n",
"3 70 usa amc rebel sst \n",
"6 70 usa chevrolet impala \n",
".. ... ... ... \n",
"391 82 usa dodge charger 2.2 \n",
"392 82 usa chevrolet camaro \n",
"394 82 europe vw pickup \n",
"395 82 usa dodge rampage \n",
"397 82 usa chevy s-10 \n",
"\n",
"[347 rows x 9 columns]"
],
"text/html": [
"\n",
" <div id=\"df-1c7e8ef5-2b33-4dbc-aaeb-c5c1d49340dd\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mpg</th>\n",
" <th>cylinders</th>\n",
" <th>displacement</th>\n",
" <th>horsepower</th>\n",
" <th>weight</th>\n",
" <th>acceleration</th>\n",
" <th>model_year</th>\n",
" <th>origin</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>18.0</td>\n",
" <td>8</td>\n",
" <td>307.0</td>\n",
" <td>130.0</td>\n",
" <td>3504</td>\n",
" <td>12.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>chevrolet chevelle malibu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>15.0</td>\n",
" <td>8</td>\n",
" <td>350.0</td>\n",
" <td>165.0</td>\n",
" <td>3693</td>\n",
" <td>11.5</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>buick skylark 320</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>18.0</td>\n",
" <td>8</td>\n",
" <td>318.0</td>\n",
" <td>150.0</td>\n",
" <td>3436</td>\n",
" <td>11.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>plymouth satellite</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>16.0</td>\n",
" <td>8</td>\n",
" <td>304.0</td>\n",
" <td>150.0</td>\n",
" <td>3433</td>\n",
" <td>12.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>amc rebel sst</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>14.0</td>\n",
" <td>8</td>\n",
" <td>454.0</td>\n",
" <td>220.0</td>\n",
" <td>4354</td>\n",
" <td>9.0</td>\n",
" <td>70</td>\n",
" <td>usa</td>\n",
" <td>chevrolet impala</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>391</th>\n",
" <td>36.0</td>\n",
" <td>4</td>\n",
" <td>135.0</td>\n",
" <td>84.0</td>\n",
" <td>2370</td>\n",
" <td>13.0</td>\n",
" <td>82</td>\n",
" <td>usa</td>\n",
" <td>dodge charger 2.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>392</th>\n",
" <td>27.0</td>\n",
" <td>4</td>\n",
" <td>151.0</td>\n",
" <td>90.0</td>\n",
" <td>2950</td>\n",
" <td>17.3</td>\n",
" <td>82</td>\n",
" <td>usa</td>\n",
" <td>chevrolet camaro</td>\n",
" </tr>\n",
" <tr>\n",
" <th>394</th>\n",
" <td>44.0</td>\n",
" <td>4</td>\n",
" <td>97.0</td>\n",
" <td>52.0</td>\n",
" <td>2130</td>\n",
" <td>24.6</td>\n",
" <td>82</td>\n",
" <td>europe</td>\n",
" <td>vw pickup</td>\n",
" </tr>\n",
" <tr>\n",
" <th>395</th>\n",
" <td>32.0</td>\n",
" <td>4</td>\n",
" <td>135.0</td>\n",
" <td>84.0</td>\n",
" <td>2295</td>\n",
" <td>11.6</td>\n",
" <td>82</td>\n",
" <td>usa</td>\n",
" <td>dodge rampage</td>\n",
" </tr>\n",
" <tr>\n",
" <th>397</th>\n",
" <td>31.0</td>\n",
" <td>4</td>\n",
" <td>119.0</td>\n",
" <td>82.0</td>\n",
" <td>2720</td>\n",
" <td>19.4</td>\n",
" <td>82</td>\n",
" <td>usa</td>\n",
" <td>chevy s-10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>347 rows × 9 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-1c7e8ef5-2b33-4dbc-aaeb-c5c1d49340dd')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-1c7e8ef5-2b33-4dbc-aaeb-c5c1d49340dd button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-1c7e8ef5-2b33-4dbc-aaeb-c5c1d49340dd');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 18
}
]
},
{
"cell_type": "code",
"source": [
"# NOT isin\n",
"filter = mpg['origin'].isin(['usa','europe'])\n",
"mpg[~filter]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"id": "4-j26aFsFppw",
"outputId": "59f774b0-c2b0-4528-ad1e-e2971ae0e01f"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" mpg cylinders displacement horsepower weight acceleration \\\n",
"14 24.0 4 113.0 95.0 2372 15.0 \n",
"18 27.0 4 97.0 88.0 2130 14.5 \n",
"29 27.0 4 97.0 88.0 2130 14.5 \n",
"31 25.0 4 113.0 95.0 2228 14.0 \n",
"53 31.0 4 71.0 65.0 1773 19.0 \n",
".. ... ... ... ... ... ... \n",
"382 34.0 4 108.0 70.0 2245 16.9 \n",
"383 38.0 4 91.0 67.0 1965 15.0 \n",
"384 32.0 4 91.0 67.0 1965 15.7 \n",
"385 38.0 4 91.0 67.0 1995 16.2 \n",
"390 32.0 4 144.0 96.0 2665 13.9 \n",
"\n",
" model_year origin name \n",
"14 70 japan toyota corona mark ii \n",
"18 70 japan datsun pl510 \n",
"29 71 japan datsun pl510 \n",
"31 71 japan toyota corona \n",
"53 71 japan toyota corolla 1200 \n",
".. ... ... ... \n",
"382 82 japan toyota corolla \n",
"383 82 japan honda civic \n",
"384 82 japan honda civic (auto) \n",
"385 82 japan datsun 310 gx \n",
"390 82 japan toyota celica gt \n",
"\n",
"[79 rows x 9 columns]"
],
"text/html": [
"\n",
" <div id=\"df-10e7ae99-1955-4c4e-8371-22a05cb82297\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>mpg</th>\n",
" <th>cylinders</th>\n",
" <th>displacement</th>\n",
" <th>horsepower</th>\n",
" <th>weight</th>\n",
" <th>acceleration</th>\n",
" <th>model_year</th>\n",
" <th>origin</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>24.0</td>\n",
" <td>4</td>\n",
" <td>113.0</td>\n",
" <td>95.0</td>\n",
" <td>2372</td>\n",
" <td>15.0</td>\n",
" <td>70</td>\n",
" <td>japan</td>\n",
" <td>toyota corona mark ii</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>27.0</td>\n",
" <td>4</td>\n",
" <td>97.0</td>\n",
" <td>88.0</td>\n",
" <td>2130</td>\n",
" <td>14.5</td>\n",
" <td>70</td>\n",
" <td>japan</td>\n",
" <td>datsun pl510</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>27.0</td>\n",
" <td>4</td>\n",
" <td>97.0</td>\n",
" <td>88.0</td>\n",
" <td>2130</td>\n",
" <td>14.5</td>\n",
" <td>71</td>\n",
" <td>japan</td>\n",
" <td>datsun pl510</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>25.0</td>\n",
" <td>4</td>\n",
" <td>113.0</td>\n",
" <td>95.0</td>\n",
" <td>2228</td>\n",
" <td>14.0</td>\n",
" <td>71</td>\n",
" <td>japan</td>\n",
" <td>toyota corona</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>31.0</td>\n",
" <td>4</td>\n",
" <td>71.0</td>\n",
" <td>65.0</td>\n",
" <td>1773</td>\n",
" <td>19.0</td>\n",
" <td>71</td>\n",
" <td>japan</td>\n",
" <td>toyota corolla 1200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>382</th>\n",
" <td>34.0</td>\n",
" <td>4</td>\n",
" <td>108.0</td>\n",
" <td>70.0</td>\n",
" <td>2245</td>\n",
" <td>16.9</td>\n",
" <td>82</td>\n",
" <td>japan</td>\n",
" <td>toyota corolla</td>\n",
" </tr>\n",
" <tr>\n",
" <th>383</th>\n",
" <td>38.0</td>\n",
" <td>4</td>\n",
" <td>91.0</td>\n",
" <td>67.0</td>\n",
" <td>1965</td>\n",
" <td>15.0</td>\n",
" <td>82</td>\n",
" <td>japan</td>\n",
" <td>honda civic</td>\n",
" </tr>\n",
" <tr>\n",
" <th>384</th>\n",
" <td>32.0</td>\n",
" <td>4</td>\n",
" <td>91.0</td>\n",
" <td>67.0</td>\n",
" <td>1965</td>\n",
" <td>15.7</td>\n",
" <td>82</td>\n",
" <td>japan</td>\n",
" <td>honda civic (auto)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>385</th>\n",
" <td>38.0</td>\n",
" <td>4</td>\n",
" <td>91.0</td>\n",
" <td>67.0</td>\n",
" <td>1995</td>\n",
" <td>16.2</td>\n",
" <td>82</td>\n",
" <td>japan</td>\n",
" <td>datsun 310 gx</td>\n",
" </tr>\n",
" <tr>\n",
" <th>390</th>\n",
" <td>32.0</td>\n",
" <td>4</td>\n",
" <td>144.0</td>\n",
" <td>96.0</td>\n",
" <td>2665</td>\n",
" <td>13.9</td>\n",
" <td>82</td>\n",
" <td>japan</td>\n",
" <td>toyota celica gt</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>79 rows × 9 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-10e7ae99-1955-4c4e-8371-22a05cb82297')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-10e7ae99-1955-4c4e-8371-22a05cb82297 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-10e7ae99-1955-4c4e-8371-22a05cb82297');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 19
}
]
},
{
"cell_type": "markdown",
"source": [
"### EXERCISE"
],
"metadata": {
"id": "hK0q2bLyLKpF"
}
},
{
"cell_type": "code",
"source": [
"# 1\n"
],
"metadata": {
"id": "WmRwPaltLNCd"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# 2\n"
],
"metadata": {
"id": "SyMvam28LM5W"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Group By Aggregation"
],
"metadata": {
"id": "qiN9SBKhM7YP"
}
},
{
"cell_type": "code",
"source": [
"mpg.groupby(['origin']).agg(\n",
" distinct_name = ('name','nunique')\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 175
},
"id": "zZYT-VYkM8YT",
"outputId": "6eca35fc-8433-4454-983f-47c157322245"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" distinct_name\n",
"origin \n",
"europe 58\n",
"japan 60\n",
"usa 187"
],
"text/html": [
"\n",
" <div id=\"df-4f7068b2-d9a3-461b-825a-b6de62b65ae8\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>distinct_name</th>\n",
" </tr>\n",
" <tr>\n",
" <th>origin</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>europe</th>\n",
" <td>58</td>\n",
" </tr>\n",
" <tr>\n",
" <th>japan</th>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>usa</th>\n",
" <td>187</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-4f7068b2-d9a3-461b-825a-b6de62b65ae8')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-4f7068b2-d9a3-461b-825a-b6de62b65ae8 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-4f7068b2-d9a3-461b-825a-b6de62b65ae8');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 22
}
]
},
{
"cell_type": "code",
"source": [
"mpg.groupby(['origin','cylinders']).agg(\n",
" distinct_name = ('name','nunique')\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 363
},
"id": "TlMP6LTjjs2E",
"outputId": "af9e7e4b-223c-4db8-e9d7-ccfb68146918"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" distinct_name\n",
"origin cylinders \n",
"europe 4 51\n",
" 5 3\n",
" 6 4\n",
"japan 3 4\n",
" 4 51\n",
" 6 5\n",
"usa 4 59\n",
" 6 54\n",
" 8 82"
],
"text/html": [
"\n",
" <div id=\"df-b082a53a-7744-4aa8-8067-c0c023150d9e\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>distinct_name</th>\n",
" </tr>\n",
" <tr>\n",
" <th>origin</th>\n",
" <th>cylinders</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">europe</th>\n",
" <th>4</th>\n",
" <td>51</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">japan</th>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>51</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">usa</th>\n",
" <th>4</th>\n",
" <td>59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>54</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>82</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b082a53a-7744-4aa8-8067-c0c023150d9e')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-b082a53a-7744-4aa8-8067-c0c023150d9e button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-b082a53a-7744-4aa8-8067-c0c023150d9e');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 23
}
]
},
{
"cell_type": "code",
"source": [
"mpg.groupby(['origin','model_year']).agg(\n",
" distinct_cyl = ('cylinders','nunique')\n",
").reset_index()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "Q0vMXutziTxS",
"outputId": "2d2d2c58-9dee-4203-a8d8-005819ba8a5c"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" origin model_year distinct_cyl\n",
"0 europe 70 1\n",
"1 europe 71 1\n",
"2 europe 72 1\n",
"3 europe 73 1\n",
"4 europe 74 1\n",
"5 europe 75 1\n",
"6 europe 76 2\n",
"7 europe 77 1\n",
"8 europe 78 3\n",
"9 europe 79 2\n",
"10 europe 80 2\n",
"11 europe 81 2\n",
"12 europe 82 1\n",
"13 japan 70 1\n",
"14 japan 71 1\n",
"15 japan 72 2\n",
"16 japan 73 3\n",
"17 japan 74 1\n",
"18 japan 75 1\n",
"19 japan 76 2\n",
"20 japan 77 3\n",
"21 japan 78 1\n",
"22 japan 79 1\n",
"23 japan 80 3\n",
"24 japan 81 2\n",
"25 japan 82 1\n",
"26 usa 70 2\n",
"27 usa 71 3\n",
"28 usa 72 2\n",
"29 usa 73 3\n",
"30 usa 74 3\n",
"31 usa 75 3\n",
"32 usa 76 3\n",
"33 usa 77 3\n",
"34 usa 78 3\n",
"35 usa 79 3\n",
"36 usa 80 2\n",
"37 usa 81 3\n",
"38 usa 82 2"
],
"text/html": [
"\n",
" <div id=\"df-22de251f-6309-4569-80b8-73c6e188a8fb\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>origin</th>\n",
" <th>model_year</th>\n",
" <th>distinct_cyl</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>europe</td>\n",
" <td>70</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>europe</td>\n",
" <td>71</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>europe</td>\n",
" <td>72</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>europe</td>\n",
" <td>73</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>europe</td>\n",
" <td>74</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>europe</td>\n",
" <td>75</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>europe</td>\n",
" <td>76</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>europe</td>\n",
" <td>77</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>europe</td>\n",
" <td>78</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>europe</td>\n",
" <td>79</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>europe</td>\n",
" <td>80</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>europe</td>\n",
" <td>81</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>europe</td>\n",
" <td>82</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>japan</td>\n",
" <td>70</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>japan</td>\n",
" <td>71</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>japan</td>\n",
" <td>72</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>japan</td>\n",
" <td>73</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>japan</td>\n",
" <td>74</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>japan</td>\n",
" <td>75</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>japan</td>\n",
" <td>76</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>japan</td>\n",
" <td>77</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>japan</td>\n",
" <td>78</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>japan</td>\n",
" <td>79</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>japan</td>\n",
" <td>80</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>japan</td>\n",
" <td>81</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>japan</td>\n",
" <td>82</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>usa</td>\n",
" <td>70</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>usa</td>\n",
" <td>71</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>usa</td>\n",
" <td>72</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>usa</td>\n",
" <td>73</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>usa</td>\n",
" <td>74</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>usa</td>\n",
" <td>75</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>usa</td>\n",
" <td>76</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>usa</td>\n",
" <td>77</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>usa</td>\n",
" <td>78</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>usa</td>\n",
" <td>79</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>usa</td>\n",
" <td>80</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>usa</td>\n",
" <td>81</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>usa</td>\n",
" <td>82</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-22de251f-6309-4569-80b8-73c6e188a8fb')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-22de251f-6309-4569-80b8-73c6e188a8fb button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-22de251f-6309-4569-80b8-73c6e188a8fb');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 24
}
]
},
{
"cell_type": "code",
"source": [
"titanic.groupby('survived').agg(\n",
" max_age = ('age','max'),\n",
" max_fare = ('fare','max')\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"id": "YDpFkYYbk_8s",
"outputId": "bee80292-8ba1-4a35-b536-4df16c905bbf"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" max_age max_fare\n",
"survived \n",
"0 74.0 263.0000\n",
"1 80.0 512.3292"
],
"text/html": [
"\n",
" <div id=\"df-d61a2133-1b55-480f-a3fd-bf5b8c6ce0d6\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>max_age</th>\n",
" <th>max_fare</th>\n",
" </tr>\n",
" <tr>\n",
" <th>survived</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>74.0</td>\n",
" <td>263.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>80.0</td>\n",
" <td>512.3292</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d61a2133-1b55-480f-a3fd-bf5b8c6ce0d6')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-d61a2133-1b55-480f-a3fd-bf5b8c6ce0d6 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-d61a2133-1b55-480f-a3fd-bf5b8c6ce0d6');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 25
}
]
},
{
"cell_type": "code",
"source": [
"titanic.groupby('survived').agg(\n",
" max_age = ('age','max'),\n",
" max_fare = ('fare','max')\n",
").reset_index()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 112
},
"id": "lN3V9GFvlNt6",
"outputId": "17d46953-a588-4ae9-83f4-827fe4cd51ad"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" survived max_age max_fare\n",
"0 0 74.0 263.0000\n",
"1 1 80.0 512.3292"
],
"text/html": [
"\n",
" <div id=\"df-6acb0818-6c73-47a3-bf03-5e6ff157a2ca\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>max_age</th>\n",
" <th>max_fare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>74.0</td>\n",
" <td>263.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>80.0</td>\n",
" <td>512.3292</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-6acb0818-6c73-47a3-bf03-5e6ff157a2ca')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-6acb0818-6c73-47a3-bf03-5e6ff157a2ca button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-6acb0818-6c73-47a3-bf03-5e6ff157a2ca');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 26
}
]
},
{
"cell_type": "markdown",
"source": [
"## Exercise"
],
"metadata": {
"id": "DSnd8eY3NvDg"
}
},
{
"cell_type": "code",
"source": [
"#"
],
"metadata": {
"id": "O68KW7bumyU3"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Pivot Table vs Melt"
],
"metadata": {
"id": "lgBF-bUSN2vL"
}
},
{
"cell_type": "code",
"source": [
"# basis dataframe to pivot\n",
"df = titanic.groupby(['sex','sibsp']).agg(\n",
" median_fare=('fare','median')\n",
").reset_index()\n",
"\n",
"df"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 488
},
"id": "MZca1w_4olz9",
"outputId": "9831ddba-c23e-478e-eec7-b6a57743c4a9"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" sex sibsp median_fare\n",
"0 female 0 13.0000\n",
"1 female 1 28.4500\n",
"2 female 2 27.0000\n",
"3 female 3 25.4667\n",
"4 female 4 31.2750\n",
"5 female 5 46.9000\n",
"6 female 8 69.5500\n",
"7 male 0 8.0500\n",
"8 male 1 26.0000\n",
"9 male 2 23.2500\n",
"10 male 3 27.9000\n",
"11 male 4 31.3875\n",
"12 male 5 46.9000\n",
"13 male 8 69.5500"
],
"text/html": [
"\n",
" <div id=\"df-fffe0863-6c4c-454c-b786-55d4cc89310f\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sex</th>\n",
" <th>sibsp</th>\n",
" <th>median_fare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>28.4500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>female</td>\n",
" <td>2</td>\n",
" <td>27.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>female</td>\n",
" <td>3</td>\n",
" <td>25.4667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>female</td>\n",
" <td>4</td>\n",
" <td>31.2750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>female</td>\n",
" <td>5</td>\n",
" <td>46.9000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>female</td>\n",
" <td>8</td>\n",
" <td>69.5500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>8.0500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>male</td>\n",
" <td>1</td>\n",
" <td>26.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>male</td>\n",
" <td>2</td>\n",
" <td>23.2500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>male</td>\n",
" <td>3</td>\n",
" <td>27.9000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>male</td>\n",
" <td>4</td>\n",
" <td>31.3875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>male</td>\n",
" <td>5</td>\n",
" <td>46.9000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>male</td>\n",
" <td>8</td>\n",
" <td>69.5500</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-fffe0863-6c4c-454c-b786-55d4cc89310f')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-fffe0863-6c4c-454c-b786-55d4cc89310f button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-fffe0863-6c4c-454c-b786-55d4cc89310f');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 29
}
]
},
{
"cell_type": "code",
"source": [
"# pivot table\n",
"df_pivot = pd.pivot_table(df,\n",
" index='sex',\n",
" columns='sibsp')\n",
"df_pivot"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 175
},
"id": "fZHDSqT7ujv_",
"outputId": "d5080c5b-0a03-4b9e-abb7-db2d59173e68"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" median_fare \n",
"sibsp 0 1 2 3 4 5 8\n",
"sex \n",
"female 13.00 28.45 27.00 25.4667 31.2750 46.9 69.55\n",
"male 8.05 26.00 23.25 27.9000 31.3875 46.9 69.55"
],
"text/html": [
"\n",
" <div id=\"df-eb2a78c4-a0a9-4cb8-b44d-9e9a5174d337\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"7\" halign=\"left\">median_fare</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sibsp</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>8</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>13.00</td>\n",
" <td>28.45</td>\n",
" <td>27.00</td>\n",
" <td>25.4667</td>\n",
" <td>31.2750</td>\n",
" <td>46.9</td>\n",
" <td>69.55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>8.05</td>\n",
" <td>26.00</td>\n",
" <td>23.25</td>\n",
" <td>27.9000</td>\n",
" <td>31.3875</td>\n",
" <td>46.9</td>\n",
" <td>69.55</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-eb2a78c4-a0a9-4cb8-b44d-9e9a5174d337')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-eb2a78c4-a0a9-4cb8-b44d-9e9a5174d337 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-eb2a78c4-a0a9-4cb8-b44d-9e9a5174d337');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 30
}
]
},
{
"cell_type": "code",
"source": [
"# to make the column flat\n",
"df_pivot = pd.pivot_table(df,\n",
" index='sex',\n",
" columns='sibsp')\n",
"\n",
"df_pivot.columns = [str(j) for j in df_pivot.columns.get_level_values(1)]\n",
"\n",
"dff = df_pivot.reset_index()\n",
"dff"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 112
},
"id": "VdD6xKEuxH-g",
"outputId": "7a5ccc60-b66e-4646-ed73-abba20d15c54"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" sex 0 1 2 3 4 5 8\n",
"0 female 13.00 28.45 27.00 25.4667 31.2750 46.9 69.55\n",
"1 male 8.05 26.00 23.25 27.9000 31.3875 46.9 69.55"
],
"text/html": [
"\n",
" <div id=\"df-aa525d51-bda9-4580-99ab-0fb14c967909\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sex</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>8</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>female</td>\n",
" <td>13.00</td>\n",
" <td>28.45</td>\n",
" <td>27.00</td>\n",
" <td>25.4667</td>\n",
" <td>31.2750</td>\n",
" <td>46.9</td>\n",
" <td>69.55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>male</td>\n",
" <td>8.05</td>\n",
" <td>26.00</td>\n",
" <td>23.25</td>\n",
" <td>27.9000</td>\n",
" <td>31.3875</td>\n",
" <td>46.9</td>\n",
" <td>69.55</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-aa525d51-bda9-4580-99ab-0fb14c967909')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-aa525d51-bda9-4580-99ab-0fb14c967909 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-aa525d51-bda9-4580-99ab-0fb14c967909');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 31
}
]
},
{
"cell_type": "code",
"source": [
"# Melt\n",
"dff.melt(id_vars = 'sex',\n",
" value_name='median_fare',\n",
" var_name='sibsp')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 488
},
"id": "1q4gJPLY3olw",
"outputId": "77d2a222-df5a-47d9-b755-180a7fa5253d"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" sex sibsp median_fare\n",
"0 female 0 13.0000\n",
"1 male 0 8.0500\n",
"2 female 1 28.4500\n",
"3 male 1 26.0000\n",
"4 female 2 27.0000\n",
"5 male 2 23.2500\n",
"6 female 3 25.4667\n",
"7 male 3 27.9000\n",
"8 female 4 31.2750\n",
"9 male 4 31.3875\n",
"10 female 5 46.9000\n",
"11 male 5 46.9000\n",
"12 female 8 69.5500\n",
"13 male 8 69.5500"
],
"text/html": [
"\n",
" <div id=\"df-a07a9f92-811c-4c07-b49f-eab175be9e0e\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sex</th>\n",
" <th>sibsp</th>\n",
" <th>median_fare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>8.0500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>28.4500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>male</td>\n",
" <td>1</td>\n",
" <td>26.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>female</td>\n",
" <td>2</td>\n",
" <td>27.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>male</td>\n",
" <td>2</td>\n",
" <td>23.2500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>female</td>\n",
" <td>3</td>\n",
" <td>25.4667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>male</td>\n",
" <td>3</td>\n",
" <td>27.9000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>female</td>\n",
" <td>4</td>\n",
" <td>31.2750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>male</td>\n",
" <td>4</td>\n",
" <td>31.3875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>female</td>\n",
" <td>5</td>\n",
" <td>46.9000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>male</td>\n",
" <td>5</td>\n",
" <td>46.9000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>female</td>\n",
" <td>8</td>\n",
" <td>69.5500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>male</td>\n",
" <td>8</td>\n",
" <td>69.5500</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a07a9f92-811c-4c07-b49f-eab175be9e0e')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-a07a9f92-811c-4c07-b49f-eab175be9e0e button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-a07a9f92-811c-4c07-b49f-eab175be9e0e');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 32
}
]
},
{
"cell_type": "code",
"source": [
"app_visitor.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "jrKAMha9Oqvw",
"outputId": "f798f49f-fa5a-47f6-de24-8b1c1983e8f4"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" date android ios\n",
"0 2021-07-01 11706 2216\n",
"1 2021-07-02 11158 4444\n",
"2 2021-07-03 9298 4273\n",
"3 2021-07-04 10094 2542\n",
"4 2021-07-05 11178 4891"
],
"text/html": [
"\n",
" <div id=\"df-b337c626-3567-4f4e-967a-36b58f7feb3a\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>android</th>\n",
" <th>ios</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2021-07-01</td>\n",
" <td>11706</td>\n",
" <td>2216</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2021-07-02</td>\n",
" <td>11158</td>\n",
" <td>4444</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2021-07-03</td>\n",
" <td>9298</td>\n",
" <td>4273</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2021-07-04</td>\n",
" <td>10094</td>\n",
" <td>2542</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2021-07-05</td>\n",
" <td>11178</td>\n",
" <td>4891</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b337c626-3567-4f4e-967a-36b58f7feb3a')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-b337c626-3567-4f4e-967a-36b58f7feb3a button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-b337c626-3567-4f4e-967a-36b58f7feb3a');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 33
}
]
},
{
"cell_type": "code",
"source": [
"app_visitor_melt = app_visitor.melt(\n",
" id_vars='date',\n",
" var_name='platform',\n",
" value_name='visitors'\n",
")\n",
"app_visitor_melt"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"id": "_75brFY-OqqT",
"outputId": "219aefea-056f-479f-b296-4a14e410d8e9"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" date platform visitors\n",
"0 2021-07-01 android 11706\n",
"1 2021-07-02 android 11158\n",
"2 2021-07-03 android 9298\n",
"3 2021-07-04 android 10094\n",
"4 2021-07-05 android 11178\n",
".. ... ... ...\n",
"57 2021-07-27 ios 4773\n",
"58 2021-07-28 ios 4869\n",
"59 2021-07-29 ios 4452\n",
"60 2021-07-30 ios 3710\n",
"61 2021-07-31 ios 2505\n",
"\n",
"[62 rows x 3 columns]"
],
"text/html": [
"\n",
" <div id=\"df-ccde0c5c-b829-4716-b58b-b4dc2b5ad031\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>platform</th>\n",
" <th>visitors</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2021-07-01</td>\n",
" <td>android</td>\n",
" <td>11706</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2021-07-02</td>\n",
" <td>android</td>\n",
" <td>11158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2021-07-03</td>\n",
" <td>android</td>\n",
" <td>9298</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2021-07-04</td>\n",
" <td>android</td>\n",
" <td>10094</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2021-07-05</td>\n",
" <td>android</td>\n",
" <td>11178</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>2021-07-27</td>\n",
" <td>ios</td>\n",
" <td>4773</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>2021-07-28</td>\n",
" <td>ios</td>\n",
" <td>4869</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>2021-07-29</td>\n",
" <td>ios</td>\n",
" <td>4452</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>2021-07-30</td>\n",
" <td>ios</td>\n",
" <td>3710</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>2021-07-31</td>\n",
" <td>ios</td>\n",
" <td>2505</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>62 rows × 3 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ccde0c5c-b829-4716-b58b-b4dc2b5ad031')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-ccde0c5c-b829-4716-b58b-b4dc2b5ad031 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-ccde0c5c-b829-4716-b58b-b4dc2b5ad031');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 34
}
]
},
{
"cell_type": "code",
"source": [
"plt.figure(figsize=(10,6))\n",
"sns.lineplot(data=app_visitor_melt,\n",
" x='date',\n",
" y='visitors',\n",
" hue='platform')\n",
"plt.xticks(rotation=90)\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 436
},
"id": "oWnLdkHUOqgb",
"outputId": "bfbecd8f-9c24-49ab-d242-041499f2af29"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnAAAAGjCAYAAACsUSi/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3hUVfrA8e+dSe89IT2BkEYSSoCEJqEJgm1FEWy4ioq66trWtuu66toblv0pKjZEULGBqIAgPZAEAiENSCMJpPc+M/f3R4qU9EyF83keH+HOvTNnQjJ57znveV9JlmUEQRAEQRAE06Ew9AAEQRAEQRCEgREBnCAIgiAIgokRAZwgCIIgCIKJEQGcIAiCIAiCiREBnCAIgiAIgokRAZwgCIIgCIKJMTP0APTNzc1NDgwMNPQwBEEQBEEQ+pScnFwuy7L7uccvugAuMDCQpKQkQw9DEARBEAShT5Ik5Xd3XGdLqJIkfSxJUqkkSWlnHHtFkqRMSZIOS5L0nSRJTmc89rgkScclScqSJOnSM47P7Th2XJKkx844HiRJUmLH8bWSJFno6r0IgiAIgiAYE13mwH0CzD3n2GZglCzL0UA28DiAJEkRwPVAZMc170mSpJQkSQm8C8wDIoDFHecCvAS8IcvyCKAKuE2H70UQBEEQBMFo6CyAk2V5B1B5zrHfZFlWdfx1H+Db8ecrga9kWW6RZTkXOA5M6PjvuCzLObIstwJfAVdKkiQBM4BvOq7/FLhKV+9FEARBEATBmBgyB+6vwNqOP/vQHtB1Kuw4BnDynOMTAVeg+oxg8MzzzyNJ0h3AHQD+/v5DHrggCIIgCP3X1tZGYWEhzc3Nhh6K0bKyssLX1xdzc/N+nW+QAE6SpCcBFbBaH68ny/IHwAcAsbGxsj5eUxAEQRCEdoWFhdjb2xMYGEj7IppwJlmWqaiooLCwkKCgoH5do/c6cJIkLQUWADfIstwZTBUBfmec5ttxrKfjFYCTJElm5xwXBEEQBMHINDc34+rqKoK3HkiShKur64BmKPUawEmSNBd4FLhCluXGMx76EbhekiRLSZKCgBBgP3AACOnYcWpB+0aHHzsCv23Awo7rbwF+0Nf7EARBEARhYETw1ruBfn10WUZkDbAXCJUkqVCSpNuAdwB7YLMkSYckSfo/AFmWjwLrgHTgF+AeWZbVHTlu9wK/AhnAuo5zAf4BPChJ0nHac+I+0tV7EQRBEATB+EyfPr3P2q5vvvkmjY1/zhl9/fXXhIeHk5CQoOvh6ZTOcuBkWV7czeEegyxZlp8Hnu/m+M/Az90cz6F9l6ogCIIgCEK33nzzTW688UZsbGwA+Oijj1i5ciVTpkzp1/UqlQozM+Pre2B8IxIEQRAEQThDXl4ec+fOZdy4caSkpBAZGclnn3121jnLly/nwIEDNDU1sXDhQp555hlWrFhBcXExCQkJuLm5kZCQwK5du7jtttu44oorePbZZ1m+fDlJSUmYmZnx+uuvk5CQwCeffML69eupr69HrVZz66238v3339PQ0MCxY8d4+OGHaW1t5fPPP8fS0pKff/4ZFxcXvX5NRDN7QRAEQRCMXlZWFnfffTcZGRk4ODjw3nvvnfX4888/T1JSEocPH+aPP/7g8OHD3HfffXh7e7Nt2za2bdvGv/71L2JjY1m9ejWvvPIK7777LpIkceTIEdasWcMtt9zStZEgJSWFb775hj/++AOAtLQ01q9fz4EDB3jyySexsbHh4MGDxMfHnxdM6oMI4LQst7yBgwVVhh6GIAiCIFxQ/Pz8mDx5MgA33ngju3btOuvxdevWMXbsWMaMGcPRo0dJT0/v8zl37drFjTfeCEBYWBgBAQFkZ2cDMHv27LNm1RISErC3t8fd3R1HR0cuv/xyAKKiosjLy9PGWxwQEcBp2ePrD3PzR/s5dLLa0EMRBEEQhAvGubs0z/x7bm4ur776Klu3buXw4cPMnz9/yEWDbW1tz/q7paVl158VCkXX3xUKBSqVCn0TAZyWvbFoNM62Ftz0USKHC0UQJwiCIAjaUFBQwN69ewH48ssvz9qEUFtbi62tLY6OjpSUlLBp06aux+zt7amrq+v2OadOncrq1e09BbKzsykoKCA0NFSH70J7RACnZcMcrVlzRxxONubc+GEiaUU1hh6SIAiCIJi80NBQ3n33XcLDw6mqqmL58uVdj8XExDBmzBjCwsJYsmRJ11IrwB133MHcuXO7LRty9913o9FoiIqKYtGiRXzyySdnzbQZM+nPZggXh9jYWLmvmjHaUFjVyKL391HfouLLZROJ9HbU+WsKgiAIgjHKyMggPDx80Nfn5eWxYMEC0tLStDgq49Pd10mSpGRZlmPPPVfMwOmIr7MNX90Rh52lGTd+mEjGqVpDD0kQBEEQhAuECOB0yM/Fhi+XTcTKXMkNHyaSdbr7NXjB+NU0tbFqdy4qtcbQQxEEQRiw9SmFHC+tN/QwBi0wMPCCn30bKBHA6ViAqy1rlsVhrpRYsnIf2SUiiDNFr/6axTM/pfNHdpmhhyIIgjAgNU1tPPR1Ku9tO27ooQhaJAI4PQh0aw/ilIr2IO54qQjiTElueQNr9hcAsCWjxMCjEQRBGJhDJ6uRZUjKFzVKLyQigNOTYHc7vlwWB0gsXpnIiTLTncq+2LzyayYWZgrig13ZklGKRnNxbfwRBMG0pXQEbgWVjZTWDq02mmA8RACnRyM87FizbCKyLLP4g33kljcYekhCHw4WVPHzkdMsmxrMovF+lNW1kCrq+wlGKKesntjntpCcX2nooQhGJqWgCmtzJSBm4S4kIoDTsxBPe1bfHodK0x7E5YkgzmjJsswLmzJxs7Ng2bRgEkI9UCoksYwqGKXfM0spr2/h3z+mi1lioYtGI3PoZDWXxwzDylzBgTwR4A+GnZ3dgM5PSkrivvvu6/axwMBAysvLhzwmEcAZQKiXPV8um0iLSs3ilfsoqGg09JCEbvyeWcr+3ErunxmCnaUZjjbmTAh0YUt6qaGHJgjnScytxEwhcaSohh9Siww9HMFIHC+rp65ZxYQgV0b7OZEsZuC0prf2WbGxsaxYsUKnry8COAMJ83Jg9e1xNLW1B3EnK0UQZ0zUGpmXfskkyM2W6yf4dx2fFeFJVkmdCLoFo6LRyBzIq+TqMT5E+zry8i9ZNLWqDT0swQh05r+N9XciNsCFo8W1NLTov2+nMbjqqqsYN24ckZGRfPDBB0D7zNqTTz5JTEwMcXFxlJS0r7Dk5uYSHx9PVFQUTz31VNdzbN++nalTp3LFFVcQERFBc3Mzt956K1FRUYwZM4Zt27Z1nbdgwQIAKioqmDNnDpGRkdx+++1oq4GCmVaeRRiUCG8HvrhtIktW7uP6D/ax9s44fJ1tDD0sAfg2pZDsknreu2Es5so/73NmhXvw7IZ0tmSU8NcpQQYcoSD8KaukjurGNuKCXVk4zpdFH+zjo1053DsjxNBDEwwspaAKZxtzgtxsiQ10Rr1NJvVkNZNGuBlsTM/8dJT0Yu0Wt4/wduDpyyN7Pefjjz/GxcWFpqYmxo8fzzXXXENDQwNxcXE8//zzPProo6xcuZKnnnqK+++/n+XLl3PzzTfz7rvvnvU8KSkppKWlERQUxGuvvYYkSRw5coTMzEzmzJlDdnb22e/3mWeYMmUK//rXv9i4cSMfffSRVt6zmIEzsFE+jqy+PY7a5jYWr9xHUXWToYd00WtuU/PG5mxi/JyYN8rrrMcCXG0Z6WnH5nSRBycYj/257XlNE4JcmBjsyqWRnvxv+wlK68SOw4tdcn4VY/ydkSSJsQHOSNLFu5FhxYoVXTNtJ0+e5NixY1hYWHTNlI0bN468vDwAdu/ezeLFiwG46aabznqeCRMmEBTUfgO/a9cubrzxRgDCwsIICAg4L4DbsWNH1znz58/H2dlZK+9HzMAZgShfR764bSI3fpjI4o6ZuGGO1oYe1kVr1e48TtU088ai0UiSdN7js8I9eX9HDjWNbTjamBtghBeGmsY2JAU4WImv4VAl5lbg42SNn0v7DP5j88KZnfEHb2zO5oW/RBt4dIKhVDe2cqKsgb+M9QXaf9ZCPe0NvpGhr5kyXdi+fTtbtmxh79692NjYMH36dJqbmzE3N+/6nFcqlWfltXX3+Q9ga2urlzH3RczAGYkYPyc+u20ClQ2tLP5gH6drTP/OuUWl5r41B00qabaqoZX3th9nRpgHccGu3Z4zO8ITtUZme7bYzDAUt6zaz31rDhp6GCZPlmX251YyMcil61iQmy03xwey9sBJMk+LPswXq4Mn20sejfF36joWG+jMwYJq1BfZTuWamhqcnZ2xsbEhMzOTffv29Xr+5MmT+eqrrwBYvXp1j+dNnTq16/Hs7GwKCgoIDQ0965xp06bx5ZdfArBp0yaqqrTzO1EEcEZkjL8zn/51PGV1LTy+/rChhzNk65IK+TG1mA935hh6KP323vbjNLSo+MfcsB7PifF1ws3OUiyjDkFxdROHTlaz50QFzW0i2X4oTpTVU17fysRgl7OO3zdzBPZW5jy/McNAIxMM7WB+FQqp/TOrU2yAC/UtqosusJ87dy4qlYrw8HAee+wx4uLiej3/rbfe4t133yUqKoqiop53dd99991oNBqioqJYtGgRn3zyCZaWlmed8/TTT7Njxw4iIyNZv349/v7+PTzbwIglVCMzLsCFJRP9+XRPPg0tKmwtTfOfqEWl7uq793tmKfUtKuyM/L0UVjXy6Z58rhnrS6iXfY/nKRQSs8I92Hj4FK0qDRZm4j5ooLZ21NJrVWk4WFBN/PDuZzuFviV25b+d/TV0srHgvpkhPLshne1ZpUwP9TDE8AQDSimoJszL4azfI7GB7flXyflVRHo7GmpoemdpacmmTZvOO15f/2dXpIULF7Jw4UIAgoKC2Lt3b9djzz33HADTp09n+vTpXcetrKxYtWrVec975nmurq789ttv2ngbZxG/eYxQQqgHrWoNu48PvdCfoaxLKuRUTTP3zQyhRaXp+oVtzF7/LRtJgr/PHtnnubPCPalrUXUlj+vLtqxS/rbmoMkvf2zJKMXb0QqFBHtzKgw9HJOWmFOJh70lga7n72C/KS6AQFcb/vtzBiq1xgCjEwxF3VHAd2yA01nHfZys8XKw4kCe6aS2CN0TAZwRig10wc7SjG1ZZYYeyqC0qNT8b9txxgU488DMELwcrPgp9ZShh9Wr9OJavjtUxNLJgXg79b2BZPIIN6zMFWxOP62H0f3p9d+y+Sm1mN8zTTf/rr5Fxd4TFVwWNYxRPo7sOyECuMGSZZnE3AomBrt2m3BtYabgsXlhZJfUszbppAFGKBjKsdI66ltUjPU/e8ejJEnEBjqTLDoymDwRwBkhCzMFU0a4sT2rVGsF//Tp66RCimuaeWBWCAqFxGVRw9iRXUZtc5uhh9ajF3/JxMHKnLsvGdGv860tlEwZ4c6WDP39Gx0urOZIUQ0Aq3bn6uU1dWFndhmtag2zIjyJD3bl4MkqUXR2kPIrGimpbTlrA8O5Lo30YkKgC29szqbOiH8GBe3q3Dw2LuD8khWxAc4U1zSLslUmTgRwRmpGmAenaprJPF1n6KEMSGfu27gAZ6Z0FIpcEDOMVrWGzUeNcxl19/FydmSXcW/CiAGVBZkT4UlRdRMZp/Tzb7R6XwHW5kqWTx/OnhMVZJnY90anLRmlOFqbExvgTNxwV9rUskntVDYmnUv4vQVwkiTx1IJwyutb+d/2E/oammBgKfnVuNpa4O9y/tJ6bGD790uSmIUzaSKAM1LTQ90BTG6prHP27f6ZIV1LOmP8nPBxsmbD4WIDj+58Go3Mi5sy8XGy5qb4gAFdmxDmgSShl+b2NU1t/JhazJWjvbljajCWZgo+2ZOn89fVNrVGZltWKQmh7pgpFYwPdMFMIbE3x3TzPQ1pX24FrrYWjPDovdF2tK8TV4/x4cNduRRWiTZwF4ODBX8W8D1XmJc9thZKkkQenEkTAZyR8nCwYpSPA9uzTCeA65x9G+vvxNSQP9u0SJLE/Ohh7DxWTnVjqwFHeL4NR05xpKiGh+aMxMpcOaBr3e0tGePnpJcA7vuDRTS1qblhYgDOthZcPcaH7w4WGt3Xsy8HC6qobGhlVoQnAHaWZkT7OrJX5MENSmJOJROCXHosOHqmRy4NRQJe+TVL9wMTDKqqoZWc8obzNjB0MlMqGBvgfNF2ZLhQiADOiCWEepCcX2Uyv6S/Se7MfRt53i+UBdHDUGlkfjOiZdRWlYZXf80ifJgDV432GdRzzIrw5HBhjU4LL8uyzOrEfKJ9HYnybd/2v3RyIM1tGr46YFqJ6ZszSjBTSEwb6d51LH64K6mFNdRfpA22B6uwqpGi6qZel0/P5O1kzbKpwfxwqJhDHQVehQvTwZOdDex7btk0LsCZzNO1Rp2brG2TJk0y9BC0SgRwRiwhzAONDDuOGf/yUqtKw7u/nz/71inKxxF/Fxt+MqJl1NWJ+RRUNvLYvDAUir5nMLozO7x9JkmXs3BJ+VVkl9Rzw8Q/iz+GeTkQH+zK53vzTao8xJb0EuKCXc9qnxUf7IZaIxu8vY+p2d9D/bfe3DV9OG52ljy/Md0kN0gJ/ZOSX41SIRHt23Odt/GBLsgyHCy4eIL5PXv2GHoIWiUCOCMW4+uEi60F20wgD+7r5JM9zr5B+zLqguhh7DlRQUV9iwFGeLa65jbe/v04k4a7Mq2bgLO/RnjYEeBqo9MAbvW+fOwtzbg8xvus40snB1JU3aSXJVxtyC1v4ERZAzPDzy4oOy7AGXOlJMqJDFBiTiWO1uaE9VJ0+lx2lmY8OHskB/Kq+CVNvyVwBP1Jzq8ifJg9NhY9F08f7eeEUiFdVOVE7Ozac0VlWeaRRx5h1KhRREVFsXbtWgBOnTrFtGnTGD16NKNGjWLnzp2GHG6fjLs0/kVOqZC4ZKQ7f2SXodbIKAc5S6RrnbNvY3qYfes0P3oY720/wS9HT3PDxIFtGNC29//IobKhlcfnhfcrf6gnkiQxO9yTz/bqpnNGZUMrP6edZvF4v/M+jGeFe+LjZM3Hu/OYO2qYVl9XFzqLOc/qmLXsZG2hZIyfsyjoO0CJuRWMD3QZ8OzxdbG+fLonjxd/yWRGuAeWZgPL/RSMm0qtIbWwmmvH+fZ6nq2lGeHD7A1T0HfTY3D6iHaf0ysK5r3Yr1PXr1/PoUOHSE1Npby8nPHjx3f1K7300kt58sknUavVNDYa94YfMQNn5KaHulPZ0EpqofFOc/c1+9YpYpgDwW62bDxs2KK+pbXNfLgrh8tjvLtyyoZiVoQnrWoNO49pv/Dyt8mFtKo0LOkm4FUqJG6ZFMD+3EqOFtdo/bW1bUtGCWFe9vh1U9YgbrgraUU1F1U+zlCU1DaTV9FIXHD/8t/OZKZU8MT8cPIrGvl8b74ORicYUlZJHY2tasZ2U//tXLEBLhw6WU2bCaVhaMOuXbtYvHgxSqUST09PLrnkEg4cOMD48eNZtWoV//73vzly5Aj29v2f3TYEMQNn5C4Z6Y5Cgu2Zpb0mpBpKq0rDe9tOMMbfqc+lyM5l1He2HaesrgV3e8tez9eVN7YcQ62ReWROqFaeLzbAGUdrc35LL9HqTJhGI/Pl/gLGBzr32Jt1Uaw/b2w+xqd78nh5YYzWXlvbqhtbOZBXxV2XBHf7+KThrqzYeoz9OZVdO1SFnv3Z/3TgARy0f65cMtKdFVuPcc1YX5xtLbQ5PMGAUjpy2vrz+yI20JlP9uSRXlxLjF/3O1Z1op8zZfo2bdo0duzYwcaNG1m6dCkPPvggN998s6GH1SMxA2fknGwsGOvvzO9GWk7km+RCiqqb+px967QgxhuNDJvSDDMLd7y0nnVJJ7lhYgD+3fSOHAwzpYIZYR5syyzV6oaCvTkV5JY39Lrc7Ghjzl/G+vD9oWKjyC3syfas9jSAc5dPO43xd8LSTCGWUfspMacCO0szIoY5DPo5npwfTn2Lire2HtPiyARDO5hfhZudJb7OfbcEjA3oKOh7kZUTmTp1KmvXrkWtVlNWVsaOHTuYMGEC+fn5eHp6smzZMm6//XZSUlIMPdReiQDOBCSEeZBWVEtpre5KVQxGq0rDu9uO92v2rdNIT3tCPOzYYKDeqC//kom1uZK/zehfy6z+mhXuSVVjW9fdrzasTszH2cacuaO8ej1v6aRAWlXGXVJkS0YJbnaWxPh2f5dvaaZkXIAze8RGhn5JzK0kNtAZM+XgP8JHetqzaLw/X+zLJ6esXoujEwwppaCKsf5O/bqh9nK0wtfZ+qLryHD11VcTHR1NTEwMM2bM4OWXX8bLy4vt27cTExPDmDFjWLt2Lffff7+hh9orEcCZgITQ9l17242suX3n7NuZXRf6Y0G0NwfyK3VaO607SXmV/JZewp3TgnG10+7y7bSRbpgrJa3tCC2tbea3oyVcG+vXZ4HhEE97poa48fnefKPMZWlVafgjq4yZYR69JtzHB7uScaqWqgbTqHtoKOX1LRwvrWfiAMqH9OTB2SOxNFPw4qZMLYzswmRK5VYq6lvIq2jsV/5bp/GBLiTlV5nU+xys+vr2GxVJknjllVdIS0vjyJEjLFq0CIBbbrmFtLQ0Dh48yM6dOwkKCjLkcPskAjgTED7MHi8HK7YZ0TJq5+zbaD8nLjmjKGt/LIgZhizDz0f0NwsnyzIvbMrEw96S26Zq/4fS3sqc+OFubEnXTgC3LukkKo3M4gn+fZ9M+yzc6dpmfj1qfKUhDuRVUtei6jO3LX54e0CSmCtm4XpzYIj5b2dyt7fk7oQR/JZewj6xfH0WWZZ5aF0qN3+832RqLXauAHTXwL4n4wKcKatroaDSuHdcCucTAZwJkCSJhDB3dh4rp1VlHB8k36Z05r4NbPYNYLi7HeHDHPTaG3VzegnJ+VU8MGtkr7WRhmJ2uAc55Q0cLx3acpRaI7Nm/0mmjHAjyM22X9ckhHoQ4GrDqt15Q3ptXdicXoKlmYIpI3pfZo/2dcLaXCnaavUhMbcSa3Nlr0VaB+K2KUF4O1rx3MZ0NJoLfxamv75OLuTblEJ2Hitn5c5cQw+nX1IKqjBTSET59P97Y3xXY/uLKw/uQiACOBOREOpBfYuKpHzD5yq0qjS88/vgZt86LYgeRkpBNUXVTVoe3flUag0v/ZLJcHdbrovtvTbSUMzUUleGP7JLKapuYsnE/s2+ASgUErfEB5KcX8VhIyo5I8syWzJKmDLCDWuL3peCLcwUxAaKenB92ZdT0VH8WDsf31bmSh6dG0ZaUS3fHSzSynMORVpRDX9bc5Br/reHmkbDlJU5WdnIMz8eJS7YhUsjPXljS/aQb8z0ISW/ikhvhwH1dQ7xsMPByswofrcIAyMCOBMxeYQbFkqFUXRlGMrsW6cF0e3lNn7WQ024NQdOcqKsgUfnhg0p6bsv3k7WRHo7DHkZdfW+AtztLZk9wHIaC2N9sbVQ8smevCG9vjZll9RTWNXU79Ig8cNdyS6pp9yId9QaUnVjK1kldf3uf9pfV8R4E+PryCu/ZtHUqtbqc/eHLMv8kV3GkpX7WPD2LrZllpJ6spqHv0nVe26WWtO+dKqQJF69NoZnrxqFjYWSR79JRW3EM5QqtYbDhTWMGWC5KYVCYlyAs15m4C6GPLuhGOjXRwRwJsLW0oyJwS5sM/BGhs7Zt5ghzL4BBLjaEuXjqPNl1JrGNl7/LYu4YBfm6KG+2KxwT5ILqgZd0qOwqpHfs0pZFOs34BkWBytzFo7zZUPqKcrqjCMA6pyNnBnm0ceZ7SYNb19mFflY3TuQV4Usayf/7UwKhcRTCyI4XdvMyp05Wn3u3rSpNaxPKWTeWzu55eP9nCir5/F5Yex5fAZPXBbO5vQSPtql3+XLlTtz2J9Xyb+viMTX2QYPeyuevjyClIJqVu023qXUzNN1NLX1r4DvuWIDXThWWk91o+42EFlZWVFRUSGCuB7IskxFRQVWVlb9vkYU8jUh00M9eHZDOicrG7utZq8PnbNvz109akgtqKB9Fu6FTZkUVDRqrSbbud7aeozqpjb+uSBiyOPtj9kRnry19Ri/Z5ZybazfgK9f21EK5PoJA78W4JZJgXy6N58vEwu4f1bIoJ5Dm7ZklBDj64iHQ/8+lEZ5O2BnacaeExUsiPbu+4KLTGJOBRZmCp0UXR0f6MLcSC/+t/0E1Y1tTBvpxsQg1z6XvgejvkXFV/sL+GhXLqdqmhnpaccrC6O5crQPFmbtNy63Tg5kf24lL27KZIy/E+MCtBu0difjVC2v/5bN3Egv/jLWp+v4VaN92JB6ild/y2JWuCeB/cxN1aeUgvYZtLH+A//eiO0I+pLzq7pSQbTN19eXwsJCysqMq5qCMbGyssLXt/9pPiKAMyEzwtoDuG1ZpdwcH6j31z9z9m36EGbfOl0W1R7AbThSzN3TtVuXDdqL9n62N4/rx/sR6a2dhO++RHo7MMzRii0ZJQMO4NrU7bXcEkI98HUeXEAb7G7H9FB3vkjMZ/n04V2/DA2htK6ZQyer+fuskf2+xkypYEKQi2hs34PE3ErG+DkNKMdpIP51eQRPfHeE1Yn5fLw7FwszBRMCXZga4sa0ke6EedkP6UaotLaZj3fnsToxn7pmFRODXHj+6lFMH3l+iRlJknj52mgWrNjFPasPsvG+KVov/3OmFpWav689hIO1Of/9S9RZ71OSJJ6/OorZb/zBo98e5qtlcQPuQatrKflVeDpY4uPUdwHfc8X4OWGulEjSYQBnbm5u9GU5TI1YQjUhQW62BLraGCwPbr0Wct/O5Odiw2g/J531Rn1+YzrW5koe0lLLrP6QJIlZ4Z7syC6nuW1guURbM0ooq2vhhgFsXujO0kmBlNW16LVMS3e2ZZYiy+c3r+9LfLArOeUNlBhZ4WpDq2tu42hxDRODh17/rSfeTtZ8cusEUp+ew2d/ncDNcQGU1bXwwqZM5r21kwn/3cqD6w7x/cGiAeUpHi+t49FvUpny0jY+2HGCaSHu/HDPZNbeGc+MMM8egyEHK3Peu2EslY2t/H1dqk53yb7+WzaZp+t4eWEULt20FvNytOKf8yPYn1vJF4nG10M2uaCKsZXUxicAACAASURBVP7Og/pstjJXEunteNEV9DV1YgbOxCSEefBlYgFNrWqdLG30pFWl4Z1t2pt967QgehjPbcwgt7yh3yUz+mN7Vinbssp44rIw3HR4196dWRGefL4vnz0nypkR1v/gZXViAd6OVkwP7V++WE+mhbgT7G7Lqj15XDXGp+8LdGRLRik+TtaEDxtYQ+jOenB7T1QYdPzGJim/Co2M1jcwdMfKXMm0ke5M6/hZP13TzM5jZew4Vs62zFLWp7TvVo30dmBqiDvTRroxLsAZS7M/P5NkWeZAXhXv/3GCrZmlWJkrWDTej9unBhHg2v+f9VE+jjx9eQRPfpfGe9uPc+8M7acGJOZU8MHOHBZP8O/1Z/baWF82HDnFi5sySQj1MFgqy7nK6lo4WdnEzXGBg36O8YHOfLo3nxaV+qx/R8F4iRk4E5MQ6kGLSqP3JO/1KYUUVjXxwAC7LvRlfsdu1A2p2tvM0KbW8NzGDAJdbVg6Sf9T9nHBLthaKNmc3v+Z0rzyBnYeK2fxBH+UQ1yaUSgklk4KJPVkNQcLDFPbqblNzc5jZcwM9xjw90v4MAccrMxEPbhzJOZUYq6U+tWkXNu8HK24NtaPtxePIfmp2fx07xQeuTQUO0szPtyZw5KViYx+ZjO3rtrPqt25/HCoiKvf28N17+8lpaCK+2eGsPsfM3j2qlEDCt46LZngz5WjvXl9czZ7TpRr9b3VNbfx0Nep+LvY8NT88F7PlSSJF/4ShQQ8tv6w0STkd+W/BQw+N3JcgAutKg1pRTXaGpagYyKAMzETg12wNlfyux6XUbtm33wdmR6qvdk3gGGO1sQGOLNBi8uoq/flc7y0nifnRxgkB8zSTMkloe5szSjp95LPmv0FKBUSi8YPbvPCuf4y1hd7SzODlRTZc6Kc5jbNgJdPAZQKiYnBrqIe3DkScyvaix3rcea9OwqFRJSvI/ckjGDtnfEcenoOH94cy7WxvuSWN/DMT+nc/9UhKhtaefbKSPY8NpO/zx45pPw1SZL479VRBLnZct+aQ5TWaW95/T8/pVNc3cTr143G1rLvRSkfJ2sevyyc3ccrjKb/cEpBFeZKaUi5vrGB7TcGoqCv6RABnImxNFMyeYQb27JK9Xb31zX7NmukTnZyLogeRlZJHcdK6ob8XFUNrbyx5RhTRrgxK3xoS5FDMSvck9K6Fo704262RaVmXdJJ5kR49nu3Zl/sLM24NtaPjYdPGSSXbHN6KXYdpW8GY9JwVwoqG/VS6NkUNLaqOFJYo5fl04GyszRjVoQn/7lyFNsfSWDHIwmsWRbHtoenc1N8oNYCTltLM967YRz1LW3ct+agVmqy/Xb0NF8nF7J8+vABtZ9aMsGf+GBXnt+YQbERfI8ezK8m0ttxSJtb3OwsCXKz5YAI4Polr7yBl37JpLbZMMWmQQRwJmlGmAeFVU16qQzeptbd7Funy6KGIUloZRbuzS3Z1DXrr2xIT2aEeaBUSGzuR1HfX9JOU9XYxg0TA7Q6hlsmBaCWZVbv02/CtUYjszWjhGkj3QadS3NmHpwAKfnVqDSy1uu/6YK/qw3xw12HnArQnVAve567Kop9OZW8uSV7SM9VVtfC4+uPEOntwP0z+79TGtpnIV+6Jhq1Rubx9UcMupTaptaQWlitlaX12ABnkvMrjWZp2Ji9+lsWn+zOG/BmNW0SAZwJ6gyk9NHcXtezbwAeDlZMDHJhw+HiIX1wZJfU8UViATdMDCDUa2CJ89rmZGNBbIBzv9pqrd5XQKCrDZOGa3d3YYCrLTPDPFidWECLSn8fMmnFNZTWtQxq+bTTSA97XGwttJ7vpCsnKxt1WqU/MbcCpUIiNtD4AzhdWzjOl0Wxfrz9+3G2D/IzUJZlHl9/mLoWFW8uGj2oVAt/VxsenRvKH9llfJNcOKhxaEN6cS0tKs2AZhB7EhvoTFVjGyfKGrQwsgvX4cJqNhw+xbKpQXjYa2fVZDBEAGeCvJ2sCfOy13keXJtaw9u/Hydah7NvneZHe3OirIHM04NbRpVlmWc3pGNroeTvswd2N60rsyM8yTxdx8nKxh7PyS6pY39eJUsm+uukrtTSSUFUNLTyU6r+SopsSS9BIbVvuBkshUIiLri9HpyxzwZsyyxl2ivbeH5jhs5eIzG3sqvIsQDPXBlJmJc9f197aFBLmOuSTrIlo5R/zA0jxHPwN3u3xAcyPtCZZzekG6zsjTY2MHTqvEFIFn1Re/XSL5m42FqwbFqwQcchAjgTlRDmQVJelU7X3/+cfdPuztPuzBvlhUJi0DXhfs8sZeexch6YNbLbGk6G0J/m9l8mFmChVLBwnHY2L5xr8ghXQjzsWLU7V2+B0JaMUmIDXHAe4r9DfLArxTXNFPQSABvaibJ67ltzEKUk8dnePHLKtJ/W0Nym5tDJap3WfzM1VuZK3rthLK0qDX9bc5A2tabf1xZUNPKfn9KZNNyVWycFDmkcCoXEywtjaFFpePK7NIPcbKQUVDPM0YphjgMv4HuuYDdbXGwtRB5cL3YeK2P38QruTRiBvZW5QceiswBOkqSPJUkqlSQp7YxjLpIkbZYk6VjH/507jkuSJK2QJOm4JEmHJUkae8Y1t3Scf0ySpFvOOD5OkqQjHdeskAyZ8GQAM8I8UGlkdh3TzRJTY6uKFVvbZ9+GMpPSX252lkwa7jaoZdRWVXvZkGB3W26K124e2VAEudkywsOuxwCusVXFtymFzIvy0lnQKUkSSycHcrS4luR83X8oF1U3kX6qllkRQ/+eMfY8uNrmNpZ9loS5mYJvlk/C0kzBi5sytf46h05W06rSMEEsn54l2N2OF6+JJjm/ild+zerXNWqNzIPrDqGQJF65NkYrs95BbrY8PCeULRkl/KjFckj9lZJfpbXSMpLU3theH58VpkijkXlxUya+ztbcEDe0guvaoMsZuE+AueccewzYKstyCLC14+8A84CQjv/uAP4H7QEf8DQwEZgAPN0Z9HWcs+yM6859rQvaGD8nHK3NddaV4aVNmRRVN/HEZeF62wywIHoYeRWNHC2uHdB1n+3NI7e8gX/OjxhwA3hdmx3hSWJOJTVN58+Ubkg9RV2zSuubF8519RgfHKzMWLU7T6evA+3dJACttOMZ7m6Hu72lUZYTUWtkHvjqEAUVjbx3w1hG+zmxfPpwfksv0XqNxsScSiQJxpvABgZ9uzzGm5vjA/hgRw6/HT3d5/kf7MghKb+K/1wVOaiWUz3565QgRvs58fSPRymr63+HiqEqrW2mqLqJMYPof9qT2ABncssb9Po+TMWGI6c4WlzLQ3NGGkWxY539tpNleQdw7kL6lcCnHX/+FLjqjOOfye32AU6SJA0DLgU2y7JcKctyFbAZmNvxmIMsy/vk9umaz854rouCmVLBtJHubMsq03p7md3Hy/l0bz63Tg4kTo/LNpdGemGmkPjpcP/vYivqW3hr6zEuGelOQpjhyob0ZFa4JyqN3G2y9erEfEI87BgfqNvCrDYWZiye4M8vR0/rvOTBloxSgt1sGe5uN+TnkiSJuGBX9hphHtzrm7P4PbOUpy+P6PoZuX1qMN6OVjy3MV2rP5P78yoI93LA0dqwyzXG6sn54UT5OPLQ16kUVPS83H60uIbXN2dxWZQXV43WbocPpULilYXRNLaoefrHtL4v0JI/89+09xnSWQ9OzMKdrVWl4dVfswgf5sCVMcbRIUbf0xWesix3JjmdBjpv032AMysiFnYc6+14YTfHLyoJoe6U17cMeMaqN7XNbTz6zWGC3Wx59NIwrT1vfzjbWjB5hBsbD5/q9y/s1zZn09iq5p8Leq+gbiij/Zxws7NgS8bZAdyRwhpSC2u4YaK/XmY4b4wLQJZlvtBhSZG65jb2nihnphbr700a7kppXQs55cazK27D4WLe3XaC68f7cWPcn7OnVuZKHpkbSlpRLd8fKtLKa7WqNCTnVw26nt7FwNKsPR8O4J4vU7rdcd3cpubBtak42Vjw/FVROvmZC/G05/5ZIfx85LTe+hCnFFRjYaYg0ttBa885yscRCzOF2Mhwjq8OFFBQ2cijc0N1suFsMAy23tQxc6aX22pJku6QJClJkqSksrIyfbykXlwy0h1JQqu7UZ/bkM6pmiZevS7GIBXfF0QPo7CqidTCvgvgZpyq5av9BdwUF8AID8OWDemJUiExI8yD7VmltKr+TLT+cn8+VuYKrh7rq5dx+LnYMDvCkzX7C3RWt2jnsXLa1PKQyoecK75jdmuPkeTBpRfX8sjXhxkX4MwzV0aeFwhcGeNDtK8jr/yaRVPr0L/OR4qqaW7TGGUBX2Pi52LDa9fGcKSoptvdwK9vziarpI6XF0YPeXNNb+6cFkyUjyP//D6NyoZWnb1Op+T8KqJ8HLW6nGdppiTG11FsZDhDfYuKFVuPERfsotVe4EOl7wCupGP5k47/d0YeRcCZ2/B8O471dty3m+PdkmX5A1mWY2VZjnV3N54v/lC52lkS4+uktXpwWzNKWJdUyF2XDDdIv0WAOZFemCulPnujyrLMf35Kx8HanAdmab+5tTbNCvekrlnFgbz2O9q65jZ+OFTMFTHeel0Wu3VyEFWNbfygpdmhc23JKMHJxlwr9ag6BbjaMMzRin1GEMBVNrSy7LMkHK3N+d+NY7v9palQSDx5WTinapr5aFfOkF9zX07798yEILEDtS9zIr1YNjWIz/bm89MZnx/7cipYuTOHGyb663xDlplSwcsLo6ltbuOZn47q9LVaVRqOFNUwVov5b51iA104WlyjlZuQC8GHO3Mor2/lH3PDDFog/lz6DuB+BDp3kt4C/HDG8Zs7dqPGATUdS62/AnMkSXLu2LwwB/i147FaSZLiOnaf3nzGc11UEkI9SC2spqJ+aAmnVQ2tPLb+CGFe7csAhuJobc60EHc2HjnVax7Rr0dL2JtTwYOzR+JkYxxlQ3oyJcQNSzNFV1eG7w8V09iq1vnmhXNNDHIhzMueVbvztJ5TptbIbMssJSHUAzMtbiSRJIn4YFf25Rg2D65NreHu1cmU1bfw/k3jei3eOTHYlTkRnvxv+4kh9+zcn1vJSE87oymNY+wenRvGWH8nHvv2MDll9e2N6telEuBiw5N9NKrXlvBhDtyTMIIfDhX3qxPLYB0trqFVpdHJzXZsgDNtapnUwmqtP7epKa9vYeWOHOaN8mKMgSY2eqLLMiJrgL1AqCRJhZIk3Qa8CMyWJOkYMKvj7wA/AznAcWAlcDeALMuVwLPAgY7//tNxjI5zPuy45gSwSVfvxZjNCPNAluGP7KEtDf/rx6NUNbTy2nUxBt9dsyBmGKdqmjl4svsp/BaVmv/+nMFITzuWTDD8Vu6+2FiYMTXEjc3pJcgdra1G+TgQ7Tv4xtODIUkSt04OJPN0HYm52s1vSSmooqqxTavLp53ihrtS0dBKdonuW8f15PmNGezLqeSFq6OI8et7xuOxeWG0qDS8sfnYoF9TpdaQlFfJRDH71m/mSgXvLBmLhZmCu1en8NT3aZyqaeL1RaOxsdBfEeS7p48gzMueJ787Qk2jbmp1phS0B1fa3MDQqXMWXWxkgHd+P06zSsPDl4Yaeijn0eUu1MWyLA+TZdlclmVfWZY/kmW5QpblmbIsh8iyPKszGOvYfXqPLMvDZVmOkmU56Yzn+ViW5REd/60643iSLMujOq65Vza2bWp6EuntgJud5ZDy4DYcLuan1GLunxlCpLd+g4ruzAr3xMJM0WP3gI935VFQ2cg/F0RodbZHl2aFe1JU3cSX+wvIPF3HDRMDDDIVf+VoH5xtzPm/P05otfXTlvQSzJUS00a6ae05O3Xmwe01UFutdQdO8smePG6bEsQ14/qXsxjsbseNcQGsPVBA1iC7ixwtrqWhVW0S/U+NibeTNW8sGk3m6Tp+OFTMPQkj9J4SYmGm4NVrY6hoaOU/G9J18hopBVX4OFnj6aD9Vk5ONhaEeNh1pX1crAoqGlmdmM91sX5a2Vmvbabx20/okUIhkRDqzo7sMlQDqEbeqbSumX9+n0aMryPLpw/XwQgHzt7KnIRQd34+cuq8IKO0rpl3tx1nVrgHU0NMJ59xRsfOzGc3pGNnacYVMd4GGYeVuZI7LxnO9qwylq7ar7VE680ZJcQFu+qkMrmfiw2+ztYGqQeXUlDFU9+nMWWEG4/PG9iu7PtnhmBnacbzPw+uxVZibvv7FTtQB256qAdPzQ9nbqQX9800TErIKB9H7rokmG9TCnXSt/pgfpVW67+dKzbQheT8Kq2WxDlV08Stq/bzwqYMjhbXGF15oHO9tjkLpUIy2jxrEcBdABLCPKhtVnVNqfeXLMs8sT6NhlY1r10XY1SzWfOjvSmtaznvDvC1X7NpUal5cn6EgUY2OB72Voz2c6K5TcPVY3ywNWBPy7suGc6Lf4kiMbeSBSt2cujk0PJccsrqySlr0MnyaadJw13Zl1Op9ZqHvSmpbeauz5PxcrTinSVjBvzz4Wxrwd9mhLAju2xQKQ77cysJdrM1aLNsU3b71GD+76ZxBi3ufd/MEEZ62vHI16mcrtFer9RTNU0U1zRrdcPQuWIDnKlrVpFdOrgZ5HPVNLWx9OMD7DlRwYc7c5m/YhezXv+Dt7YcI9eIygR1Siuq4YdDxfx1cpBOZjm1wXh+YwuDNiXEDTOFNOC7vG9TitiSUcKjl4YaXRmOmWEeWJkr2HBGUd+0ohrWJZ9k6aRAgtxsDTi6wbk00guAJRMNn7d3/QR/vr1rEpIkcd3/7eWLffmDvhve2lHjTpv1384VP9yVmqY20k9pr+Zhb5rb1NzxeTL1LSpW3hw76I0yN08KwN/Fhv9uzBjQkrVaI7M/t1LMvpk4SzMl7y4ZS2OrmuWrk88qJTQUKfkd+W86XBoe39G6LUkL5URaVGru/DyJnPJ6Pl46ngNPzuK5q0bhamfJG1uySXh1O5e/vYuVO3I4VaPbYuP99fKvWTjZmHPnJcaxMtUdEcBdAByszIkNdB5QW63i6iae+fEoE4Jc+OvkIB2ObnBsLc2YGebJL2mnUak1XWVDnG0suHeGcU5n9+WvUwL58d7JhA/TXtHNoYjydWTD36YQP9yVp75P46GvUwdVNmBLRglhXvb4OtvoYJTt4oPbc+u03aaqO7Is89T3aaSerOb162II9Rr8zY2lmZLH5oWRVVLHuqSTfV/QIfN0LbXNKpH/dgEI8bTnlYUxHCyo5lkt5cOlFFRhaabQ6WeJn4s17vaWJA0xD06jkXloXSr7cip5ZWEMk0e44WJrwY1xAay7M569j8/gycvadwg//3MGk178neveb7+p1Ectve7sOV7Ojuwy7pk+wqg7oIgA7gIxI8yDzNN1/WqVJMsyj35zGLUs8+pC7TR01oUF0cMor28lMbeSn4+cZn9eJQ/NGWnUP1C9sTRTEu2ru5yVwXC2tWDV0vE8MCuE7w4WcfV7u8kbwHJGVUMrSflVzI7Q3fIpgJejFUFutnppbP/Jnjy+SS7kvpkhzB01bMjPN2+UF7EBzrz2Wzb1Lap+XZPYUf9N7EC9MMyPHsYd04L5fF8+3yYX9n1BH1IKqoj2be+YoCuSJDE+0JmkIe5EfWFTBhsOn+KxeWFcNeb8hknDHK1ZNi2Yn/42hd8fuoQHZo6kor6Fp75PY8LzW1i6aj/rUwr7/bMzVLIs8+IvmXg7WnFTvH5LPQ2UCOAuEJ0FKvuzjPpFYgG7jpfz5Pxw/F11N2syVNNDPbCxUPJtciH//TmDMC97rh9v+OXHC41CIfHArJGsWjqe07XNXP7Orn7Xr9qeXYpaI2uleX1f4oJd2Z9bOajNOv21+3g5z23MYHaEJw9oKfldkiSenB9OeX0L7/9xol/X7M+txM/FGm8tNlwXDOvRS0OJD3blie+OkFbUd6eZnrSo1BwtqtXLztpxAS4UVjUNOn/vo125rNyZy9JJgdw5LbjP84Pd7bh/VghbHryEjfdN4bapQRwrqefBdamMe3Yzd69O5pe0UzrrJgPw85HTHC6s4cE5oViZG75hfW9EAHeBGOFhh6+zNdsye0+Wzq9o4L8bM5ga4mb0NdSsLZTMCvdk/cEiiqqb+NflESiNdLbwQjA91IOf7p1CoKstyz5L4uVfMvsMlrZklOJub0m0j+7Lz8QPd6WuRaXV3r9nOlnZyD1fphDsZsvr12l3ZnqMvzOXx3izcmdOn7PksiyzX9R/u+CYKRW8vWQMLrYW3PVFMtWNg1seTCuqpVWt0UtR2diOTRJJg+iLuuFwMc9tTGdupBf/XBAxoLJJkiQR6e3I4/PC2floAt/cFc+i8X7sz63kri9SGP/8Fr5MLND6LtY2tYZXf8si1NOeq7uZLTQ2IoC7QEiSREKoB7uPl/d4d6LWyDz8dSpmSomXF0YbVUuQniyIbl/CujTSk0nDtV9jTDibn4sNX98Vz+IJ/ry3/QQ3f7yf8h66fLSqNPyRVcbMMA+9LMPHdST066KcSEOLimWfJaHRyKy8OVYn5VAevTQUjQyv/prV63nHSuupbGgV+W8XIDc7S967YSyltS3c99WhQdViPFjQvqQ5NkD36RgR3g5YmysHvJFhX04FD65NZZy/M29eP3pIN94KhURsoAv/uXIU+x6fyee3TSDKx5EnvjvCss+Sevx8Goy1B06SW97Ao3NDTWKyQARwF5AZYR40tanZ30OV/Y935XIgr4pnrohkmKNpLM0khHnwwKwQnrlilKGHctGwMlfywl+ieHlhNMn5VSxYsYuUgvM/wPfnVlLfotJp+ZAzedhbEeJhp/U8OFluv7HJLqnj7SVjCdTRDmc/FxtunRzI+oNFHCnseQmts0tGnJiBuyCN8Xfm6Ssi2JFdxptbsgd8fXJ+FX4u1nopL2OuVDDaz2lAM3BZp+tY9lkSfi7WfHhLrFaXIc2UCqaGuPPFbRP554IIdhwrZ+6bO9iaMfSWZY2tKt7aeozxgc7MCNNtz1xtEQHcBSQu2BVLM0W3XRmOldTxym9ZzInwNImp4U7mSgUPzBqJl6Nx1uG5kF0X68e3yydhbiax6P29fLrn7B6qWzJKsDJXMHmE/mZG44e7ciCvkjYt5sG9/ftxNqWd5rF5YVwyUrfFoe9JGIGLrQXPbUzvcfknMaeCYY5W+LmYxk2WMHBLJvhz7Thf3v79+ID6pcqyTEpBlV47S4wPdCa9uLZfmwhO1TSxdNV+rM2VfPrXCTrrU61QSNw2JYif7p2Cm50lt32axBPfHaGxdfAbHT7elUtZXQuPzTOuhvW9EQHcBcTaQsmk4a5sP2cjQ5taw0Nfp7ZXhb86ymS+OQXDG+XjyIZ7pzI1xJ2nfzzKA2sP0diqQpZlNqeXMGWEG9YW+kv0jQ92pbFVzWEtNNluU2v4949HeX1zNleN9mbZ1L6TrIfKwcqcB2aFkJhb2e0vblmWScytZGKQi/g5vYBJksSzV41ilI8DD6491O9CtsU1zZTUtug1gBsX6IJGhkN9FIrvLNRb16xi1a3jdVpWqFOolz0/3DuZO6YFs2Z/AfNX7CJ1EIXJKxta+b8/cpgd4cm4ANNJXRAB3AUmIcyDvIpGcsr+bPz9v+0nOFxYw3NXjcLd3tKAoxNMkaONOR/eHMvDc0byY2oxV727m1/STlNU3aS35dNOE7v6og5tGbWivoWbPkrkkz153D4liFevjdFbwLR4gj/D3W15cVPmeTOJueUNlNW1MEEsn17wrMyV/O+GcSiVEnd9ntyv2aOUjpIe+gzgxvo7oZB638jQWaj3RFk9/3fjOL321LY0U/LEZeGsvn0izW1qrvnfHt7eemxAu9Xf3XacxlYVjxphw/reiADuAvNnOZH23ahpRTWs2HqMK0d7c1nU0GtaCRcnhULi3hkhfPbXCZTVtbB8dQqA3nNFXGwtCPOyH9JGhrSiGq54ZzcHC6p5Y1EMTy2I0GsbOXOlgicuCyenvIHV+/LPeqwzf1V0YLg4+LnYsOL6MWSX1vGPb4/0uasypaAKK3MFYcP01znH3sqcUC+HHjcyaDQyD399uL1Q77XRTAkxzGazScPd+OX+acyLGsZrm7O57v295Ff0PbNZWNXI53vzuXacHyGextWRqC8igLvA+LnYMMLDjm2ZpbSo1Dy47hAuthY8c0WkoYcmXACmhriz4b6pXYm+HgboERg/3JWkvCpaVAOvBfXDoSIW/t8eNLLMN3dN4uoxvjoYYd9mhHkwabgrb209Rk1TW9fxxNxK3OwsCTbBVnHC4Ewb6c7Dc0L5KbWYj3fn9XpuSkE10b5Oeu/vOj7QmYMFVd3Oar2wKYOfUov5x9wwg/08dXK0MeftxWN46/rRHCut57K3drIu6WSvgfHrm7ORJHhgtul1+BEB3AVoRpgHibkVPL8xg+ySel66JlpnyaTCxcfHyZqv75rER7fEGuT144NdaVFp+szJOZNaI/PCzxnc/9Uhon2c+PHeKUT56m+Z51ydxX2rm9p4d9txoCP/LaeCicEi/+1ic/f04cyJ8OS/P2eQ2MPscnObmvTiGp02sO/JuABnGlrVZJ4+u7F9Z6HeW+IDuOsS3eeQ9teVo3345YFpjPJx5NFvDrP8i5Ru23JlnKrlu4NFLJ0caDKVGc4kArgL0PRQd9rUMp/tzef68X4kmMiWaMG0GCrImBjkiiT1vx5cdWMrS1ft5/0dOdwcH8AXt080ilzQSG9Hrhnryye78yioaKSwqonimmYmivpvFx1JknjtuhgCXGy458uD3XY+OFJUQ5ta1mv+W6c/G9v/mQe38fApntuYzqWRnvzr8kiju+nwcbLmy2VxPD4vjK2ZJVz65g7+yD670P3Lv2Rib2nG3ZeMMNAoh0YEcBeg8YEu2Fua4eNkzZPzww09HEHQKkcbc0Z5O/ZrI0Pm6VqueGc3+3IqePEvUfznylE67R85UA/PaS8Y+tIvmV31L3PIOgAAIABJREFU30QHhouTvZU57980jsZWFctXJ9OqOnu5snMDwxh//fdT9nayxtvRigMdY9iXU8Hf1x5inL8zb10/xmiL3ioVEndeMpzv75mMk7U5t3y8n3//eJTmNjX7cirYllXG3QkjcLQxzf7aZoYegKB95koFH94Si6udpU4qyguCocUPd+WT3Xk0t6l7LBS66ciprvI5X90Rb5Clp754OVqxbFowK7YeI6+iAWcbc0I87Aw9LMFAQjzteWVhDPd8mcKzG9J59qo/C5inFFQR4GqDm51hZo9jA11IzK0gu6SOO3RUqFdXIr0d+elvU3jpl0xW7c5j1/FyzBQSXg5WLJ0UaOjhDZrx3IoKWjUx2JUR4heBcIGKD3alVa0hOf/8nXEajcxrv2WxfHUKIz3t+elvU4wyeOt057Rg3O0tOVpcy4QgF720JROM1/zoYSybGsTn+/L5NrkQ6CzgW22Q5dNOsYHOlNS2sGTlPqx0XKhXF6zMlTx9eSSf/XUCtU1tZJ6u4++zQ0wiAO2JCOAEQTA544NcUCqk85ZRa5vbWPZZEm//fpzrYn1Ze2ccngbYKTsQtpZmPDKnvf6UqP8mAPxjbhhxwS488d0R0opqKKxqoqyuhbEGWD7t1HkT1Nym0VuhXl2YNtKdXx+YxjtLxrBwnJ+hhzMkYglVEASTY2dpRpSP41kbGY6X1nPH50kUVDTy7JWR3BgXYHSJ1T25ZpwvSoXEpaO8DD0UwQiYKRW8s2QsC1bsYvnq5K4uIWMNOJMc5uXAkon+XBHjrddCvbrgbGvBgmhvQw9jyMQMnCAIJil+uCupJ6tpaFGxNaOEq9/dTU1jG1/cPpGb4gNNJniD9mTra8b5Ymcp7qmFdm52lrx341hO1zTzn5/SsbFQEmrAQrNKhcR/r44iLljMEhsLEcAJgmCS4oNdUWlkHlx3iNs/SyLAzYYf/zZF/IIRLhhj/Z359xWRqDQyMb5Oeu0YIhg/cbsnCIJJig10xlwp8evREq4e48MLf4ky6YRkQejOkgn+NLSoCPNyMPRQBCMjAjhBEEySjYUZj14ahrWFkhsm+pvUkqkg9JckSdwxbbihhyEYIRHACYJgspZNM572PYIgCPokFtQFQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjAjgBEEQBEEQTIwI4ARBEARBEEyMCOAEQRAEQRBMjEECOEmS/i5J0lFJktIkSVojSZKVJElBkiQlSpJ0XJKktZIkWXSca9nx9+Mdjwee8TyPdxzPkiTpUkO8F0EQBEEQBH3TewAnSZIPcB8QK8vyKEAJXA+8BLwhy/IIoAq4reOS24CqjuNvdJyHJEkRHddFAnOB9yRJUurzvQiCIAiCIBiCoZZQzQBrSZLMABvgFDAD+Kbj8U+Bqzr+fGXH3+l4fKYkSVLH8a9kWW6RZTkXOA5M0NP4BUEQBEEQDEbvAZwsy0XAq0AB7YFbDZAMVMuyrOo4rRDw6fizD3Cy41pVx/muZx7v5pqzSJJ0hyRJSZIkJZWVlWn3DQmCIAiCIOiZIZZQnWmfPQsCvAFb2pdAdUaW5Q9kWY6VZTnW3d1dly8lCIIgCIKgc4ZYQp0F5MqyXCbLchuwHpgMOHUsqQL4AkUdfy4C/AA6HncEKs483s01wv+3d99xUtX3/sdf36X33lkElrLYFQR7wYKCxhY1xiRqjMZEExPTTH73XtNzb5JrqilGE43mxpqiWGk2qigCImUXcJcOAiJVyn5/f3zOwLpumd09Z845s+/n4zGP3Z2Z/cxnYXb2M9/y+YqIiEjeiqOAKwdOdM61DdaynQ28DUwDPh7c51rg38HnTwZfE9w+1Xvvg+s/EexSHQQMBebk6GcQERERiU3zuu8SLu/9bOfc48AbwH5gHnAP8DTwsHPuh8F19wXfch/woHOuFNiC7TzFe7/IOfcoVvztB27x3h/I6Q8jIiIiEgNng1lNx6hRo/zcuXPjTkNERESkTs651733o6per5MYRERERFJGBZyIiIhIyqiAExEREUkZFXAiIiIiKaMCTkRERCRlVMCJiIiIpIwKOBEREZGUUQEnIiIikjIq4ERERERSRgWciIiISMqogBMRERFJmToLOOfcKc65dsHnn3LO3eWcOyz61ERERESkOtmMwP0e2OWcOwb4GrAc+GukWYmIiIhIjbIp4PZ77z1wMfBb7/3dQIdo0xIRERGRmjTP4j7bnXPfBj4FnO6cKwBaRJuWiIiIiNQkmxG4q4APgBu89+uB/sDPIs1KRERERGpU6wicc64Z8Hfv/VmZ67z35WgNnIiIiEhsah2B894fACqcc51ylI+IiIiI1CGbNXA7gIXOuUnAzsyV3vsvR5aViIiIiNQomwLuH8FFRERERBKgzgLOe/+Ac64lMCy4aqn3fl+0aYmIiIhITeos4JxzZwIPAO8ADih0zl3rvX852tREREREpDrZTKH+L3Ce934pgHNuGPB3YGSUiYmIiIhI9bLpA9ciU7wBeO+XoUa+IiIiIrHJZgRurnPuXuCh4OtrgLnRpSQiIiIitcmmgPsCcAuQaRvyCnB3ZBmJiIiISK2yKeBu9t7fBdyVucI5dxvwq8iyEhEREZEaZbMG7tpqrrsu5DxEREREJEs1jsA5564GPgkMcs49WemmDsCWqBMTERERkerVNoU6A1gHdMdaiWRsBxZEmZSIiIiI1KzGAs57XwaUASflLh0RERERqUttU6iveu9Pdc5tB3zlmwDvve8YeXYiIiIi8hG1jcCdGnzskLt0RERERKQude5Cdc4VOedaBZ+f6Zz7snOuc/SpiYiIiEh1smkj8gRwwDk3BLgHKAT+L9KsRERERKRG2RRwFd77/cClwG+8998A+kSbloiIiIjUJJsCbl/QE+5aYGJwnQ6zFxEREYlJNgXc9VgrkR9571c65wYBD0abloiIiIjUpM6zUL33b3PoIHu89yuB/4kyKRERERGpWW194B713l/pnFtI9X3gjo48OxERERH5iNpG4G4LPt4PzAJWR56NiIiIiNSpxjVw3vt1waftsfYhDwEXAXuCY7ZEREREJAZ1bmLw3n/Pe38EcAvWPuQl59zkyDMTERERkWplsws1YyOwHtgM9IwmHRERERGpSzZHaX3ROfciMAXoBtyoDQwiIiIi8amzjQh2dNZXvPdvRp2MiIiIiNQtmz5w385FIiIiIiKSnfqsgRMRERGRBFABJyIiIpIyKuBEREREUkYFnIiIiEjKqIATERERSRkVcCIiIiIpE0sB55zr7Jx73Dm3xDm32Dl3knOuq3NuknOuJPjYJbivc8792jlX6pxb4Jw7vlKca4P7lzjnro3jZxERERHJtbhG4H4FPOe9LwaOARYDdwBTvPdDsVMf7gjuewEwNLjcBPwewDnXFbgTGAOMBu7MFH0iIiIi+SznBZxzrhNwOnAfgPd+r/f+PeBi4IHgbg8AlwSfXwz81ZtZQGfnXB9gHDDJe7/Fe78VmAScn8MfRURERCQWcYzADQI2AX9xzs1zzt3rnGsH9PLerwvusx7oFXzeD1hV6ftXB9fVdL2IiIhIXoujgGsOHA/83nt/HLCTQ9OlAHjvPeDDekDn3E3OubnOubmbNm0KK6yIiIhILOIo4FYDq733s4OvH8cKug3B1CjBx43B7WuAwkrf3z+4rqbrP8J7f4/3fpT3flSPHj1C+0FERERE4pDzAs57vx5Y5ZwbHlx1NvA28CSQ2Ul6LfDv4PMngc8Eu1FPBLYFU63PA+c557oEmxfOC64TERERyWvNY3rcLwF/c861BFYA12PF5KPOuRuAMuDK4L7PAOOBUmBXcF+891uccz8AXgvu933v/Zbc/QgiIiIi8XC23KzpGDVqlJ87d27caYiIiIjUyTn3uvd+VNXrdRKDiIiISMqogBMRERFJGRVwIiIiIimjAk5EREQkZVTAiYiIiKSMCjgRERGRlFEBJyIiIpIyKuBEREREUkYFnIiIiEjKqIATERERSRkVcCIiIiIpowJOREREJGVUwImIiIikjAo4ERERkZRRASciIiKSMirgRERERFJGBZyIiIhIyqiAExEREUkZFXAiIiIiKaMCTkRERCRlVMCJiIiIpIwKOBEREZGUUQEnIiIikjIq4ERERERSRgWciIiISMqogBMRERFJGRVwIiIiIimjAk5EREQkZVTASbRWvw57d8WdhYiISF5RASfR2b4e7jsHZvw67kxERCQOFRWwZSUseRpe+hk8+SVY83rcWeWF5nEnIHmsfBb4CiidDGfeEXc2IiISpV1bYOPbsOFt2LgINiyCjYth745D92nRFuY/DOf/BEbdAM7Fl2/KqYCT6KyabR/XvA6734M2nePNR0SahooD8PLPYddmGP/TuLPJP/v3wrvLgmLtLSvYNiyC7WsP3adNF+h5BBx7DfQ63D7vWQwH9sE/boKnvwar5sCFv4CW7eL7WVJMBZxEp3wWtO4Me96DlS/D4R+LOyMRyXc7NsETn7XXHICTb4XOA+LNKR9UVMBz34J3XrXirWK/XV/QAnoUw6DToNcRVqj1Ohw69Kl5dO2Tj8IrP4dpP4Z1C+CqB6H70Nz9LHlCBZxEY+8uWL8ATvwivH4/LJ+qAk5EolU+Gx67DnZvgTO/DS/+BJY+C2M+H3dm6bd+Psy5BwacBCd/2Yq1XkdAtyHQrEX9YhUUwBnfhP6j4PEb4J6z4OLfwhGXRJN7ntImBonGmtftHdrAU2HQ6bB8Cngfd1YNt3k5/O0KmwoWkWTxHmb9Ae4fD81bwg2TbN1t9+GwZGLc2eWHksmAg6segnPuhKM+Dj1H1L94q6xoLNz8ik2tPnYtPPcdm2KVrKiAk2ismmUf+58Ag8+E98phy4o4M2qct/4BJS/AypfizkREKvtgBzz+WZveG3oe3PQS9DnabiseD+9Mh91b480xH5ROgr7HQbvu4cbt1B+uewZGfx5m3Q33Xwjvr637+0QFnESkfLati2jb1d5lgU2jplX5DPu4ak68eYjIIRuXwJ/Ogrf/Bed8F67624c3Sw2fAP4AlEyKK8P8sGsLrH4Nhp4bTfzmLW2zyeX3wfqF8MfTYYXeLNdFBZyEr6ICVs+BwjH2ddfB0PkwWD4t3rwa6sD+Q4VbZmetiMRr4ePwp7E2uvaZf8OpX7W1VZX1Gwnte1kPMmm4FdOsJdSQc6J9nKM+DjdNgzZd4cFL4JX/tb8nUi0VcBK+TUtgzzYYcKJ97ZyNwq18OZ3rGzYstD5GnQ+DtW/Cvj1xZyTSdO3fC898E564AXofCZ9/2dbZVqegAIZfYL0o93+Q2zzzSclkawvSb2T0j9VjONw4FY64FKZ8Hx6+WlPgNVABJ+HLrH/LjMCBFXB7t8PqufHk1BhlM+3jyV+Cin2w7s148xFpqratsY0Kc/4IJ94C1z0NHfvW/j3DJ9gbsExbEamfiqAZe9FYKGiWm8ds1d6mUy/4GZROgT+eYW+e5UNUwEn4ymdDux42dZox6HRwBelcB1c+w0bfDg+2uGsaVST3VrwIfzzNOvtfcT+c/+PsdkAOOh1atNM0akOtXwA7N8KQiNa/1cQ5GHMTXP+sdTS47zx4/YF0dzMImQo4Cd+qWTb6VrmJY5vO0G9U+go4720E7rCToX0P6DJIGxlEcqmiAl7+GTx4qb0xvHGaTa9lq0VrGHqO9YPTeqr6Kw02gAw5O57HLzzBpskPOxme+jL8+xbrMyoq4BJp01JY+Uo614tt3wBb3zm0/q2yorGw9g3b0ZQWm0th17v24gFWmK6ao3eBIrmweyv8/RMw9YdwxGXwuSnQY1j94wyfADvW2+uP1E/JZOhzLLTvGV8O7brDp56AM74Fb/6fjcbt2BhfPgmhAi6JHr0WHrgQfjYE/nkzLJ6YnnccB9e/1VDA+Yp0rUUpC9qHDMgUcKNtOmHrO7GlJNIkrH3T1j4tnwrjfw6X32troxpi6Lngmmkatb52b7WOAlG1D6mPgmZw1nfgmsfsjfU/bmryI6o6SitpdmyCTYvhyI9DQXNY+gzM/zs0b2ND2CMusmaVbbvGnWn1ymdD89bQ55iP3tZvJLTqaC/IaTkypWyGTdt0K7KvMxszVs2BroPiy0skqTYvt4PkD+y1N2yZC95Gritf95FLpdvXvGEjL9c/a9NojdG2q42iL33GThGQ7CzPtA9JQAGXMfRcOP8nMPErMPM3cMptcWcUGxVwSZNpGDvm8zbac2CfHR68ZKK9e1wy0d5JDjzVirniCXXvwsqlVbOg7/HWmLGqZs2DY7Wm2Qt1TQcdJ0n5DDv7L5NrzxHQsoNtZDjmqnhzE0mi6b+ChY/axh9XYL87rqDSperXBUCV6wqaw5GXw3k/CK/zf/GFdlrD5uWH3pBJ7UonQ+vOdmZpkoy8zgYCpnwfDjsV+uegvUkCqYBLmrIZNtrW51j7ulkLKDrLLhf8DNbOgyVP2bTqM1+3S7+R9uJUfGHD1oeEZe8uWDcfTrq15vsUjbUidPNy6D4kd7k1xLY1dgTYiV88dF1BM3sx00YGkY/atwcW/ctmEC77Y9zZfFjxeCvgljwNp3w57mySL472IdlyDj72a/jDPHjis/D5V6B1x7izyjmtgUuasuk2XVDdCFZBgb3TOOe78KW5cMscGPufNsQ95Xtw9wnw2xNg8vfsMPlcL7Rf+4Zt965uA0NGmo7VKg/6vw046cPXF46BjYtgz/u5z0kkyUqehw+2JXN0uvMA6HWUTaNK3TYshB0bkrH+rTptulivuPdWwcSvNsmNZSrgkmT3e7D+LTjslOzu32M4nP51uOlF+OoiG6Hr0NumMP401oq6XCqvpoFvVV0HWSuONBRwZTNsurT3UR++vnB0sEbn9XjyaowdG+HVX8DM38WdieSj+Y9A+94w6Iy4M6le8Xhb/rDz3bgzSb7M+bFRH5/VGAPGwJnfhrcet92pTYwKuCRZNRvwh1pW1Een/tb08Nqn4BulUHQ2zHsIKg6EnmaNVs2G7sPq3mBRNBbeecWOxEmy8plWrFWdPug/CnDpmUatqLB1h49+Bu4aAZO/Cy/8v3S1c6nJs9+yn+fA/rgzkV1boOQFO88yaVNuGcUT7M3XsufiziT5SifbZrQ424dk47TbYeBptpzo3ZK4s8kpFXBJ8s6rUNAC+oew4+rYT8LOTbk7uqqiwgq42kbfMorG2tE2q1+LPq+G2rUFNr4Nh5300dtad7LNDEk/kSEz2vab4+1g6JWvwJib4bI/2R+x0slxZ9g4O9+F2X+0n/Hvn9CUdtwW/dOOmjs6gdOnGb2Phk6FsETTqLXa/Z69QU3S7tOaFDSDy+6x7gePX9+kzrxVAZckZTNsQ0KLNo2PNfRcKwaXTGx8rGy8u/TDB9jXZtBptpN2xbTo82qoTHFW03R24WgrjpPWh6iiwo4cevRauOtwG53q2A8uuxduXwzjfmQLzNv1SP8oROkUwFtRumKaNffcWhZ3Vk3Xgkeg5+EfXXKQJM7Z4fbLp6ant2YcVkwDfyC569+q6tgXLvkdrF8Ik/4r7mxyRgVcUnywww5Jb8j0aXVad7KWHUsm5mZxZ3ktDXyrat3JRhmTvA6ubDo0a2ktUapTOMYWa7+7NLd51WTHJnj1l/DbkfDXi2HlSzD6JrjlNbj+aTj6CjtSCGwzzNDzbAQuzVOPpZOsEB33E+vSvn2trf1My9R2Ptmy0t70HH1l8tsDDR8P+3cn+w1k3Eom2+t0v4S1D6nN8AvszdzsP9ixaU2ACrikWP2a7eDMdgNDNoonwJYVdjRX1FbNhrbds++vVHSWNepM6jqsspnBaGjr6m8/2NA3xmlU72HFS/DYdcHatjttAfllf4Lbl9hh3zW1lRl6no2Yrk5psVNxwEbgis62gnTwmXDDZGjVAe6/EBY8FneGTcuCRwEHR10RdyZ1G3gqtOqkadSaeH+ofUizlHUaO/f7NgL8ry/C+2vjziZysRVwzrlmzrl5zrmJwdeDnHOznXOlzrlHnHMtg+tbBV+XBrcPrBTj28H1S51z4+L5SUJSNsMaWBaODi/m8PH2MRfTqOXVHGBfm6KxgLeRoqTZu9NGQ6u2D6ms62Bo2y2e0Z6d79pO49+MhL9+zDYojL7R2sp89lkbBamp8MwoGmvNUtM6jbp2Huze8uEpnh7D4MaptsnkH5+DaT9pkq0Fcs57mz4deKptpkq6Zi1g2Hmw7NncbvJKiw1v2bmxaVj/VlXzVvDxv8D+PcFRW/n9/xvnCNxtwOJKX/8P8Avv/RBgK3BDcP0NwNbg+l8E98M5dzjwCeAI4Hzgd865hG59ykLZDNvxE2Yzwo59bAg86vP/dmyErSttS3e2+h5v74KTOI26em4wGlrLdLZzwcH2OR6BWzzRRtsm/ZftDrv0HvjaUjtapsfw7OO07mg/37IXoss1SiWT7A1Ppq9gRtuu8Ol/wbHXwEv/DU/cAPt2x5NjU7HmddiyPNmbF6oaPh52bU7+RqQ4pKF9SG26D4XxP7NOB6/cFXc2kYqlgHPO9QcmAPcGXztgLPB4cJcHgMxhmRcHXxPcfnZw/4uBh733H3jvVwKlQIjDVzm0b49NoYY5fZpRPMEa7G5bE37sjPqsf8to1hwGVzpWK0nKZwKu7tHQwtF2qPLOzTlJC7D1HR37wRdnwWefs4apdY221WTY+XbubhoX/pdOsinu6lrWNG8JF99tDa/fesKmVLdvyHWGTceCR2wH4OEfizuT7A05x9a46nD7jyqdbLt1O/SKO5OGO/Ya26z14k8O/X3KQ3GNwP0S+CaQ2cLXDXjPe59ZUb0a6Bd83g9YBRDcvi24/8Hrq/meD3HO3eScm+ucm7tp06Ywf45wrH0DDnwQ3gaGyoovtI9Rdh9fNRuatYK+x9bv+4rGwrZVVgQlSdkM6H2kLeKtTWYdXK7Wke3aYrkdebm1MWmsocGqg5KUjcLtfNfWT9Y2xeMcnPpVuOohawdz79nWJFvCdWCfFcnDL6j79yVJWne0TV5Ln0neG8g47dlmBU9adp/WxDm48C6b0n/ic7B7a9wZRSLnBZxz7kJgo/c+Z23svff3eO9Hee9H9ejRI1cPm72y6faxtjVXDdVjGHQbGu07zfJZ0Pc4W39QH0k8VuvAPhsNHZBFMd33OFtHlqtpmGXP2db+4gnhxOs+BLoWpW8d3PKpgIehWUzxjLgIrn/WpsT/PA6WPR95ek1K6RSbijz6E3FnUn/Dx+duk1darHjRXmPSuP6tqtadbD3c9nXw5JfzslCPYwTuFOBjzrl3gIexqdNfAZ2dc5ktL/2BzJzfGqAQILi9E7C58vXVfE+6lM2w/kl1nWDQUMUTbD3A7vfCj71vtx1gX5/1bxldBtpmgCQVcOsWwL5d1TfwrapFG1u3mKuNDEuetunTvseFF3PYOGvwu3dneDGjVjLJNpD0yfLfoe+xtrmhW5E1/J31+7x8MY/FgkegTVcYcnbcmdRfLjd5pUXJpENtnvJB/5F2XvjiJ+H1v8SdTehyXsB577/tve/vvR+IbUKY6r2/BpgGfDy427XAv4PPnwy+Jrh9qvfeB9d/ItilOggYCqSvJ8KB/VA+O5rp04ziC20EIrM4NUxr3rDu6/VZ/1ZZ0VgrIJJyrFb5DPuYzQgcQP/R9m9wYF90OYE1HS2dYsV4mH22ho2z6fsVCdwNXJ2KClheqX1Itjr2tZG44ePhuTvg6duj/z/LtV1bYNKduTvnc882m4I88nLb2Zk2HfvYOkodbm+8t9eYwWelr31IbU7+sv1Mz30bNi6u+/4pkqQ+cN8CbnfOlWJr3O4Lrr8P6BZcfztwB4D3fhHwKPA28Bxwi/c+fXuG182HfTuj2cCQ0W8ktO8VzTvNVVkcYF+borH28yelH1nZDJtWzHYBb+Foawq6fmG0eS2fao+TWdMYlgEnQ8sOUJKSqcW182zKriFrdFq2gysfhFO+AnP/DH+7IppR6bg8dwdM/yVM+X5uHm/xU9au4ZgUTp9mDB9vu2jfXxd3JvHbsMiaYad192lNCgrg0j9aj8jHrs+rXemxFnDe+xe99xcGn6/w3o/23g/x3l/hvf8guH5P8PWQ4PYVlb7/R977Iu/9cO99OlsvZ9a/RTkCV1BgL1Slk23Ha5jKZ9sau3bdGvb9A4NjtZIwjVpRYTtQs5k+zTjY0DfiAnTJRGjdOfznSfOW1lR52QvpmFYsnQQ4G4FriIICOPd7cPHv7Ozh+861dVBpt3yqTWd27AfzHoSNS6J/zPkP25udfiOjf6yoZNaTLkvnn49Qlaa8fUhtOvSCS/5gu+6f/07c2YQmSSNwTdPBEZ/e0T5O8YV2gPzKl8OLmTnAviHr3zJad7RRrCQUcO8utd1K2U6fAnTqBx37R7uR4cB+Oxpm2PnRTFUNG2fvvKMeRQxDySTod3zD3zBkHHcNfObfsHMT/Ols6/2XVvt2w8Tb7XXkc5OhZXs7lSNK21ZbAXz0Vck/Oqs2PYqhyyC1EwE7PqvXUTa1nI+GngMn3Wqj72//u+77p4AKuDhVVNiaqyhH3zIGnWZTZUueCi/m5hLY817D179lFI2FtW/mtp9adcqC9W/1GYEDK0CjHIErm27/ziNCnj7NGHqefUz6Ds2dm226K6wdcgNPgc9NsTeOwZxVAAAgAElEQVQRf786vdNoL/3UGmlf+Atb63fa7bazeOUr0T3mwscAb2fspplzNgq38mX4YHvc2cRnz/u2HCabnd1pdvadtgnsyS/Be6vqvn/CqYCL08a3bSFwlOvfMpq3snVDS0M8PibTIHFACAUcHla+2NiMGqd8pp0l2mVQ/b6vcAy8v9pGJaKw5GlrlFr11IGwtO9pJ2MkfR3cwfYhIbY46FYEVz9su3Af/UxyNtNka8MimPFrOOaTMPgMu27MzTaVOuk/7U1i2LyH+Y/YBp6ug8OPn2vFE+DAXlti0lSteNE2uuVD+5DaNG8Jl99nfwOf+JzNbqSYCrg4HRzxycEIHNgL1c5N1ucsDKtmWzuHbkMaF6fvcbZ1Pe5p1LJg/Vt9p4QyJzZEMQrnvRVwRWfbIvyoDDvfphFztYOxIUonWcuKMNuogDVFvuRu20jz3B3hxo5SRQU89RVo1RHO++Gh61u0gbH/YRs+3v5n+I+7fqGtJTomRUdn1aZwjL2ONeXD7Usn2fMozLO4k6pbkR21tWoWvP2vuLNpFBVwcSp7FToVQpfDcvN4Q8+Fghbh7Uat7wH2NSloBoPPjPdYrffKbRStPuvfMnofBc3bRFPArXvT8gqreW9Nhp0H+GhazYShosJaHAw5254vYTviUjjlNph7H8x7KPz4UXj9L1Z0jvvxR9cEHn0V9DoSJn8P9n8Q7uMueMReR464LNy4cSloZm9gSp7Pv9Yy2fDe1r8NPjOd7WAa4uhP2JrRmb9Nx+atGqiAi4v3NgKXq9E3sFGuQafbgeiNfdLu2GQHWDe0fUhVRWPh/TXw7rJw4tVX2Uz72JD/j2YtbCdeFBsZljxth7YPvyD82JX1Psamj5N6KsO6ebDr3WineMb+Fww6wzYErJ0X3eOEYft6K84GnVF9G4+CZnDu9+G9Mnjtvo/e3lAVB2Dh47ZuMqrG43EonmDLWTJdAZqSjW/bJqa0H59VHwUFcNIX7fc8MxOWQirg4rK51KYzc1nAgb1QbV0JmxrZZiBTrDR2/VvG4LPsY1zTqGXTrcDteXjDvr9wNKxfEH6PocUTbY1k1H8sCwrsBXz51GSOQpRMBly0Hf+bNYeP/9nWBD7y6fg31dTm2W9ZD7YLf1HzCPiQs+336uWfhtfvbuVLsGM9HH1lOPGSYvBZNoreFKdRS/K4fUhtjvmkLcmY+du4M2kwFXBxOdj/LQcbGCoL6/iYVbOgWUvoU88D7GvS5TAb0o6rgCufabtp69Pdv7LC0bYIOMyRm83Lba1R1NOnGcPOhw/et3+LpCmdZGvf2nWP9nHadYerHoQdG+Hx65O5yHnZ87Z254xv2Hqe2pz7PSveXv1FOI+94FFo1cmeK/mkZVvrh9gUD7cvnWzT7R37xp1JbrVsCyfcYBv73i2NO5sGUQEXl7IZ0K5n4zcA1FfHPtBvVOP7HpXPtj+oLVqHkxfYNOo7r4a/ZqcuO9+1qdv6tg+prH9mI0OI06iZ/6NcFXCDz7SiPGntRHZtsfYhuZri6XucjWytfAmm5uhUg2x9sAOe/hr0GAEn31b3/fscY+vhZv2+8W0T9u6Et5+EIy4O9/c+KYaPh22rbCS9qdgTvGFraqNvGSfcaEtgZt0ddyYNogIuLpn1b3E0wSyeYCNFDW17sW+PLa4Pa/1bRtFYO0g+V4fDZ2RGnBqygSGjXbAbN8zcl0yE3kdD5wHhxaxNq/Yw8NTkFXDLp4KvyG2Lg+OugVE3wPRfwaIIdnI21Is/sSLjol9aS4RsjP0P+zjtR4177CXP2LF3R+fJ7tOqhl9g602b0jTqypds5qAprX+rrEMvWw7w5v8le8lEDVTAxWFrmb0I53r6NCNznubSBh4fs3ae9U0Ka/1bxsBToaB57qdRy2Zan7XGtqcoHGMjcGFMwWzfYMXgiIsaH6s+ho6zBs2bl+f2cWtTOtnWqvQ7PrePe/5/Q/8T4F+3JOMQ7LVvwqzfwcjr6/e717kQTrzZjr5a14jRpQUP2675xrzRSbJ23e13eGkTOpWhJNM+JOQ342ly0q22nnRuiJt9ckQFXBxy3f+tqh7D7PzShq6Da+wB9jVp3dGmInNdwJXPsGnlbEc0alI42g5aD+NszaXPAD5306cZw4JTGUpeyO3j1qSiwgq4orHRtA+pTfOWcOWD1n/v4Wtsl2JcDuyHp26Ddj3gnO/W//tPvR3adG74EVs7Ntrv5VFXNHydaBoMH2997t4rjzuT6Hlvv1uDz2g67UOq03OETSHPuSf8s8Ijlse/iQnW2B2PYSieYOvNdm+t//eWz7bpwigWlBeNhXXzc9dQ9oMdNirRmPVvGQcPtg9hHdySp6HLwNw/R7oOhu7DkjONun6+7daOa4qnYx+48gFrx/HPm6M52SAbc+6xZQvn/7cVYvXVpjOc/g0rwkqn1P/733rCprHzdfo0I/OGqSlMo25cbK2b8v30hWycdKu9zix8NO5M6kUFXBzKZtg0RJzvZIsvtLUP9W3c6r0VKI09/7QmmWO1VrwYTfyqVs8BfwAGhFDAdR9uO/QaW8Dted/WphRfGM8ayWHjrLhPwtmQJcHxRkURtg+py2EnW7Pcpc/AK/+b+8ffthqm/tD+0B5xacPjnPA56HwYTLqz/sfpzX/YNkT0LG7446dBtyI74L4pTKOWNtH2IdUZfKbtxJ15d6p2IauAy7Xt660BblzTpxn9Rlrj1vpOo75bAru3wICI1kz0PRZad7ZTGXKhbCa4ZuEcIVNQAIUnNH4jQ+kkW2NYHNHh9XUZOg4q9uWuiK5Npn1I+x7x5jH6Jht9mvaj3J5W4T088w3Aw4T/bVxB37wVnP1fsGGhtQPJ1qalNvqX76NvGcPHwzvTGzY7kSYlk6DnEdCpX9yZxM85G4XbtKRhI9QxUQGXa5n+bwNj2sCQUVAAxeNthKM+8/4H179FNAJ38Fitqbl5J1Q2A/ocDa06hBOvcIxNTTRmvdSSp22tU1znEg440UYS4z6VYdcWO7c3CVM8zsGFv4TeR8ITN4SzzjEbi5+ykb8zvx3OkXtHXGYF8dQfZt90esEjtjvzyI83/vHToHiCjcon9Vi5MHyw3Y5CHKrRt4OOvBw69IGZv4k7k6ypgMu1shnQop0dXRS34gnWFmDlS9l/T/ls2xHYfWh0eRWNtaNdNi2N7jHA+s2tmRvurrrC0YC3g+EbmtOyF6ylQa4X7Wc0awFDxtofsLjWfAGsmGbrrpLS4qBlW7jqIcDBw5+yvmhR2rMNnv2mnbV74hfDiVlQYEdsvb8aZv+x7vtXVMCCx+ykgg69wskh6foe37DZiTRZ+bKNsifhzVFSNG9pI+0rXrSNLCmgAi7XymbY9GOz5nFnAgNPty3k9XmhWhXSAfa1KcrRsVpr37Tt42FsYMjoN9JGKxo6jbryFdi7HYpz3D6kqmHnw44NNnUWl5LJNp3eb2R8OVTVZSB8/D47P/Kp26IdJZ7yA/s/uOhX4b5eDDrdpslfuctGOWtTPhO2lVd/3mq+KgjOHi6dkvum4rlSMgladgi/FVTajbreBlhmpqOxrwq4XNq1xV74417/ltG8pY1uLH02u0XNO9+1M1yjWv+W0XmAtTmJuoArD9q5hLGBIaNVB1tX0tCNDEuegpbt7Y9snIacA7j42onE2T6kLkPOsea4Cx+zEw6isOo1eO1eGxGIooA993v2RuHln9V+vwWP2B+0XLeziVvxBNi7w0aq8o3ah9SsTRc47lOw8HF4f13c2dRJBVwuZTr+x9XAtzrFE2z79OrX6r5vpiiJav1bZbk4VqtsprXMCLsdSuFom0Kt706/igprXzDknPiPKmrX3ZrYxrUObv0C2LkxOdOnVZ32Ndtk8sJ/2PM0TAf22ehex76HTlEIW88R9odqzp9gy8rq77NvDyz6lzWTbtkumjySatDp9kaqsUcOJtGmpdZIPqm/W3E78Qu2BnJOFksMYqYCLpfKZkCzVsmaEhpyLhS0yG4atTw4wL6xJxZko2gs7N9tjxmFigqbDg5z9C2jcIyNbtS3e//q16xoyfXpCzUZdp6durF9Q+4fO+ktDpyDS35vffMeuw62rQkv9szfwsZFMP5n4W2uqc6Z37GTT6b+oPrbS56HD7bZUUNNTfNW9txb+ky860CjcPB3SwVctboOsjdnc/9sfUITTAVcLr3zqo1qNG8VdyaHtO5oQ+mLJ9a9nmfVbOhzbG5GhwaeaoVlVNOoG9+2ReJRTGcXNvBg+yUT7WdOyjvjYefbxzimUUsmW9+x9j1z/9jZat0RPvE328356GdsiUFj18RtWQkv/o/9AYl62rJjHzj5VmvSu+b1j96+4FFo3wsGnRFtHklVPMHWIK59I+5MwlUyyRqEq31IzU7+kv19ePNvcWdSKxVwubLnfZsWSsr6t8qKJ8DWldYDpyb79thoTK5aW7RqbyNZURVwBw+wj2AErstAaNezfhsZvLcCbtDpdkpHEvQ6Ejr2s5GYXNq91Rosp2GEoMdwG4lbMxd+VgT/cxjccxY8fgNM+7E1wF31mh2UXVdx5z08fbuNio2vY21aWE65Ddp2hxf+68P57dpip3EcdUUyNlzFYei51iMyn3ajfrDDXvuGxNgYOw0KR9uxjrN+V/+lMDnURH8zY7BqjrVESGIBN3w8TPyqvVD1HFH9fda9Gc0B9rUpOsumd3ZsCr+Ra9l06NjfNkyEzTl7AajPCNymJdZb7KRbw8+noZyDoefZYv39H+Ru5Hh5wtqH1OXwj8FnX7Ap8C0rrFH36jk2skWloqh1J5ty7ToYuhbZx27Bx7bd7P7Lp8IFP7P1b7nQqgOceQc883Ur2IYHo66L/mltJpri9GlGmy7Wk3L6r21kdPRN9vodx+koYVn5sr2Op+HNUdxOvtVG1pdMhMMvjjubaqmAy5Wy6fbOOq7mrLXp0Numdpc8beclVqc8ogPsa1M01gq4FS/C0VeEF9d728Aw6LToXowLx9gvfrbFZ+ZdftJ2+w0bB6//xdZvZtq7RK10shU7/Ubl5vHCMGDMR3dn7/8AtpYdKuq2rIDNy22Dy6J/WpGa0aqTFUz9RsEJN+Q295HX2W7ayXfauq9mzW33aY8R0Pvo3OaSNJf+AWb8Gt54EN7+l41Kj77RRibTuLGjdJJtzohi5iHfFF9osykzfqsCrskrm2Hrx5L6S188ASZ/185d7NT/o7evmm0jBblck9TnGHsXvHxquAXc1pWwY320L2KZQnf1nOyKssUTrYju0Du6nBpi0BnQvLWNzuSigKvcPiTtU3fNW0GPYXapav8H8F75oaJuywp4f60ddZXrtinNWsA534VHP21rfgadbr/vZ9+Z7tGmMLTvCef90DZ8LHzMdu0+dRtM+i847tNWbHcdHHeW2fHe1pYOOsNaSEntCppZA+1nv2kzaAkcfNEauFzYu8sWCcd9fFZtMuduLn32o7dFfYB9TaI6Vqss084lwunsPsfYjt1splG3rbYp6qSNvoGdPjDwNGsnkoujzTYstIXj+T7F07yVnWYybByc9EWY8HO4+v/iOyx+xEX2pmPaj+H1++26o0J805R2LdvCyGvh5lfg+ueg6GyY/Qf49fHwtyutMEr6btV3l1lTZh2flb1jr7HZgBnJPF4r5W9xU2LNXJseSVL/t6q6D7WeaEsm2hRBZZtLYdfm6Bv4VqdorE03bVhk51CGoXyGjex1Hx5OvOq0aG0jrtlsZMj0mor79IWaDBsHz0yy50GUR6jBofMnk9o+JF85B+f+AP58Hkz/pRXtnQvjzip5nLOTWw47yUZMX78f5v4F/na5rWscfSMc+8nGbUTat9t6tW1cDJsW28eNwQaz9j1tZ3DVjx162+ftetbcJaBE7UPqrVV7GPVZmP4rWwfZdVDcGX2ICrhcKJsBuNyuH2uI4gn2TmP3VitwMsojPsC+NkPOheZt4JFPwTWPhVNAlM206dOCiAegC0fblMv+vbVPWSyZaMVk9yHR5tNQw8YdWuQedQFXOtnWXTWVczeTZMAYG4lb/FTT3ryQrY594azvwGlfh8VP2tmyz91hR6Ad8wkr5mraFAb2urC5JCjQFh8q2Las5ODml2Yt7Y114WhbQ71jA2x9x0b2d71bfdzWnYLirnKh18s2yfQoVmFeX6M/b+vgZv0exv807mw+RAVcLpRNt9GjNp3jzqR2xRfCq7+wd2qVX8BXzbIzKbtXs5Ynah37wLVPwd8/AfeeY4eJDzqt4fG2b7AF5SOvCy3FGhWOtqas6xdA/xoW5O/aAu9Mh1O/En0+DdV5gPWNWvac7cyKyu73bMQyyf8W+W7cj62tyBGXxZ1JejRvCUd93C5r58Gce2HeQzD3PhvJHH2TFU6bFn+4WNtcah3/wdqVdBsCvY+Co6+y+/c83NbX1bQW9MA+O0VnxwbYsTH4GHy+fb19XPOGXbdvl33PaV/Pzb9JPunYx/5v5z0EZ337w4MbMVMBF7X9e60P1Mhr486kbn2Ph/a9bUSocgFXPttGD6MesapJ4Qlw4xRba/LgpfCxX9s0RUOU52D9W0b/Sg19ayrglj1vL+JJXP9W2dDzrBjdsy26PnUrptm/haZ44tN5AFz0y7izSK++x8Eld8O534d5f4XX7rPNIQc5m4brMcJGO3uOsEu3IfVv09OshY0CZtNy5oMdNmLXsZoNalK3k26B+X+36fLTbo87m4NUwEVt3Zt2JFQS+79VVVAAxeNh/iPWuLdFa2tAurkEjr063ty6DIQbXrC+PP/6gu3cO+v/1b+oLJ8JLdraJoOodexjfxBXzbYXgOosmQgd+kKfHBxP1hjDzre1UcunwhGXRvMYJUH7kP4nRBNfJFfadYNTvwonf9lmNHZvtQ0q3Yfbhohca9XeLtIwvY+yDXVz7rFenQnZxatdqFHLHHSd5A0MlRVPgH07YeVL9nUuD7CvS5vO8KknbPv+Kz+HJ26wQrM+yqZbgdCsRTQ5VlU4JmjiXM0Ozr27oHSK/ZvHNbqZrf4n2DT6soiO1fLe1r8NPiv97UNEMgqaWXPkY6+20bk4ijcJx0lfgu3rggbdyZDwvxp5oGyGvetq1z3uTLIz8HRo1fFQY9lVs+x8zn7Hx5tXRrMW8LHfwDnfg0X/gAcusjMos7FnG6x/K7ejoYVj7Jd+2+qP3rZimo3OJn36FKyoGnqunYsaRbuE9QutN19aTl8QkaZlyNk29T3zt7lpqZQFFXBRqjhgOzjTMH2a0byl/RFd+myQ/2ybbmzRJu7MDnHOFrpf+VfbIHDv2bBpWd3ft2oO4HPbhby2g+2XPG1ThgNPzV0+jTF0nK2jieJw71K1DxGRBHPOlsJseMtOB0oAFXBRWr8Q9m5Pz/RpRvEE2930zqu2qyqX55/Wx+EXw3VPw96dcN85sOKl2u9fNsO24udyjVXPI6BFu4/2gzuw34rkYefnbjq3sYacDa7ANl6ErXSKrTNJ2kkUIiIZR19pvfZm/jbuTAAVcNEqm2Ef0zQCB7YLsKAFTPsRHPgg2f3r+o+Cz02BDn3gocvszMKalM8MjjPL4TqUZs2h/8iPjsCVz4TdWw6dgJEGbbvac2HZc+HG3bPNRqq1+1REkqx5K2sLUzrZWsHETAVclMqm2+7JTv3izqR+WneEwWccKjqSOgKX0eUw26E68DR48laY/L2PrtPat8eOMzsshkOcC8cEo7E7D123ZKKdMTrk7Nzn0xjDxtm09ftrw4u54kVrH6L1byKSdCfcYM3lEzAKpwIuKhUVNgKXtunTjMzC+i6DcnuAfUO17mQnNYy8Dl69Cx6/3o6kyVj7BhzYCwNiGA3tP9oKlDXB2jHvbf3b4LOgZbvc59MYQ8fZx5IQd6OWTIJWnQ71zRMRSaq2Xa0P6YJHrTF8jFTAReXdpTZFlrbp04zhEwCX/NG3ypq1gAt/Cef9EN7+t+1Q3bHJbstMZ8fx82Sa+GZGNNfNh22rYESKpk8zeo6ATgPCayfiva1/G3yG2oeISDqcdIudhPHan2JNQwVcVMqm28e0FnAdesHl98Lp34g7k/pxDk7+Elz1oLUMuXesHQRdNsOOpmnbNfc5te1qrWQyGxmWPG2bAYadn/tcGss5GHaetUCpbw++6mxYBNvXavpURNKjWxEMH28nbezdFVsaKuCiUjbDFtZ3GRR3Jg131MftiZpGIy6C65+G/R/AfefapoFctg+pqnA0rJ5zaPp0wMnp6Q1Y1bDz7WzFslcbH0vtQ0QkjU7+ks3o7N4aWwoq4KLgfbD+7WQbsZB49BtpO1Q79beCI87R0MIx9oteMgk2LkpH896aDDzVFvHOfxi2rWlcU8uSydDryOzOcxQRSYrDToKr/x7rJkUtOonClhXWfT+tGxjySedC+Ozztibu8IvjyyPTimXyd+1jmgu4Fm1synPhY3Zp1RF6DA8uI6BHsZ372LFf7W9g9rxvJ32cdGvuchcRyRMq4KJwsP+bCrhEaN0Rjv90vDl0GwJtutjoW++jrPVJml12D6z5PGxaYmsMNy2xBr/zHjp0n5YdrKjrWWxFXY8R9nWn/lbYrXgRKvZr/ZuISAOogItC2Qxo283+WImAHVbffzSUPJ+u5r01adHGplKrHgO2c7MVc5sWw6al1uyypsLug+02epfkRtEiIgmlAi4KZdNtwbzWv0llA8bkTwFXk3bdoN0pMLDK6PPBwq7SZdsqOObq9BwlJiKSICrgwrZtNbxXBmNujjsTSZoTbrRWJr2PjDuT3KupsBMRkQbRLtSwpfX8U4le644w/IK4sxARkTygAi5sZdNtXU/vo+LORERERPKUCriwdehjDXALmsWdiYiIiOQprYEL25l3xJ2BiIiI5DmNwImIiIikTM4LOOdcoXNumnPubefcIufcbcH1XZ1zk5xzJcHHLsH1zjn3a+dcqXNugXPu+Eqxrg3uX+KcuzbXP4uIiIhIHOIYgdsPfM17fzhwInCLc+5w4A5givd+KDAl+BrgAmBocLkJ+D1YwQfcCYwBRgN3Zoo+ERERkXyW8wLOe7/Oe/9G8Pl2YDHQD7gYeCC42wPAJcHnFwN/9WYW0Nk51wcYB0zy3m/x3m8FJgHn5/BHEREREYlFrGvgnHMDgeOA2UAv7/264Kb1QK/g837Aqkrftjq4rqbrRURERPJabAWcc6498ATwFe/9+5Vv8957wIf4WDc55+Y65+Zu2rQprLAiIiIisYilgHPOtcCKt7957/8RXL0hmBol+LgxuH4NUFjp2/sH19V0/Ud47+/x3o/y3o/q0aNHeD+IiIiISAzi2IXqgPuAxd77uyrd9CSQ2Ul6LfDvStd/JtiNeiKwLZhqfR44zznXJdi8cF5wnYiIiEhei6OR7ynAp4GFzrk3g+u+A/w38Khz7gagDLgyuO0ZYDxQCuwCrgfw3m9xzv0AeC243/e991ty8yOIiIiIxMfZcrOmY9SoUX7u3LlxpyEiIiJSJ+fc6977UVWv10kMIiIiIimjAk5EREQkZVTAiYiIiKRMk1sD55zbhG2SiFJ34F3FyLsYSchBMRQj6hhJyEExFCPqGEnIIVuHee8/2gPNe69LyBdgrmLkX4wk5KAYihF1jCTkoBiKEXWMJOTQ2IumUEVERERSRgWciIiISMqogIvGPYqRlzGSkINiKEbUMZKQg2IoRtQxkpBDozS5TQwiIiIiaacROBEREZGUUQEnIiIikjIq4ERERERSRgWc1Mo5d3zMj9/ROTfSOdclzjyCXLo34nu7OOc6NuL7eznnjg8uvRoap5q47cOK1cDH7xpCjI/FmYdzbohz7nLn3OH1+J7ODX28KnGaV/q8vXNuVEN+FudcD+fccc65oxv6nNBztNYYsT5Hg++v1/M0H5+jQZyuYfyfJkKcTejy/QIszPJ+hcDDwCvAd4AWlW77V5YxioFngaeBIuB+4D1gDjAiyxjHV7mMBFYDxwHHZ/H9n630eX9gSpDDDGBYljk8BHQPPh8HlAOTsdMzrsgyxhbgXuBsgo06Dfi/uwBYCbwa/PyLgOXBv8fZWcboC/wV2AYcCH6WcuC7lf+P64hxLDALWBz8O0wGlgTX1fl/kkX88izvd1TwmKuwnVddKt02J8sYpwQ/xyJgDDAp+DddBZyUZYzLqlwuB9Znvs4yxn9U+vxwYFnwf/0OMCaL759W6Tn66eD77wUWAl/KMof9wf/lDUDnBv7fXQdsDh7/AmBF8Du3Crg6yxiHB3mUAnuB2cG/xf1AJz1H0/kcDeN5mmfP0QHY39hNQEkQa2Nw3cAQnqNZ/a0P+5LzB8y3SzW/rJV/aTdlGWMScHPwQvgbrODpFtw2L8sYLwMXAVdjxc4nABdcNyXLGBXBY0+rdNkdfJyaxfe/UenzR4GbsFHeS+uRw8JKn8/I/HJhR5bMzzLGUuBWYDqwBvgVcGI9/1/fBEYAJwUvQCcG14+o/HPWEWMqcGal58kvgHbAD4F76pHHR16wgRPr8e9xew2XrwFbsozxKnA+0Bn4OvYHrqiez9E52B/Zk7DjZ04Nrj8emJ5ljH3ARODPwF+Cy/bg45+zjFH5efo0cEHw+WhgRhbf/1alz1+r9LvaFliQ7fMcuBD4W/D8+nfwO9umHs/RhcHvxSDg/Ur/H73qkccsYHiln/+B4PMbgcf1HE3nczSM52mePUdnAlcBzSpd1yz4eWZlGaPRf+vDvuT8AfPtEvyy3l/pF7XyZXuWMd6s8vWnMi8+ZF8szKv0eWmV27KNcTnwUubFIrhuZT3+LSq/6FT9mbJ9AV0EdAw+fxUoqHxbA/IYAHwTeAN79/fjBsRYVdv/Vy0x5lf5+vVKny/JMkZJLbeVZhljD/AD4M5qLu818Gc5C3sne2IDn6OLG/gcPQF7B/+FhjxHq/m/nedryLG2nwPoF3w+DWgdfN6sgc/RNsCVwD+wP5T/l2WMNyt9vrbKbdn+cYUgtOcAAAytSURBVKz6/1o5r8VZxtBzNGHP0TCep03oOVrjbVXu1+i/9WFfDs5NS4MtAH7uvX+r6g3OuXOyjNHCOdfae78HwHv/kHNuPfA8NmKTjWaVPr+rym0tswngvX/COfc88APn3Gexd78+y8cH6O+c+zU28tfDOdfCe78vuK1FljG+B0xzzt2NjaA95px7Ensxfi7LGC7zife+HPgp8FPnXDH2Liwb7znnPg90BLY6576KjSqeA+zIMsYm59ynsBfPy7DpD5xzjuzXnz7rnHsam4pdFVxXCHyG7P893sCm4l+veoNz7nNZxsA518l7vw3Aez/NOXc58ASQ7XqSyj/zt6vclu1z9DXn3LnAl5xz04BvUb/nKMDg4DnlsOdsW+/9ruC2bJ6nXwVecM49gb3hmBr83pyKvZhno/JzdDf23HrUOdcJuCTLGOXOuZ8AHYAlzrn/xf7AngOsyzLGcufcf2KjxZdho2k451qg52ian6PQ+OdpPj1HX3fO/Q54gA8/R6/FCt1shPG3PlxxVI35dAFOAwbUcNuoLGN8FTijmuuPAyZlGePzQPtqrh8C/LIBP9fxWOGR9dAw9stQ+dIluL43WY58BfcfCvwP8E/gKeD3wLh6fP9dIfy/FgJ/BP4Q5P9V4C1sOiPbNYUDsBe9t7C1fX2C67sBl9cjlwuCPJ4KLn8Axtfj+4cTrIWp5rZeWcb4JNVMQwc/45+yjPExoG011xcB32zA/1Hf4N93RT2/74wql/aZfwvglixjdAK+gE2L/wb7I11cjxy+HsJztCNWZNwBtMdG0CcCd2eea1nE6Iy9wZkI/AjoUOnny3rZQUjP0R55+BztF9dztLHP03x6jmLF9xewNxQLg8tzwBeBVlnGaPTf+rAvOolBahSMFHXw3r8fdy4iIiJyiNqINJJzrrlz7vPOueeccwuCy7POuZuDId7UxgDmA49kG6PS9z8bQg5hxAjj36JqHp/P5c9SR/xGn8OnGOHGSEIOuY7hnGsWPM9/4Jw7ucpt/9GAGKcoRugx6v3/ki8/R3C/ts65bzrnvuGca+2cu9Y596Rz7qcuy5Yk1cS4rr4xwqYRuEZyzv0da5XxANZiAqyFxrVAV+99nWuu8iVGEnLIwxg1rd1x2OLe/oqR2xhJyCFhMe7FdjbOwdpVvOS9vz247Q3vfZ29JBUjeTGSkEOIMR7F1r61wabrFwOPYFPmvb33n85FjLCpgGsk59wy7/2w+t6WjzGSkEMexjiAtYVxla72wdf9vPd1LqxWjHBjJCGHhMVY4L0/Ovi8OfA7rHXE1ViLhuMUI30xkpBDiDHe9N4f65xz2OaJPt57H3w9PxM/6hhh0xRq421xzl3hnDv4b+mcK3DOXQVsbWIxkpBDvsVYgfWSG1TpMth7PwjYoBixxEhCDkmKcbDI897v997fhO0UnIotXFeMdMZIQg5hxch8vweeCT5mvq7XKFYYMULjY9g5kU8XYCA2jLoJ6za9LPj8EWBQU4qRhBzyMMYtwDE13JZt13/FCDFGEnJIWIyHgPOruf5zwD7FSGeMJOQQYox7qb5LQxHwaq5ihH3RFGqInHPdALz3m5t6jCTkkG8xREQkXM455xtZCIURoyE0hRoi7/1m7/1m14gdYPkSIwk55FuMDMVIXowk5KAYihF1jCTkEHaMxhReYcRoDBVw0RilGInKQTEUI+oYSchBMRQj6hhJyCHfYjSYCrhobFSMROWgGIoRdYwk5KAYihF1jCTkkG8xGkxr4ERERERSRiNwjeSc+4dz7lOuEZ2Y8yVGEnJQDMWIOkYSclAMxYg6RhJyyLcYoYtj62s+XYA1wOPAFuzQ4kuBlk0xRhJyUAzF0PNcMRRDz/Mkxgj7EtsD58sFmBd87Igd8/EM1uvrL8B5TSlGEnJQDMXQ81wxFEPP8yTGCPuS8wfMtwvwRjXXdQNuBqY2pRhJyEExFCPqGEnIQTEUI+oYScgh32KEfcn5A+bbBXhZMZKTg2IoRtQxkpCDYihG1DGSkEO+xQj7ol2oIiIiIinTPO4E8oFzrhi4GOgXXLUGeNJ7v7ipxUhCDoqhGFHHSEIOiqEYUcdIQg75FiNMaiPSSM65bwEPAw6YE1wc8Hfn3B1NKUYSclAMxYg6RhJyUAzFiDpGEnLItxihi3sON+0XYBnQoprrWwIlTSlGEnJQDMWIOkYSclAMxYg6RhJyyLcYYV80Atd4FUDfaq7vE9zWlGIkIQfFUIyoYyQhB8VQjKhjJCGHfIsRKq2Ba7yvAFOccyXAquC6AcAQ4NYmFiMJOSiGYkQdIwk5KIZiRB0jCTnkW4xQaRdqCJxzBcBoPryw8TXv/YGmFiMJOSiGYkQdIwk5KIZiRB0jCTnkW4xQxTFvm+8X4CbFSE4OiqEYUcdIQg6KoRhRx0hCDvkWozEXrYGLxs2KkagcFEMxoo6RhBwUQzGijpGEHPItRoOpgIuGU4xE5aAYihF1jCTkoBiKEXWMJOSQbzEa/uDBMKCEyDnX33u/WjGSkYNiKEbUMZKQg2IoRtQxkpBDvsVoDI3ARSDzH+qcu76px0hCDoqhGFHHSEIOiqEYUcdIQg75FqMxNAIXIedcufd+gGIkIwfFUIyoYyQhB8VQjKhjJCGHfIvREOoD10jOuQU13QT0akoxkpCDYihG1DGSkINiKEbUMZKQQ77FCJsKuMbrBYwDtla53gEzmliMJOSgGIoRdYwk5KAYihF1jCTkkG8xQqUCrvEmAu29929WvcE592ITi5GEHBRDMaKOkYQcFEMxoo6RhBzyLUaotAZOREREJGW0C1VEREQkZVTANZJz7mjn3Czn3Crn3D3OuS6VbpvTlGIkIQfFUIyoYyQhB8VQjKhjJCGHfIsRNhVwjfc74LvAUcAy4FXnXFFwW4smFiMJOSiGYkQdIwk5KIZiRB0jCTnkW4xw+RgPYs2HCzC/ytdnASXAicAbTSlGEnJQDMWIOkYSclAMxYg6RhJyyLcYYV9y/oD5dgHmA52qXHd08B+7uSnFSEIOiqEYUcdIQg6KoRhRx0hCDvkWI+xLzh8w3y7AJ4ETq7l+APCnphQjCTkohmJEHSMJOSiGYkQdIwk55FuMsC9qIyIiIiKSMtrE0EjOuU7Ouf92zi1xzm1xzm12zi0OruvclGIkIQfFUIyoYyQhB8VQjKhjJCGHfIsRNhVwjfcodrTGmd77rt77btjixq3BbU0pRhJyUAzFiDpGEnJQDMWIOkYScsi3GOGKY942ny7A0obclo8xkpCDYihG1DGSkINiKEbUMZKQQ77FCPuiEbjGK3POfdM51ytzhXOul3PuW8CqJhYjCTkohmJEHSMJOSiGYkQdIwk55FuMUKmAa7yrgG7AS865rc65LcCLQFfgyiYWIwk5KIZiRB0jCTkohmJEHSMJOeRbjHDFMeyXbxegGDgHaF/l+vObWowk5KAYihF1jCTkoBiKEXWMJOSQbzHCvOT8AfPtAnwZWAr8C3gHuLjSbdl2eM6LGEnIQTEUQ89zxVAMPc+TGCPsS84fMN8uwEKCahwYCMwFbgu+nteUYiQhB8VQDD3PFUMx9DxPYoywL82Rxirw3u8A8N6/45w7E3jcOXcY4JpYjCTkoBiKEXWMJOSgGIoRdYwk5JBvMUKlTQyNt8E5d2zmi+A/+EKgO3BUE4uRhBwUQzGijpGEHBRDMaKOkYQc8i1GuOIY9sunC9Af6F3Dbac0pRhJyEExFCPqGEnIQTEUI+oYScgh32KEfdFZqCIiIiIpoylUERERkZRRASciIiKSMirgRESy5Jz7rnPu67Xcfolz7vBc5iQiTZMKOBGR8FwCqIATkchpE4OISC2cc/8PuBbYiB1a/TqwDbgJaAmUAp8GjgUmBrdtAy4PQtwN9AB2ATd675fkMn8RyU8q4EREauCcGwncD4wBmgNvAH8A/uK93xzc54fABu/9b5xz9wMTvfePB7dNAW723pc458YAP/Hej839TyIi+UYnMYiI1Ow04J/e+10Azrkng+uPDAq3zkB74Pmq3+icaw+cDDzm3MFG7a0iz1hEmgQVcCIi9Xc/cIn3fr5z7jrgzGruUwC8570/tprbREQaRZsYRERq9jJwiXOujXOuA3BRcH0HYJ1zrgVwTaX7bw9uw3v/PrDSOXcFgDPH5C51EclnKuBERGrgvX8DeASYDzwLvBbc9J/AbGA6UHlTwsPAN5xz85xzRVhxd4Nzbj6wCLg4V7mLSH7TJgYRERGRlNEInIiIiEjKqIATERERSRkVcCIiIiIpowJOREREJGVUwImIiIikjAo4ERERkZRRASciIiKSMirgRERERFLm/wOkzwmzptTWnAAAAABJRU5ErkJggg==\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"source": [
"## Exercise"
],
"metadata": {
"id": "KwC-HVvmP0Q7"
}
},
{
"cell_type": "code",
"source": [
"# exercise\n",
"titanic.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 250
},
"id": "G6RSw3wx36uD",
"outputId": "1b6754d7-5fd9-4045-854c-3befaeeb706f"
},
"execution_count": null,
"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",
" 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 "
],
"text/html": [
"\n",
" <div id=\"df-817e75ea-6cac-49bc-a45f-f30821ed4db3\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>survived</th>\n",
" <th>pclass</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>fare</th>\n",
" <th>embarked</th>\n",
" <th>class</th>\n",
" <th>who</th>\n",
" <th>adult_male</th>\n",
" <th>deck</th>\n",
" <th>embark_town</th>\n",
" <th>alive</th>\n",
" <th>alone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>7.2500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>C</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Cherbourg</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.9250</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>S</td>\n",
" <td>First</td>\n",
" <td>woman</td>\n",
" <td>False</td>\n",
" <td>C</td>\n",
" <td>Southampton</td>\n",
" <td>yes</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.0500</td>\n",
" <td>S</td>\n",
" <td>Third</td>\n",
" <td>man</td>\n",
" <td>True</td>\n",
" <td>NaN</td>\n",
" <td>Southampton</td>\n",
" <td>no</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-817e75ea-6cac-49bc-a45f-f30821ed4db3')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-817e75ea-6cac-49bc-a45f-f30821ed4db3 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-817e75ea-6cac-49bc-a45f-f30821ed4db3');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 36
}
]
},
{
"cell_type": "code",
"source": [
"# base table\n",
"base_pivot = titanic.groupby(['embark_town','class','parch']).agg(\n",
" avg_age = ('age','mean')\n",
").reset_index()\n",
"\n",
"base_pivot"
],
"metadata": {
"id": "kzSnN7Zx6O-I",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"outputId": "bc60d14c-4036-45a6-b221-70dd365f5a25"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" embark_town class parch avg_age\n",
"0 Cherbourg First 0 38.150943\n",
"1 Cherbourg First 1 41.933333\n",
"2 Cherbourg First 2 27.166667\n",
"3 Cherbourg First 3 NaN\n",
"4 Cherbourg First 4 NaN\n",
".. ... ... ... ...\n",
"58 Southampton Third 2 12.224138\n",
"59 Southampton Third 3 32.000000\n",
"60 Southampton Third 4 38.000000\n",
"61 Southampton Third 5 39.250000\n",
"62 Southampton Third 6 43.000000\n",
"\n",
"[63 rows x 4 columns]"
],
"text/html": [
"\n",
" <div id=\"df-27c52d0b-520a-49da-95d2-78cc5ef5659a\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>embark_town</th>\n",
" <th>class</th>\n",
" <th>parch</th>\n",
" <th>avg_age</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Cherbourg</td>\n",
" <td>First</td>\n",
" <td>0</td>\n",
" <td>38.150943</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Cherbourg</td>\n",
" <td>First</td>\n",
" <td>1</td>\n",
" <td>41.933333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Cherbourg</td>\n",
" <td>First</td>\n",
" <td>2</td>\n",
" <td>27.166667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Cherbourg</td>\n",
" <td>First</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Cherbourg</td>\n",
" <td>First</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>Southampton</td>\n",
" <td>Third</td>\n",
" <td>2</td>\n",
" <td>12.224138</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>Southampton</td>\n",
" <td>Third</td>\n",
" <td>3</td>\n",
" <td>32.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>Southampton</td>\n",
" <td>Third</td>\n",
" <td>4</td>\n",
" <td>38.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>Southampton</td>\n",
" <td>Third</td>\n",
" <td>5</td>\n",
" <td>39.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>Southampton</td>\n",
" <td>Third</td>\n",
" <td>6</td>\n",
" <td>43.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>63 rows × 4 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-27c52d0b-520a-49da-95d2-78cc5ef5659a')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-27c52d0b-520a-49da-95d2-78cc5ef5659a button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-27c52d0b-520a-49da-95d2-78cc5ef5659a');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 37
}
]
},
{
"cell_type": "code",
"source": [
"df_pivot = pd.pivot_table(base_pivot,\n",
" index='embark_town',\n",
" columns='class')\n",
"\n",
"df_pivot['avg_age']"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 175
},
"id": "n0Qe4WqKGJWM",
"outputId": "07c4683f-49af-41c5-ded0-4fad152ab627"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"class First Second Third\n",
"embark_town \n",
"Cherbourg 35.750314 23.233333 18.941364\n",
"Queenstown 38.500000 43.500000 27.784314\n",
"Southampton 41.354403 29.203384 29.930145"
],
"text/html": [
"\n",
" <div id=\"df-b97018d5-f0ae-4fbe-899c-bfd196683137\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>class</th>\n",
" <th>First</th>\n",
" <th>Second</th>\n",
" <th>Third</th>\n",
" </tr>\n",
" <tr>\n",
" <th>embark_town</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Cherbourg</th>\n",
" <td>35.750314</td>\n",
" <td>23.233333</td>\n",
" <td>18.941364</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Queenstown</th>\n",
" <td>38.500000</td>\n",
" <td>43.500000</td>\n",
" <td>27.784314</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Southampton</th>\n",
" <td>41.354403</td>\n",
" <td>29.203384</td>\n",
" <td>29.930145</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b97018d5-f0ae-4fbe-899c-bfd196683137')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-b97018d5-f0ae-4fbe-899c-bfd196683137 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-b97018d5-f0ae-4fbe-899c-bfd196683137');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 41
}
]
},
{
"cell_type": "markdown",
"source": [
"# E-Commerce EDA"
],
"metadata": {
"id": "05pg2JL0o560"
}
},
{
"cell_type": "code",
"source": [
"# top 5 rows\n",
"ecommerce.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 250
},
"id": "lexhnjJMpYmV",
"outputId": "b6da35e6-7729-4fb0-a302-7969296885e2"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" InvoiceNo StockCode Description Quantity \\\n",
"0 554697 21166 COOK WITH WINE METAL SIGN 1 \n",
"1 561038 82482 WOODEN PICTURE FRAME WHITE FINISH 2 \n",
"2 560552 23192 BUNDLE OF 3 ALPHABET EXERCISE BOOKS 1 \n",
"3 559884 85183B CHARLIE & LOLA WASTEPAPER BIN FLORA 12 \n",
"4 544450 21789 KIDS RAIN MAC PINK 3 \n",
"\n",
" InvoiceDate UnitPrice CustomerID Country \n",
"0 5/25/2011 17:31 2.08 14584 United Kingdom \n",
"1 7/24/2011 11:58 2.55 17114 United Kingdom \n",
"2 7/19/2011 12:54 1.65 15311 United Kingdom \n",
"3 7/13/2011 11:34 1.25 16843 United Kingdom \n",
"4 2/20/2011 12:23 0.85 17811 United Kingdom "
],
"text/html": [
"\n",
" <div id=\"df-f6fb1e58-2069-4381-a4f6-9efcf64908ed\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>InvoiceNo</th>\n",
" <th>StockCode</th>\n",
" <th>Description</th>\n",
" <th>Quantity</th>\n",
" <th>InvoiceDate</th>\n",
" <th>UnitPrice</th>\n",
" <th>CustomerID</th>\n",
" <th>Country</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>554697</td>\n",
" <td>21166</td>\n",
" <td>COOK WITH WINE METAL SIGN</td>\n",
" <td>1</td>\n",
" <td>5/25/2011 17:31</td>\n",
" <td>2.08</td>\n",
" <td>14584</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>561038</td>\n",
" <td>82482</td>\n",
" <td>WOODEN PICTURE FRAME WHITE FINISH</td>\n",
" <td>2</td>\n",
" <td>7/24/2011 11:58</td>\n",
" <td>2.55</td>\n",
" <td>17114</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>560552</td>\n",
" <td>23192</td>\n",
" <td>BUNDLE OF 3 ALPHABET EXERCISE BOOKS</td>\n",
" <td>1</td>\n",
" <td>7/19/2011 12:54</td>\n",
" <td>1.65</td>\n",
" <td>15311</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>559884</td>\n",
" <td>85183B</td>\n",
" <td>CHARLIE &amp; LOLA WASTEPAPER BIN FLORA</td>\n",
" <td>12</td>\n",
" <td>7/13/2011 11:34</td>\n",
" <td>1.25</td>\n",
" <td>16843</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>544450</td>\n",
" <td>21789</td>\n",
" <td>KIDS RAIN MAC PINK</td>\n",
" <td>3</td>\n",
" <td>2/20/2011 12:23</td>\n",
" <td>0.85</td>\n",
" <td>17811</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f6fb1e58-2069-4381-a4f6-9efcf64908ed')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f6fb1e58-2069-4381-a4f6-9efcf64908ed button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f6fb1e58-2069-4381-a4f6-9efcf64908ed');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 42
}
]
},
{
"cell_type": "code",
"source": [
"# general info\n",
"ecommerce.info()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Fp0976fRpbo0",
"outputId": "48808c51-c8c2-48e7-9144-22fbcde62422"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 4870 entries, 0 to 4869\n",
"Data columns (total 8 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 InvoiceNo 4870 non-null int64 \n",
" 1 StockCode 4870 non-null object \n",
" 2 Description 4870 non-null object \n",
" 3 Quantity 4870 non-null int64 \n",
" 4 InvoiceDate 4870 non-null object \n",
" 5 UnitPrice 4870 non-null float64\n",
" 6 CustomerID 4870 non-null int64 \n",
" 7 Country 4870 non-null object \n",
"dtypes: float64(1), int64(3), object(4)\n",
"memory usage: 304.5+ KB\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Observation:\n",
"1. No missing values!\n",
"2. Seems need to convert `InvoiceDate` to datetime format"
],
"metadata": {
"id": "mQkcZ3DU3bmg"
}
},
{
"cell_type": "code",
"source": [
"# check for duplicates\n",
"ecommerce.duplicated().sum()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "6Iy-SAbdpgIk",
"outputId": "cb7c117e-99b5-4c32-e0bf-15f3afb2b8c8"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0"
]
},
"metadata": {},
"execution_count": 44
}
]
},
{
"cell_type": "markdown",
"source": [
"No duplicates! Good!"
],
"metadata": {
"id": "kKpM0J9B3hPN"
}
},
{
"cell_type": "code",
"source": [
"# convert InvoiceDate to datetime format\n",
"ecommerce['InvoiceDate'] = pd.to_datetime(ecommerce['InvoiceDate'])\n",
"ecommerce.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
},
"id": "145K09hfpj7N",
"outputId": "1ebe2782-e491-4d8b-8122-f1f90d0ccf16"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" InvoiceNo StockCode Description Quantity \\\n",
"0 554697 21166 COOK WITH WINE METAL SIGN 1 \n",
"1 561038 82482 WOODEN PICTURE FRAME WHITE FINISH 2 \n",
"2 560552 23192 BUNDLE OF 3 ALPHABET EXERCISE BOOKS 1 \n",
"3 559884 85183B CHARLIE & LOLA WASTEPAPER BIN FLORA 12 \n",
"4 544450 21789 KIDS RAIN MAC PINK 3 \n",
"\n",
" InvoiceDate UnitPrice CustomerID Country \n",
"0 2011-05-25 17:31:00 2.08 14584 United Kingdom \n",
"1 2011-07-24 11:58:00 2.55 17114 United Kingdom \n",
"2 2011-07-19 12:54:00 1.65 15311 United Kingdom \n",
"3 2011-07-13 11:34:00 1.25 16843 United Kingdom \n",
"4 2011-02-20 12:23:00 0.85 17811 United Kingdom "
],
"text/html": [
"\n",
" <div id=\"df-f2375019-dc4d-46af-afda-0fd025b85c4c\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>InvoiceNo</th>\n",
" <th>StockCode</th>\n",
" <th>Description</th>\n",
" <th>Quantity</th>\n",
" <th>InvoiceDate</th>\n",
" <th>UnitPrice</th>\n",
" <th>CustomerID</th>\n",
" <th>Country</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>554697</td>\n",
" <td>21166</td>\n",
" <td>COOK WITH WINE METAL SIGN</td>\n",
" <td>1</td>\n",
" <td>2011-05-25 17:31:00</td>\n",
" <td>2.08</td>\n",
" <td>14584</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>561038</td>\n",
" <td>82482</td>\n",
" <td>WOODEN PICTURE FRAME WHITE FINISH</td>\n",
" <td>2</td>\n",
" <td>2011-07-24 11:58:00</td>\n",
" <td>2.55</td>\n",
" <td>17114</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>560552</td>\n",
" <td>23192</td>\n",
" <td>BUNDLE OF 3 ALPHABET EXERCISE BOOKS</td>\n",
" <td>1</td>\n",
" <td>2011-07-19 12:54:00</td>\n",
" <td>1.65</td>\n",
" <td>15311</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>559884</td>\n",
" <td>85183B</td>\n",
" <td>CHARLIE &amp; LOLA WASTEPAPER BIN FLORA</td>\n",
" <td>12</td>\n",
" <td>2011-07-13 11:34:00</td>\n",
" <td>1.25</td>\n",
" <td>16843</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>544450</td>\n",
" <td>21789</td>\n",
" <td>KIDS RAIN MAC PINK</td>\n",
" <td>3</td>\n",
" <td>2011-02-20 12:23:00</td>\n",
" <td>0.85</td>\n",
" <td>17811</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f2375019-dc4d-46af-afda-0fd025b85c4c')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f2375019-dc4d-46af-afda-0fd025b85c4c button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f2375019-dc4d-46af-afda-0fd025b85c4c');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 45
}
]
},
{
"cell_type": "markdown",
"source": [
"## EDA Questions\n",
"1. What are Top 10 products with the most transactions?\n",
"2. What are Top 10 products with the LEAST transactions?\n",
"3. Who are Top 10 Customers with the most money spend?\n",
"4. How many distinct products sold? How is their price distribution?\n",
"5. From what countries the customers come? Which country has the most royal customers?\n",
"6. How is monthly count buyers profile (time series)?\n",
"7. How is monthly omzet profile (time series)?"
],
"metadata": {
"id": "_VTGEOGVq-WZ"
}
},
{
"cell_type": "markdown",
"source": [
"### Top 10 products with most/least transactions\n",
"We need to perform group by aggregation. Basis group-by is `Description`, while number of transactions = count `InvoiceNo`. After aggregating, do appropriate sorting and truncation."
],
"metadata": {
"id": "Fs2RwEuT33A9"
}
},
{
"cell_type": "code",
"source": [
"# Top 10 products with the most transactions\n",
"top10_prod = (ecommerce\n",
" .groupby('Description')\n",
" .agg(num_trx=('InvoiceNo','count'))\n",
" .reset_index()\n",
" .sort_values('num_trx',ascending=False)\n",
" .head(10)\n",
" )\n",
"top10_prod"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 363
},
"id": "HFu6ZjK3q17z",
"outputId": "d13cf214-2ef6-47b3-d1b5-8ab3bf1d3ec4"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Description num_trx\n",
"793 JUMBO BAG RED RETROSPOT 24\n",
"1060 PARTY BUNTING 22\n",
"1238 REGENCY CAKESTAND 3 TIER 21\n",
"1724 WHITE HANGING HEART T-LIGHT HOLDER 19\n",
"66 60 TEATIME FAIRY CAKE CASES 18\n",
"1385 SET OF 3 CAKE TINS PANTRY DESIGN 16\n",
"1416 SET OF 4 PANTRY JELLY MOULDS 16\n",
"1205 RED RETROSPOT CHARLOTTE BAG 15\n",
"770 JAM MAKING SET PRINTED 15\n",
"108 ASSORTED COLOUR BIRD ORNAMENT 15"
],
"text/html": [
"\n",
" <div id=\"df-ddaec7b2-27d3-493f-8309-a3e54210dd8f\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Description</th>\n",
" <th>num_trx</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>793</th>\n",
" <td>JUMBO BAG RED RETROSPOT</td>\n",
" <td>24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1060</th>\n",
" <td>PARTY BUNTING</td>\n",
" <td>22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1238</th>\n",
" <td>REGENCY CAKESTAND 3 TIER</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1724</th>\n",
" <td>WHITE HANGING HEART T-LIGHT HOLDER</td>\n",
" <td>19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>60 TEATIME FAIRY CAKE CASES</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1385</th>\n",
" <td>SET OF 3 CAKE TINS PANTRY DESIGN</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1416</th>\n",
" <td>SET OF 4 PANTRY JELLY MOULDS</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1205</th>\n",
" <td>RED RETROSPOT CHARLOTTE BAG</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>770</th>\n",
" <td>JAM MAKING SET PRINTED</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>108</th>\n",
" <td>ASSORTED COLOUR BIRD ORNAMENT</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ddaec7b2-27d3-493f-8309-a3e54210dd8f')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-ddaec7b2-27d3-493f-8309-a3e54210dd8f button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-ddaec7b2-27d3-493f-8309-a3e54210dd8f');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 46
}
]
},
{
"cell_type": "code",
"source": [
"# visualize it\n",
"plt.figure(figsize=(8,6))\n",
"sns.barplot(data=top10_prod, x='Description', y='num_trx')\n",
"plt.xticks(rotation=90)\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 585
},
"id": "lcFtwVmi5TzK",
"outputId": "8aeb330f-54f6-4079-a68d-6f08c7921a48"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"# Low 10 products in terms of transactions\n",
"low10_prod = (ecommerce\n",
" .groupby('Description')\n",
" .agg(num_trx=('InvoiceNo','count'))\n",
" .reset_index()\n",
" .sort_values('num_trx',ascending=True)\n",
" .head(10)\n",
" )\n",
"low10_prod"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 363
},
"id": "DKfSVvVo5jWB",
"outputId": "95218a6e-0f96-4d30-d2f9-7b296334479b"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Description num_trx\n",
"903 MEASURING TAPE BABUSHKA PINK 1\n",
"584 FRENCH LAUNDRY SIGN BLUE METAL 1\n",
"1289 ROLL WRAP VINTAGE CHRISTMAS 1\n",
"587 FRENCH STYLE STORAGE JAR CAFE 1\n",
"588 FRENCH TOILET SIGN BLUE METAL 1\n",
"1288 ROLL WRAP 50'S RED CHRISTMAS 1\n",
"590 FRIDGE MAGNETS LES ENFANTS ASSORTED 1\n",
"1287 ROLL WRAP 50'S CHRISTMAS 1\n",
"592 FROG CANDLE 1\n",
"593 FRYING PAN PINK POLKADOT 1"
],
"text/html": [
"\n",
" <div id=\"df-f5c02538-9965-4d42-be83-a065d7e58a61\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Description</th>\n",
" <th>num_trx</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>903</th>\n",
" <td>MEASURING TAPE BABUSHKA PINK</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>584</th>\n",
" <td>FRENCH LAUNDRY SIGN BLUE METAL</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1289</th>\n",
" <td>ROLL WRAP VINTAGE CHRISTMAS</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>587</th>\n",
" <td>FRENCH STYLE STORAGE JAR CAFE</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>588</th>\n",
" <td>FRENCH TOILET SIGN BLUE METAL</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1288</th>\n",
" <td>ROLL WRAP 50'S RED CHRISTMAS</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>590</th>\n",
" <td>FRIDGE MAGNETS LES ENFANTS ASSORTED</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1287</th>\n",
" <td>ROLL WRAP 50'S CHRISTMAS</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>592</th>\n",
" <td>FROG CANDLE</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>593</th>\n",
" <td>FRYING PAN PINK POLKADOT</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f5c02538-9965-4d42-be83-a065d7e58a61')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f5c02538-9965-4d42-be83-a065d7e58a61 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f5c02538-9965-4d42-be83-a065d7e58a61');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 48
}
]
},
{
"cell_type": "markdown",
"source": [
"Not so interesting to visualize, because all have single transaction."
],
"metadata": {
"id": "YbsCM6c68m0p"
}
},
{
"cell_type": "markdown",
"source": [
"### Top 10 Customers in money spend\n",
"We need to create a new column `total_price = Quantity * UnitPrice`. Then sum it based on group-by CustomerID."
],
"metadata": {
"id": "Fyt6ajJQ8xtj"
}
},
{
"cell_type": "code",
"source": [
"# create total_price column\n",
"ecommerce['total_price'] = ecommerce['Quantity'] * ecommerce['UnitPrice']\n",
"\n",
"# group by aggregation\n",
"top10_cust = (ecommerce\n",
" .groupby('CustomerID')\n",
" .agg(total_spend=('total_price','sum'))\n",
" .reset_index()\n",
" .sort_values('total_spend',ascending=False)\n",
" .head(10)\n",
" )\n",
"\n",
"top10_cust"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 363
},
"id": "4iX162aW8duk",
"outputId": "3c0d4339-d3ed-4250-d3be-2cb4ecc074f4"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" CustomerID total_spend\n",
"758 14646 3569.53\n",
"1655 17450 3521.44\n",
"1119 15769 3509.00\n",
"1879 18102 2940.42\n",
"843 14911 2149.65\n",
"1195 16000 2046.00\n",
"565 14088 1900.38\n",
"1263 16210 1728.00\n",
"1214 16029 1472.40\n",
"1672 17511 1334.64"
],
"text/html": [
"\n",
" <div id=\"df-aebfb4d4-fd52-49a3-8930-3bf9490fa83e\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CustomerID</th>\n",
" <th>total_spend</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>758</th>\n",
" <td>14646</td>\n",
" <td>3569.53</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1655</th>\n",
" <td>17450</td>\n",
" <td>3521.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1119</th>\n",
" <td>15769</td>\n",
" <td>3509.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1879</th>\n",
" <td>18102</td>\n",
" <td>2940.42</td>\n",
" </tr>\n",
" <tr>\n",
" <th>843</th>\n",
" <td>14911</td>\n",
" <td>2149.65</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1195</th>\n",
" <td>16000</td>\n",
" <td>2046.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>565</th>\n",
" <td>14088</td>\n",
" <td>1900.38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1263</th>\n",
" <td>16210</td>\n",
" <td>1728.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1214</th>\n",
" <td>16029</td>\n",
" <td>1472.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1672</th>\n",
" <td>17511</td>\n",
" <td>1334.64</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-aebfb4d4-fd52-49a3-8930-3bf9490fa83e')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-aebfb4d4-fd52-49a3-8930-3bf9490fa83e button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-aebfb4d4-fd52-49a3-8930-3bf9490fa83e');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 49
}
]
},
{
"cell_type": "code",
"source": [
"# visualize it\n",
"plt.figure(figsize=(8,6))\n",
"top10_cust['CustomerID'] = top10_cust['CustomerID'].astype(str)\n",
"sns.barplot(data=top10_cust, x='CustomerID', y='total_spend')\n",
"plt.xticks(rotation=90)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 445
},
"id": "rNuJBww69s-e",
"outputId": "ee9c6a7f-7c8f-439a-edf8-85f6791b6eb4"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),\n",
" <a list of 10 Text major ticklabel objects>)"
]
},
"metadata": {},
"execution_count": 50
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"source": [
"### Distinct Product Sold and their price distribution\n",
"We need to create a sub-dataframe containing `Description` and `UnitPrice` columns only, and ensure no duplication."
],
"metadata": {
"id": "GyJup_XQK4tT"
}
},
{
"cell_type": "code",
"source": [
"prod = (ecommerce[['Description','UnitPrice']]\n",
" .drop_duplicates(subset='Description',ignore_index=True))\n",
"prod.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "qf4UQCUp92iT",
"outputId": "33ec4739-859f-4353-84e0-a7ad6b29a95f"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Description UnitPrice\n",
"0 COOK WITH WINE METAL SIGN 2.08\n",
"1 WOODEN PICTURE FRAME WHITE FINISH 2.55\n",
"2 BUNDLE OF 3 ALPHABET EXERCISE BOOKS 1.65\n",
"3 CHARLIE & LOLA WASTEPAPER BIN FLORA 1.25\n",
"4 KIDS RAIN MAC PINK 0.85"
],
"text/html": [
"\n",
" <div id=\"df-6726d6de-a08d-404e-acab-b782d2704b10\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Description</th>\n",
" <th>UnitPrice</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>COOK WITH WINE METAL SIGN</td>\n",
" <td>2.08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>WOODEN PICTURE FRAME WHITE FINISH</td>\n",
" <td>2.55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>BUNDLE OF 3 ALPHABET EXERCISE BOOKS</td>\n",
" <td>1.65</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>CHARLIE &amp; LOLA WASTEPAPER BIN FLORA</td>\n",
" <td>1.25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>KIDS RAIN MAC PINK</td>\n",
" <td>0.85</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-6726d6de-a08d-404e-acab-b782d2704b10')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-6726d6de-a08d-404e-acab-b782d2704b10 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-6726d6de-a08d-404e-acab-b782d2704b10');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 51
}
]
},
{
"cell_type": "code",
"source": [
"# number of products\n",
"prod.shape[0]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "w3355drJLWbh",
"outputId": "dcc90cb0-f855-42cc-bc51-359cb2a625a1"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1807"
]
},
"metadata": {},
"execution_count": 52
}
]
},
{
"cell_type": "code",
"source": [
"# price distribution\n",
"plt.figure(figsize=(10,6))\n",
"sns.kdeplot(data=prod, x='UnitPrice')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 406
},
"id": "mQ1LVzQqLbKi",
"outputId": "a934ad39-0fe6-4a5f-e1e4-12a489aa57f7"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7faccdbdf490>"
]
},
"metadata": {},
"execution_count": 54
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAm4AAAFzCAYAAACHCIXLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3de5ikd13n/fe3jzPdM5PDzCSBSWACCWBASWAIESSLYcGwYoI+IEEQcBXkUlwFdQ26soj4uOyjoj6LCApykKNRJLDBcAZXIGQCIQdiYHIgmZDD5MCcuqeqq+q7f9x3zVQ6PTPVM31XVXe9X9fVV1fdp/rV3ZWaT37HyEwkSZI0+Eb6XQBJkiR1x+AmSZK0TBjcJEmSlgmDmyRJ0jJhcJMkSVomDG6SJEnLxFi/C9ALGzZsyM2bN/e7GJIkSYd11VVX3ZuZGxfaNxTBbfPmzWzdurXfxZAkSTqsiPjewfbZVCpJkrRMGNwkSZKWCYObJEnSMmFwkyRJWiYMbpIkScuEwU2SJGmZMLhJkiQtEwY3SZKkZcLgJkmStEwY3CRJkpYJg5skSdIyYXCTJElaJgxuA+Trt9zPl7+zo9/FkCRJA8rgNkD+4nPf4Y2fuL7fxZAkSQPK4DZAds7Ocdt9M8w1W/0uiiRJGkAGtwGya7ZBo5V8776ZfhdFkiQNIIPbANm1bw6Abffs6XNJJEnSIDK4DYjMZPe+BgA37TC4SZKkhzK4DYiZepNmKwG4yRo3SZK0AIPbgGg3k4I1bpIkaWEGtwHRbibdsGaSm3bsJTP7XCJJkjRoDG4DYtdsUeN21iOOZU+twd27an0ukSRJGjQGtwHRbio96xHHAjaXSpKkhzK4DYh2U+lZpxwHGNwkSdJDGdwGRLup9LQT1rBmcsy53CRJ0kMY3AbErrLGbd3qMR59whpr3CRJ0kMY3AbErn1zTI6NMDk2yqM3TlvjJkmSHsLgNiB2zTZYt3ocKJpL795VY3fH3G6SJEmVBreIOD8iboyIbRFx8QL7z42Ib0REIyJe0LH9xyPi6o6ffRHx/HLfeyLilo59Z1b5Hnpl17451q4aA+DRG9cAcPOOvf0skiRJGjCVBbeIGAXeBjwXOAN4cUScMe+w24BXAB/s3JiZX8jMMzPzTOA8YAb4dMchv93en5lXV/Ueemn3vgbrVhU1bo9cPwXAbffP9LNIkiRpwIxVeO2zgW2ZeTNARHwYuBD4dvuAzLy13Nc6xHVeAHwqM1d0itk1e6DGbW0Z4GbqjX4WSZIkDZgqm0o3Abd3PN9eblusi4APzdv2RxFxTUS8NSImFzopIl4VEVsjYuuOHTuO4GV7a9e+uf193KYnRgHYW2v2s0iSJGnADPTghIh4GPDDwOUdm18PPA54CnA88DsLnZuZ78zMLZm5ZePGjZWX9Wh1NpVOTRQ1b9a4SZKkTlUGtzuAUzqen1xuW4yfBT6WmfuHV2bmnVmoAX9H0SS77O2anWNd2VQ6MTbC+GgwU7fGTZIkHVBlcLsSOD0iTo2ICYomz0sXeY0XM6+ZtKyFIyICeD5w3RKUta/2zTWpNVr7m0qhqHUzuEmSpE6VBbfMbACvoWjmvAH4aGZeHxFviogLACLiKRGxHXgh8I6IuL59fkRspqix+9K8S38gIq4FrgU2AG+u6j30Snud0naNGxT93PbWbCqVJEkHVDmqlMy8DLhs3rY3dDy+kqIJdaFzb2WBwQyZed7SlrL/2hPttkeTAkxNWuMmSZIebKAHJwyLznVK26YnRtnr4ARJktTB4DYAds0WNW7rVs3r4+Z0IJIkqYPBbQC0+7g9qKnUGjdJkjSPwW0A7Cr7uHU2ldrHTZIkzWdwGwALNZU6qlSSJM1ncBsAu/c1GB0JpsqlrqDo4zZrjZskSepgcBsAu/YVC8wXcwoXpieLPm6Z2ceSSZKkQWJwGwDFclfjD9o2NTFGK6HWaPWpVJIkadAY3AbA7n0N1q568FzI05NFs6n93CRJUpvBbQDs2rdwjRvgyFJJkrSfwW0A7JptPGgqEChGlQLO5SZJkvYzuA2A3fvmHjT5LhTzuAHsdfUESZJUMrgNgF37Gg9pKm3XuM1Y4yZJkkoGtz5rtpI9tYcOTljdbiq1xk2SJJUMbn22p1yndN3q+TVu7cEJ1rhJkqSCwa3P9q9TOq/GbWqy3VRqjZskSSoY3PpsZ7lO6fzBCda4SZKk+Qxufba73VQ6v4/buH3cJEnSgxnc+mzfXBHMVncsMA8wUi46b42bJElqM7j1Wa1RBLfJsdGH7JuaGGOvfdwkSVLJ4NZn7UXkJ8cf+qeYnhxlxrVKJUlSyeDWZ/uD29hD/xTWuEmSpE4Gtz5rB7eJBYLbtH3cJElSB4Nbn9XmDt7HbfXEqKNKJUnSfga3Pqs3D95UOj0xxqxNpZIkqWRw67PaXNlUOrpAH7fJUfbaVCpJkkoGtz6rNVpMjI4wMhIP2Tc9MeaSV5IkaT+DW5/VGs0Fm0mhrHFzOhBJklQyuPVZvdFacA43KGrcao0WjbIfnCRJGm4Gtz5rN5UuZKpcBmtmzuZSSZJkcOu7WqPF5PhDpwIBmJ4sFp6fcUoQSZKEwa3v6ofq41bWuDmyVJIkQcXBLSLOj4gbI2JbRFy8wP5zI+IbEdGIiBfM29eMiKvLn0s7tp8aEVeU1/xIRExU+R6qVmu0Flw1AYo+bmCNmyRJKlQW3CJiFHgb8FzgDODFEXHGvMNuA14BfHCBS8xm5pnlzwUd298CvDUzTwMeAH5xyQvfQ7W51iFHlYI1bpIkqVBljdvZwLbMvDkz68CHgQs7D8jMWzPzGqCrYZMREcB5wCXlpvcCz1+6IvdevdlacLkrKBaZB1w9QZIkAdUGt03A7R3Pt5fburUqIrZGxNcioh3O1gM/yMx2FdRirzlwao3mIZpKrXGTJEkHjPW7AIfwyMy8IyIeBXw+Iq4FdnZ7ckS8CngVwCMe8YiKinj0Dt1Uah83SZJ0QJU1bncAp3Q8P7nc1pXMvKP8fTPwReAs4D7g2IhoB86DXjMz35mZWzJzy8aNGxdf+h6pNQ4e3KxxkyRJnaoMblcCp5ejQCeAi4BLD3MOABFxXERMlo83AE8Hvp2ZCXwBaI9AfTnw8SUveQ/VG4fv4+Z6pZIkCSoMbmU/tNcAlwM3AB/NzOsj4k0RcQFARDwlIrYDLwTeERHXl6f/ELA1Ir5FEdT+R2Z+u9z3O8DrImIbRZ+3d1X1HnrhUH3cJsZGGB8N1yuVJElAxX3cMvMy4LJ5297Q8fhKiubO+ed9Bfjhg1zzZooRqyvCoZpKoah1s8ZNkiSBKyf03aEWmYein5s1bpIkCQxufdVotmi0konRhfu4QTGy1Bo3SZIEBre+qjeLeYcPV+M246hSSZKEwa2v6o0yuB2mj9tea9wkSRIGt76q7Q9uh2gqtcZNkiSVDG59VJsrgtvBpgOBso+bKydIkiQMbn1VaxSB7JBNpeOjrpwgSZIAg1tf1bro47Z6YpRZ+7hJkiQMbn3VDm6HaipdPTHK7JzBTZIkGdz66kBT6SEGJ4yPMtdM5sqpQyRJ0vAyuPXR/ulADjGP2+qJItTts9ZNkqShZ3Dro/1NpaOHD272c5MkSQa3PmoHt1WHqnEbL4ObNW6SJA09g1sf1buYgLcd3FyvVJIkGdz6qJt53PY3lVrjJknS0DO49VE3Kyfsbyq1xk2SpKFncOuj7tYqHQMMbpIkyeDWV/WuJuAt9tlUKkmSDG59VGs0GRsJRkfioMestsZNkiSVDG59VGu0DjkwAZwORJIkHWBw66N6o8Xk+MH7t4HTgUiSpAMMbn1UazQPW+PWnpzXGjdJkmRw66Nao3XIgQkAEcHq8VFm640elUqSJA0qg1sf1bvo4wYwNTFqjZskSTK49VMxOOHQfdwAVo2PMltv9aBEkiRpkBnc+qjWaB62qRSKZa9m52wqlSRp2Bnc+qg2t4imUkeVSpI09AxufVRvdhfcVo2POh2IJEkyuPVTUeN2+D5uUxOj7HNwgiRJQ8/g1kdd93Gzxk2SJGFw66tupwNZ7XQgkiQJg1tf1RotJse7q3GzqVSSJBnc+qjWaDExevg+bjaVSpIkqDi4RcT5EXFjRGyLiIsX2H9uRHwjIhoR8YKO7WdGxFcj4vqIuCYiXtSx7z0RcUtEXF3+nFnle6hSvcsat/bKCZnZg1JJkqRBNVbVhSNiFHgb8GxgO3BlRFyamd/uOOw24BXAb807fQZ4WWZ+NyIeDlwVEZdn5g/K/b+dmZdUVfZeaLWy++lAJkbJLGroVo0fvoZOkiStTJUFN+BsYFtm3gwQER8GLgT2B7fMvLXc96D1nDLzOx2Pvx8R9wAbgR+wQtSbxVvuZlTpVBnWZutNg5skSUOsyqbSTcDtHc+3l9sWJSLOBiaAmzo2/1HZhPrWiJg8umL2R22uCG7dzOO2eqI4ZsYBCpIkDbWBHpwQEQ8D3g/8Qma2a+VeDzwOeApwPPA7Bzn3VRGxNSK27tixoyflXYxaswhh3a6cALjslSRJQ67K4HYHcErH85PLbV2JiHXA/wZ+LzO/1t6emXdmoQb8HUWT7ENk5jszc0tmbtm4ceMRvYEqHahx62ZwQtGi7ZQgkiQNtyqD25XA6RFxakRMABcBl3ZzYnn8x4D3zR+EUNbCEREBPB+4bklL3SO1Rvd93FaXNW5OCSJJ0nCrLLhlZgN4DXA5cAPw0cy8PiLeFBEXAETEUyJiO/BC4B0RcX15+s8C5wKvWGDajw9ExLXAtcAG4M1VvYcq1RuL7+Pm6gmSJA23KkeVkpmXAZfN2/aGjsdXUjShzj/v74G/P8g1z1viYvZFrVH2cety5QSA2Xqj0jJJkqTBNtCDE1aydlPp5Gh3E/CCNW6SJA07g1uf7G8q7abGbcI+bpIkyeDWN7VF9HFzOhBJkgQGt77Z38etq+lADG6SJMng1jftedy6mQ5kfHSEsZGwj5skSUPO4NYn7bVKu2kqhaKfm8FNkqThZnDrk9pc902lUEwJYlOpJEnDzeDWJ4tZOQGscZMkSQa3vjmwckL3NW5OByJJ0nAzuPVJrdFidCQY62ICXihq3FxkXpKk4WZw65Nao8lEl6ENiilBrHGTJGm4Gdz6pN5odbVqQpuDEyRJksGtT2qNVtf92wBWT4zZVCpJ0pAzuPVJEdy6m8MNYPX4iE2lkiQNOYNbn9Qaza6nAoGyqdQaN0mShprBrU/qR9BUah83SZKGm8GtTxbdx218lHqzRaNcKkuSJA0fg1uf1OZai2oqnZoo+sPZXCpJ0vAyuPVJrbm4wQmrDG6SJA09g1uf1Oaai24qBdhXt6lUkqRhZXDrk2IC3u5r3NpNpTNzjaqKJEmSBpzBrU9qjdailrxq17g5slSSpOFlcOuT2mKXvJowuEmSNOwMbn1SaxxZHzcHJ0iSNLy6Sg4R8U8R8ZMRYdBbIrXG4qYDade4ueyVJEnDq9vk8FfAzwHfjYj/ERGPrbBMK15mlisnLGatUmvcJEkadl0Ft8z8bGa+BHgScCvw2Yj4SkT8QkSMV1nAlahern6wuCWv7OMmSdKw6zo5RMR64BXALwHfBP6CIsh9ppKSrWC1xuKD2/TEGAB7604HIknSsBrr5qCI+BjwWOD9wE9l5p3lro9ExNaqCrdS1Y8guK0aH2EkYKZmjZskScOqq+AG/E1mXta5ISImM7OWmVsqKNeKdqDGrfs+bhHB9MQYe2rWuEmSNKy6rfJ58wLbvrqUBRkmtXKAwWLmcQOYnhxjxqZSSZKG1iFr3CLiJGATsDoizgKi3LUOmKq4bCtWe3DCYlZOAJiaHGWvTaWSJA2twzWV/gTFgISTgT/r2L4b+N2KyrTi1ebKptJF1ritmRxzcIIkSUPskMkhM9+bmT8OvCIzf7zj54LM/KfDXTwizo+IGyNiW0RcvMD+cyPiGxHRiIgXzNv38oj4bvnz8o7tT46Ia8tr/mVExPzrDroj6eMGxcjSvfZxkyRpaB2uqfSlmfn3wOaIeN38/Zn5Zwuc1j53FHgb8GxgO3BlRFyamd/uOOw2ihq935p37vHAfwe2AAlcVZ77APB24JXAFcBlwPnApw7zPgdKrVE0dy5m5QSA6clRvv+DuSqKJEmSloHDJYfp8vcaYO0CP4dyNrAtM2/OzDrwYeDCzgMy89bMvAZozTv3J4DPZOb9ZVj7DHB+RDwMWJeZX8vMBN4HPP8w5Rg4RzIdCBSDE2wqlSRpeB2yxi0z31H+/oMjuPYm4PaO59uBpx7FuZvKn+0LbF9WjrSpdMqmUkmShlq3i8z/z4hYFxHjEfG5iNgRES+tunBHIyJeFRFbI2Lrjh07+l2cB2k3lS62xm2No0olSRpq3SaH52TmLuB5FGuVngb89mHOuQM4peP5yeW2bhzs3DvKx4e9Zma+MzO3ZOaWjRs3dvmyvdFuKl1sH7epiTFm55o0W1lFsSRJ0oDrNjm0m1R/EviHzNzZxTlXAqdHxKkRMQFcBFza5etdDjwnIo6LiOOA5wCXl0tt7YqIc8rRpC8DPt7lNQfGkaxVCsV0IICT8EqSNKS6TQ6fjIh/B54MfC4iNgL7DnVCZjaA11CEsBuAj2bm9RHxpoi4ACAinhIR24EXAu+IiOvLc+8H/pAi/F0JvKncBvArwN8C24CbWGYjSqFzHrdFTgdSBjebSyVJGk5drVWamRdHxP8EdmZmMyL2Mm+E6EHOu4xiyo7ObW/oeHwlD2767Dzu3cC7F9i+FXhCN+UeVEe6csL0ZBH0HFkqSdJw6naReYDHUczn1nnO+5a4PEOhNtckAsZHFzd38PREu8bN4CZJ0jDqKrhFxPuBRwNXA+12uvY8alqkWqPF5NgIi130Yapd42ZTqSRJQ6nbGrctwBnlpLc6SrVGa9HNpHBgcII1bpIkDadu08N1wElVFmSY1BqtRQ9MgGI6ELCPmyRJw6rbGrcNwLcj4utArb0xMy+opFQrXK3RXPRUINBZ42ZTqSRJw6jb4PbGKgsxbNp93BZr/6hSm0olSRpK3U4H8qWIeCRwemZ+NiKmgMW39QkoVk6YWOQ6pWBTqSRJw67btUpfCVwCvKPctAn456oKtdIdaY3b6EiwenzUGjdJkoZUt+nhV4GnA7sAMvO7wAlVFWqlq80dWR83KJpL99bt4yZJ0jDqNj3UMrPeflJOwuvUIEeo3mwteoH5tunJMWvcJEkaUt2mhy9FxO8CqyPi2cA/AJ+orlgrW22uxeQR9HGDop+bo0olSRpO3Qa3i4EdwLXAL1OsP/rfqirUSldrNJkcP7IatzWT9nGTJGlYdTuqtBUR/wz8c2buqLhMK96RDk6Aoqn0/r31wx8oSZJWnEOmhyi8MSLuBW4EboyIHRHxht4Ub2WqH01wm7CPmyRJw+pw6eG1FKNJn5KZx2fm8cBTgadHxGsrL90KVdS4HVkft+nJUfu4SZI0pA4X3H4eeHFm3tLekJk3Ay8FXlZlwVayI13yCsrBCU7AK0nSUDpcehjPzHvnbyz7uY1XU6SVLTPLlROOdHBC0VSa6WwskiQNm8Olh0P1greH/BFotJJWcuQ1bpOjtLJobpUkScPlcKNKnxgRuxbYHsCqCsqz4rUD15H2cVszWfzJ9tQarBp3uVhJkobJIYNbZpoMlli9HdyOcB636XKh+ZlaE9YsWbEkSdIycGTpQUes1ihGhE6MHvlapVDUuEmSpOFicOux2txR1riVTaWOLJUkafgY3HrsaPu4TZVNpU7CK0nS8DG49Vi7j9uRNpW2Byc4Ca8kScPH4NZj7T5uR9pUOjVR1NTZVCpJ0vAxuPXYUk0HYlOpJEnDx+DWY/ubSo9iAl6AmbpNpZIkDRuDW4/tbyo9wuA2OTbK+Gg4HYgkSUPI4NZjB5pKj/zWT0+OMWNwkyRp6Bjcemx/cDuK5aqmJ8bY46hSSZKGjsGtx2pHOR0IFKsnODhBkqThY3Drsdrc0U0HAsUkvE4HIknS8DG49dhS9HFbMzlmjZskSUOo0uAWEedHxI0RsS0iLl5g/2REfKTcf0VEbC63vyQiru74aUXEmeW+L5bXbO87ocr3sNSOduUEKCbhdToQSZKGT2XBLSJGgbcBzwXOAF4cEWfMO+wXgQcy8zTgrcBbADLzA5l5ZmaeCfw8cEtmXt1x3kva+zPznqreQxVqjRYTYyNExBFfY83kmNOBSJI0hKqscTsb2JaZN2dmHfgwcOG8Yy4E3ls+vgR4Vjw00by4PHdFqDWaR9VMCuV0INa4SZI0dKoMbpuA2zueby+3LXhMZjaAncD6ece8CPjQvG1/VzaT/v4CQQ+AiHhVRGyNiK07duw40vew5OqN1hEvd9U2NTnKnn3WuEmSNGwGenBCRDwVmMnM6zo2vyQzfxh4Rvnz8wudm5nvzMwtmbll48aNPShtd2qN1lHXuK1bNU692WLfnLVukiQNkyqD2x3AKR3PTy63LXhMRIwBxwD3dey/iHm1bZl5R/l7N/BBiibZZWMpgtuxU+MA7JydW4oiSZKkZaLK4HYlcHpEnBoRExQh7NJ5x1wKvLx8/ALg85mZABExAvwsHf3bImIsIjaUj8eB5wHXsYzU5ppHvMB82zGrDW6SJA2jsaounJmNiHgNcDkwCrw7M6+PiDcBWzPzUuBdwPsjYhtwP0W4azsXuD0zb+7YNglcXoa2UeCzwN9U9R6qUG8uQY3b6gkAfjBjcJMkaZhUFtwAMvMy4LJ5297Q8Xgf8MKDnPtF4Jx52/YCT17ygvZQbe7oBydY4yZJ0nAa6MEJK1Gt0Tyq5a7gQB+3H8zUl6JIkiRpmTC49Vi92TqqVRMA1lnjJknSUDK49VhtrnXUNW5rJ8eIMLhJkjRsDG49VluCCXhHRoJjVo8b3CRJGjIGtx6rL8E8boDBTZKkIWRw67Fa4+jncQM4dvW404FIkjRkDG49thQrJ0AxQMEaN0mShovBrceWoo8bwLFTEwY3SZKGjMGthxrNFs1WLklT6TGrxwxukiQNGYNbD9WbLYAlaSo9dnVR41Yu7SpJkoaAwa2HanNLF9yOWT1Os5XsqTWO+lqSJGl5MLj10P4at/Gj7+PmeqWSJA0fg1sPtWvcjnbJK4Bj9q9XanCTJGlYGNx6qNZoAhz1kldwoMZtlzVukiQNDYNbD9Ua7T5uSzEdSFnjZnCTJGloGNx6qB3clmY6EPu4SZI0bAxuPbS/qXSJpgMB+7hJkjRMDG49dKCp9Ohv+6rxESZGR6xxkyRpiBjceqi+hE2lEeF6pZIkDRmDWw8t5eAEKAYo7JytL8m1JEnS4DO49dC+uaXr4wbFAAVr3CRJGh4Gtx6arRfBbWpiiWrcVo87OEGSpCFicOuhmTK4TU+OLcn1rHGTJGm4GNx6aLbeIGIJm0qnxtlpjZskSUPD4NZDM/UmU+OjRMSSXO+Y1ePsrjVotnJJridJkgabwa2H9tabrJ5YmmZSKPq4geuVSpI0LAxuPTRbbyzZwAQomkrB9UolSRoWBrcemqk3lza4uV6pJElDxeDWQ7NzTVYvaXBrr1fqJLySJA0Dg1sPzdSbTC9hHzdr3CRJGi4Gtx6aqS9tjduxUw5OkCRpmBjcemhmqQcnlDVurp4gSdJwMLj10FIPThgfHWHtqjHu22sfN0mShkGlwS0izo+IGyNiW0RcvMD+yYj4SLn/iojYXG7fHBGzEXF1+fPXHec8OSKuLc/5y1iq2Wx7YLbeZPX40vVxAzhx3Sru2b1vSa8pSZIGU2XBLSJGgbcBzwXOAF4cEWfMO+wXgQcy8zTgrcBbOvbdlJlnlj+v7tj+duCVwOnlz/lVvYellJlL3lQKcOK6Se7aaXCTJGkYVFnjdjawLTNvzsw68GHgwnnHXAi8t3x8CfCsQ9WgRcTDgHWZ+bXMTOB9wPOXvuhLr9Zo0UqWdHACwIlrV3H3rtqSXlOSJA2mKoPbJuD2jufby20LHpOZDWAnsL7cd2pEfDMivhQRz+g4fvthrglARLwqIrZGxNYdO3Yc3TtZAjP1JgDTSx3cjimaSluuVypJ0oo3qIMT7gQekZlnAa8DPhgR6xZzgcx8Z2ZuycwtGzdurKSQizFTbwAwtYTzuAGcuHaSuWbygJPwSpK04lUZ3O4ATul4fnK5bcFjImIMOAa4LzNrmXkfQGZeBdwEPKY8/uTDXHMgzZY1bkveVLpuFYDNpZIkDYEqg9uVwOkRcWpETAAXAZfOO+ZS4OXl4xcAn8/MjIiN5eAGIuJRFIMQbs7MO4FdEXFO2RfuZcDHK3wPS6bdVLrkgxOOaQc3ByhIkrTSLW27XYfMbETEa4DLgVHg3Zl5fUS8CdiamZcC7wLeHxHbgPspwh3AucCbImIOaAGvzsz7y32/ArwHWA18qvwZeDOV17gZ3CRJWukqC24AmXkZcNm8bW/oeLwPeOEC5/0j8I8HueZW4AlLW9Lqzc5V08dt45pJwKZSSZKGwaAOTlhx9taqGVU6MTbChjUT3GWNmyRJK57BrUeqGpwAcMLaVdxjcJMkacUzuPVIVdOBQLl6gsFNkqQVz+DWIzNz1YwqBTjpGFdPkCRpGBjcemS23iQCJseW/pafsHYV9+2tMddsLfm1JUnS4DC49chMvcnU+CiHWIr1iJ24bhWZsGO3tW6SJK1kBrcemak3WF1B/zaAk45pTwliPzdJklYyg1uPzNSbTE8uff82KJpKwbncJEla6QxuPTJTb7J6vJrg5uoJkiQNB4Nbj8zWm5WMKAVYPz3B2EgY3CRJWuEMbj0yU29UMocbwMhIcMLaSZtKJUla4QxuPTJTb1ayakLbCetWWeMmSdIKZ3DrkZkKm0oBTjK4SZK04hnceqTq4OayV5IkrXwGtx6ZrbCPGxRNpbv3NfaviSpJklYeg1sPZCYzc9XWuG1ePw3AzTv2VvYakiSpvwxuPVBrtMik0sEJjz1pDQA33rW7steQJEn9ZXDrgZl6E4CpiibgBXjk+mkmRkf4zt0GN0mSViqDWw/srRX9zqrs4zY+OsKjT1jDjQY3SZJWLINbD8zOFTVuVTaVAjz2xDU2lUqStIIZ3Hpgf1Np1cHtpHXcuXMfO2fnKn0dSZLUH8uSPDQAABQHSURBVAa3HmhP0VFlUykcGKBgPzdJklYmg1sPzPawxg0cWSpJ0kplcOuBXjWVPvyYVaydHDO4SZK0QhnceqDdVFr14ISI4DEnrXVkqSRJK5TBrQcO1LhV28cN4DEnruU7d+8mMyt/LUmS1FsGtx7oVVMpwONOWssPZua4Z3et8teSJEm9ZXDrgdl6kwiYHKv+dj/mxLWAAxQkSVqJDG49MFNvMj0xRkRU/lqPPcngJknSSmVw64GZeqPygQltx09PcMLaSa65Y2dPXk+SJPWOwa0HZurNnvRva/sPj9nIF2+8h3qj1bPXlCRJ1TO49cBMvcnq8d4Ft/OfcBK79zX46s339ew1JUlS9QxuPTA71+hpjdvTT9vA9MQo/3LdnT17TUmSVL1Kg1tEnB8RN0bEtoi4eIH9kxHxkXL/FRGxudz+7Ii4KiKuLX+f13HOF8trXl3+nFDle1gKRVNp9XO4ta0aH+W8HzqRT19/N82W87lJkrRSVBbcImIUeBvwXOAM4MURcca8w34ReCAzTwPeCryl3H4v8FOZ+cPAy4H3zzvvJZl5ZvlzT1XvYanM1ps9G5zQdv7jT+K+vXW23np/T19XkiRVp8oat7OBbZl5c2bWgQ8DF8475kLgveXjS4BnRURk5jcz8/vl9uuB1RExWWFZK7W33mC6x8HtmY/dyOTYCJ+67q6evq4kSapOlcFtE3B7x/Pt5bYFj8nMBrATWD/vmP8H+EZmdi4F8HdlM+nvx0EmR4uIV0XE1ojYumPHjqN5H0etqHHrXVMpwPTkGOc+ZiOXX3+Xy19JkrRCDPTghIh4PEXz6S93bH5J2YT6jPLn5xc6NzPfmZlbMnPLxo0bqy/sQbRayQMzcxw3Nd7z137uE07izp37+OpNji6VJGklqDK43QGc0vH85HLbgsdExBhwDHBf+fxk4GPAyzLzpvYJmXlH+Xs38EGKJtmB9cBMnWYr2bi29y29/+mHH8aGNZO8/Us3Hf5gSZI08KoMblcCp0fEqRExAVwEXDrvmEspBh8AvAD4fGZmRBwL/G/g4sz8t/bBETEWERvKx+PA84DrKnwPR+3ePXUANqzpfXBbNT7KK59xKv/63Xv51u0/6PnrS5KkpVVZcCv7rL0GuBy4AfhoZl4fEW+KiAvKw94FrI+IbcDrgPaUIa8BTgPeMG/aj0ng8oi4Briaosbub6p6D0vh3j1F17x+BDeAl5zzSNatGuOvvritL68vSZKWTqU95jPzMuCyedve0PF4H/DCBc57M/Dmg1z2yUtZxqq1g9vGtRN9ef01k2O84umn8pef+y7fvXs3p5+4ti/lkCRJR2+gByesBDt297fGDeAXnraZqYlR3v5F+7pJkrScGdwqdu+eOuOjwTGrez+qtO246Ql+dsspfOKa73PPrn19K4ckSTo6BreK3bunxvrpSQ4y3VzPvOJpm2m0kg9ccVtfyyFJko6cwa1iO3bX+jIVyHybN0xz3mNP4ANXfI9ao9nv4kiSpCNgcKvYvXtqbFjTn4EJ873i6Zu5d0+dT37rzn4XRZIkHQGDW8WK4Nb/GjeAHzttA6edsIb3fOVWl8GSJGkZMrhVqNVK7ttTZ8MANJUCRASveNpmrr1jJ9+4zQl5JUlabgxuFdo5O0ejlQNT4wbw02dtYmpilEuuur3fRZEkSYtkcKvQgVUTBqOPG8D05BjnP+EkPvmtO9k35yAFSZKWE4NbhXbsXzVhcGrcAF7wpJPZXWvw6W/f3e+iSJKkRTC4Vai9asLGAWoqBTjnUevZdOxq/vGq7f0uiiRJWgSDW4Xu3VMH+rvc1UJGRoKfPmsT//rdHdztSgqSJC0bBrcK3bunxthIf5e7OpifedImWgn//M07+l0USZLUJYNbhe7dXWP9mglGRvq73NVCHrVxDU96xLH8w1XbndNNkqRlwuBWoUGafHchFz3lEWy7Zw9X3vpAv4siSZK6YHCr0L176gM3orTT8574MNauGuODV3yv30WRJEldMLhVaNBr3KYmxviZszZx2bV3cf/eer+LI0mSDsPgVpHMHPjgBvBzT30k9WbLlRQkSVoGDG4V2Tk7x1wzB2rVhIU89qS1bHnkcXzo67fTajlIQZKkQWZwq8i9A7pqwkJecs4juOXevXz5uzv6XRRJknQIBreK7Ng9mJPvLuS5T3gYJx+3mj++7N+Za7b6XRxJknQQBreKLKcat1Xjo/z+887gxrt3876vOsJUkqRBZXCrSHud0uVQ4wbwnDNO5NzHbOTPP/Md7tntMliSJA0ig1tFrr1jJxvWTHDc1OAtd7WQiOCNP3UG+xpN3vzJG1xNQZKkAWRwq0Bm8m/b7uVHH72BiMFb7upgHrVxDb/yzNO49Fvf53Uf/Ra1RrPfRZIkSR3G+l2AleimHXu5Z3eNpz96fb+Lsmi/8R9PZ2wk+NPPfIfv/2CW///nzuKEtav6XSxJkoQ1bpX4yk33AvC0R2/oc0kWLyL4tWedzp+/6Ey+cdsD/NhbvsDvfexabr13b7+LJknS0LPGrQJf2XYfm45dzSnHr+53UY7Y88/axBNPOZZ3fvkm/mHrdj5wxW386KPW88ItJ/PcJzyM1ROj/S6iJElDxxq3JdZsJV+9+T6eftr6ZdW/bSGnbpjmj3/mR/g/v/Pj/OazH8P3d87yuo9+i6f80We5+B+v4cpb76fpaguSJPWMNW5L7IY7d7Fzdm5ZNpMezAnrVvFrzzqd15x3Gl+/5X7+4artfPzq7/PhK2/nuKlxzn3MRp752I084/SNy2b6E0mSliOD2xL7t21F/7YfXYYDEw4nInjqo9bz1Eet540XPJ7P3XA3X7pxB1/6zg4+fvX3iYAfOflYLnjiw7nwzIcb4iRJWmIGtyX2lZvu47QT1nDiupU9EnPN5BgXnrmJC8/cRKuVXPf9nXzpxh18+tt384ef/Db/72U3cN7jTuCl5zySZ5y2gZGR5d1sLEnSIKi0j1tEnB8RN0bEtoi4eIH9kxHxkXL/FRGxuWPf68vtN0bET3R7zX668a7dXHHLfTxtBda2HcrISPAjJx/Lrz3rdD7xaz/GZ157Lr/0jFP55m0P8PJ3f50f/9Mv8s4v38QDe+v9LqokSctaVDVDfkSMAt8Bng1sB64EXpyZ3+445leAH8nMV0fERcBPZ+aLIuIM4EPA2cDDgc8CjylPO+Q1F7Jly5bcunXrkr6/+W64cxcv+dsrGB8NPvrLP8oj109X+nrLQb3R4l+uv4u//+r3+Pqt9zMxNsJPPP4knvW4E/gPj9nIcdMT/S6iJEkDJyKuyswtC+2rsqn0bGBbZt5cFuLDwIVAZ8i6EHhj+fgS4H9FMRTzQuDDmVkDbomIbeX16OKaPXfdHTt56buuYPX4KB965TmGttLE2AgXPPHhXPDEh/Pvd+3iA1+7jcuuvZNPfKvoD7d5/TSnn7CGUzdOs356gmOnJjh+aoLjpidYt2ps/6jcCAiglbBvrsneWoOZuSaz9SYz9Saz9QZ7600yYfX4CFMTY6yaGGVqfJTVE+XP+ChT5e/287HRxVU4ZyaZkOXjRiupN1vMNVrUmy3qjfKnfAwwOhKMRPEzOhKMjhR9BUfL5yMjwUjAaLQfR/n4oeeOBEc9UjkzabaKsjdaSaPZYq6ZNFotGs1krtmi0Sp+ZxZ/w/HREcZHg4nR8vFY8Xx8ZMQmcC17i6m86PbQbq/Y7Wt3e71mK5mpF9+Rs3PF9+NMrVH8njvwuNZoMTk2UnwnToyyquP7cf/jju/LidGRZTNLQvu7ea78bptrPvi7rdlqld99xXGjEYyNxv7vubHREcZHit9j5ffe2EjxHTwo96DK4LYJuL3j+XbgqQc7JjMbEbETWF9u/9q8czeVjw93zZ675KrtTE+M8aFXnsMj1k/1uzgD6XEnreMPn/8E/uCCx3PtHTv58nd2cMNdu7jxrt184cZ7mGv2flqR4suo/FJMSB4czIrfPS/WIUU75JXhbiSiLPOBsvfyvYyNFF96QXVfaP3+ruz+H+su/xFe4n/8uz2wX+Vb6nAyaP9NDoORKP4nbpBlQiuz0n9LxkeDsZERPvyqc3jiKcdW9jqHs2IHJ0TEq4BXlU/3RMSNVb/mI19/RKdtAO5d2pIsS96Hgveh4H04wHtR8D4UvA+Fvt2HM9/ck5d55MF2VBnc7gBO6Xh+crltoWO2R8QYcAxw32HOPdw1AcjMdwLvPNLC90pEbD1YO/Yw8T4UvA8F78MB3ouC96HgfSgM832osu7zSuD0iDg1IiaAi4BL5x1zKfDy8vELgM9nUa9+KXBROer0VOB04OtdXlOSJGlFqqzGreyz9hrgcmAUeHdmXh8RbwK2ZualwLuA95eDD+6nCGKUx32UYtBBA/jVzGwCLHTNqt6DJEnSIKm0j1tmXgZcNm/bGzoe7wNeeJBz/wj4o26uucwNfHNuj3gfCt6HgvfhAO9FwftQ8D4UhvY+VDaPmyRJkpbWYI/vlSRJ0n4Gtz4Z5KW7qhQRp0TEFyLi2xFxfUT8ern9+Ij4TER8t/x9XL/L2gsRMRoR34yIT5bPTy2Xf9tWLgc3FMtLRMSxEXFJRPx7RNwQET86jJ+JiHht+d/FdRHxoYhYNQyfiYh4d0TcExHXdWxb8O8fhb8s78c1EfGk/pV86R3kXvx/5X8b10TExyLi2I59Cy4PudwtdB869v1mRGREbCifr+jPxHwGtz4olwN7G/Bc4AzgxeUyX8OgAfxmZp4BnAP8avneLwY+l5mnA58rnw+DXwdu6Hj+FuCtmXka8ADwi30pVe/9BfAvmfk44IkU92SoPhMRsQn4L8CWzHwCxQCsixiOz8R7gPPnbTvY3/+5FDMNnE4xV+fbe1TGXnkPD70XnwGekJk/QrHs4+sByu/Oi4DHl+f8Vfnvy0rwHh56H4iIU4DnALd1bF7pn4kHMbj1x/7lwDKzDrSX7lrxMvPOzPxG+Xg3xT/Qmyje/3vLw94LPL8/JeydiDgZ+Engb8vnAZxHsfwbDM99OAY4l2KUOZlZz8wfMISfCYoBY6vLeS2ngDsZgs9EZn6ZYmaBTgf7+18IvC8LXwOOjYiH9aak1VvoXmTmpzOzUT79GsUcptCxPGRm3gJ0Lg+5rB3kMwHwVuC/8uDFNlb0Z2I+g1t/LLQc2KaDHLtiRcRm4CzgCuDEzLyz3HUXcGKfitVLf07xBdQqn68HftDxBT0sn4tTgR3A35XNxn8bEdMM2WciM+8A/oSiJuFOYCdwFcP5mYCD//2H/fvzPwOfKh8P1b2IiAuBOzLzW/N2DdV9MLipLyJiDfCPwG9k5q7OfeUkzCt6uHNEPA+4JzOv6ndZBsAY8CTg7Zl5FrCXec2iQ/KZOI6i5uBU4OHANAs0FQ2jYfj7dyMifo+iu8kH+l2WXouIKeB3gTcc7tiVzuDWH90sB7ZiRcQ4RWj7QGb+U7n57nbVdvn7nn6Vr0eeDlwQEbdSNJWfR9HP69iymQyG53OxHdiemVeUzy+hCHLD9pn4j8AtmbkjM+eAf6L4nAzjZwIO/vcfyu/PiHgF8DzgJXlgHq9huhePpvifmm+V35snA9+IiJMYrvtgcOuToV26q+zH9S7ghsz8s45dncufvRz4eK/L1kuZ+frMPDkzN1P8/T+fmS8BvkCx/BsMwX0AyMy7gNsj4rHlpmdRrJoyVJ8JiibScyJiqvzvpH0fhu4zUTrY3/9S4GXlSMJzgJ0dTaorUkScT9Gt4oLMnOnYdbDlIVeczLw2M0/IzM3l9+Z24Enl98dQfSacgLdPIuI/UfRxai/d9ZBVIlaiiPgx4F+BaznQt+t3Kfq5fRR4BPA94Gczc6GOqStORDwT+K3MfF5EPIqiBu544JvASzOz1s/y9UJEnEkxSGMCuBn4BYr/sRyqz0RE/AHwIormsG8Cv0TRV2dFfyYi4kPAM4ENwN3Afwf+mQX+/mWo/V8UzcgzwC9k5tZ+lLsKB7kXrwcmgfvKw76Wma8uj/89in5vDYquJ5+af83laKH7kJnv6th/K8UI7HtX+mdiPoObJEnSMmFTqSRJ0jJhcJMkSVomDG6SJEnLhMFNkiRpmTC4SZIkLRMGN0krXkRsjojr5m17Y0T81iHO2RIRf1k+fmZEPG3euXdExNURcV1EXHCQa7w6Il62VO9DksYOf4gkDZ9yHqj2XFDPBPYAX+k45K2Z+ScR8UPAv0bECZnZnpuQiBjLzL/uWYElDQVr3CQNtYj4YkS8JSK+HhHfiYhnlNufGRGfjIjNwKuB15Y1bM/oPD8zb6CY/HRDea0/j4itwK931upFxGkR8dmI+FZEfCMiHl1u/+2IuDIirikn4JWkgzK4SRKMZebZwG9QzFS/X2beCvw1RQ3bmZn5r537I+KpFKuA7Cg3TWTmlsz803mv8QHgbZn5ROBpwJ0R8RyKZYrOBs4EnhwR5y7tW5O0kthUKmkYHGyJmPb2fyp/XwVs7vKar42IlwK7gRdlZhYr7/CR+QdGxFpgU2Z+DCAz95XbnwM8h2IpK4A1FEHuy12WQdKQMbhJGgb3AcfN23Y8cEv5uL32Z5Puvxffmpl/ssD2vYsoVwB/nJnvWMQ5koaYTaWSVrzM3EPRNHkeQEQcT7Eg9f/p8hK7gbVH8fq7ge0R8fzy9ScjYgq4HPjPEbGm3L4pIk440teRtPIZ3CQNi5cBvx8RVwOfB/4gM2/q8txPAD+90OCERfh54L9ExDUUo1NPysxPAx8EvhoR1wKXcBQBUdLKF5kH6/ohSZKkQWKNmyRJ0jJhcJMkSVomDG6SJEnLhMFNkiRpmTC4SZIkLRMGN0mSpGXC4CZJkrRMGNwkSZKWif8Lb1UJLiHxw7wAAAAASUVORK5CYII=\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"source": [
"### Customer Countries and which one is the best spender overall\n",
"We need to group by `Country` and `CustomerID`, then take the sum of `total_price`. After that, we draw boxplot side by side countries."
],
"metadata": {
"id": "I1cwGa6vMEUs"
}
},
{
"cell_type": "code",
"source": [
"country_user = (ecommerce\n",
" .groupby(['Country','CustomerID'])\n",
" .agg(total_spend=('total_price','sum'))\n",
" .reset_index())\n",
"country_user.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "aPhtYdxAL4oB",
"outputId": "f989360a-5678-4fca-e79e-250b4dc18429"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Country CustomerID total_spend\n",
"0 Australia 12388 17.70\n",
"1 Australia 12393 16.60\n",
"2 Australia 12415 850.95\n",
"3 Australia 12431 51.75\n",
"4 Austria 12358 71.40"
],
"text/html": [
"\n",
" <div id=\"df-4cf5af4d-0ee9-419d-9e2b-4b8e2c27da5e\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Country</th>\n",
" <th>CustomerID</th>\n",
" <th>total_spend</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Australia</td>\n",
" <td>12388</td>\n",
" <td>17.70</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Australia</td>\n",
" <td>12393</td>\n",
" <td>16.60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Australia</td>\n",
" <td>12415</td>\n",
" <td>850.95</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Australia</td>\n",
" <td>12431</td>\n",
" <td>51.75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Austria</td>\n",
" <td>12358</td>\n",
" <td>71.40</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-4cf5af4d-0ee9-419d-9e2b-4b8e2c27da5e')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-4cf5af4d-0ee9-419d-9e2b-4b8e2c27da5e button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-4cf5af4d-0ee9-419d-9e2b-4b8e2c27da5e');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 55
}
]
},
{
"cell_type": "code",
"source": [
"country_user.Country.value_counts()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1Vae4ehTNImE",
"outputId": "43c35977-ca76-4c6f-ab78-c01e22029608"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"United Kingdom 1735\n",
"Germany 49\n",
"France 43\n",
"Switzerland 12\n",
"Spain 12\n",
"Belgium 11\n",
"Portugal 8\n",
"Sweden 5\n",
"Norway 5\n",
"Finland 5\n",
"Australia 4\n",
"Austria 4\n",
"Italy 4\n",
"Greece 4\n",
"Channel Islands 4\n",
"Cyprus 4\n",
"Denmark 3\n",
"Netherlands 3\n",
"EIRE 3\n",
"Unspecified 3\n",
"Israel 2\n",
"Japan 2\n",
"Malta 1\n",
"Poland 1\n",
"RSA 1\n",
"Singapore 1\n",
"Lebanon 1\n",
"Canada 1\n",
"United Arab Emirates 1\n",
"Brazil 1\n",
"Iceland 1\n",
"Name: Country, dtype: int64"
]
},
"metadata": {},
"execution_count": 56
}
]
},
{
"cell_type": "code",
"source": [
"# filter to top 5 contries (most CustomerID) only\n",
"top5_countries = ['United Kingdom','Germany','France','Switzerland','Spain']\n",
"country_user = country_user[country_user['Country'].isin(top5_countries)]\n",
"country_user"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"id": "4IMAna8wNM_L",
"outputId": "604f3e98-e400-49d4-8055-7388d70762d7"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Country CustomerID total_spend\n",
"40 France 12490 148.40\n",
"41 France 12491 26.85\n",
"42 France 12494 49.20\n",
"43 France 12508 9.60\n",
"44 France 12509 8.50\n",
"... ... ... ...\n",
"1926 United Kingdom 18272 44.10\n",
"1927 United Kingdom 18276 7.90\n",
"1928 United Kingdom 18278 15.00\n",
"1929 United Kingdom 18280 17.85\n",
"1930 United Kingdom 18283 14.00\n",
"\n",
"[1851 rows x 3 columns]"
],
"text/html": [
"\n",
" <div id=\"df-ee771fb3-26d0-4ecc-9f7f-c13a2a1c892a\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Country</th>\n",
" <th>CustomerID</th>\n",
" <th>total_spend</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>France</td>\n",
" <td>12490</td>\n",
" <td>148.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>France</td>\n",
" <td>12491</td>\n",
" <td>26.85</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>France</td>\n",
" <td>12494</td>\n",
" <td>49.20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>France</td>\n",
" <td>12508</td>\n",
" <td>9.60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>France</td>\n",
" <td>12509</td>\n",
" <td>8.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1926</th>\n",
" <td>United Kingdom</td>\n",
" <td>18272</td>\n",
" <td>44.10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1927</th>\n",
" <td>United Kingdom</td>\n",
" <td>18276</td>\n",
" <td>7.90</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1928</th>\n",
" <td>United Kingdom</td>\n",
" <td>18278</td>\n",
" <td>15.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1929</th>\n",
" <td>United Kingdom</td>\n",
" <td>18280</td>\n",
" <td>17.85</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1930</th>\n",
" <td>United Kingdom</td>\n",
" <td>18283</td>\n",
" <td>14.00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1851 rows × 3 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ee771fb3-26d0-4ecc-9f7f-c13a2a1c892a')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-ee771fb3-26d0-4ecc-9f7f-c13a2a1c892a button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-ee771fb3-26d0-4ecc-9f7f-c13a2a1c892a');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 57
}
]
},
{
"cell_type": "code",
"source": [
"sns.boxplot(data=country_user,\n",
" x='Country',\n",
" y='total_spend')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 297
},
"id": "njdcNe_CN2rJ",
"outputId": "f0724e27-ed47-43c8-f940-bd59ca7d9e0b"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7faccdcb11d0>"
]
},
"metadata": {},
"execution_count": 58
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"# Clip max spend at 500 so that we can easily compare the boxplots\n",
"country_user['total_spend'] = country_user['total_spend'].clip(upper=500)"
],
"metadata": {
"id": "vlTxPHt2OFvC"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"plt.figure(figsize=(12,6))\n",
"sns.boxplot(data=country_user,\n",
" x='Country',\n",
" y='total_spend')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 406
},
"id": "ZbTfOWTJOUvQ",
"outputId": "64e91281-a0ce-4c80-99e2-4b6a9db08623"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7facd022ff90>"
]
},
"metadata": {},
"execution_count": 60
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"source": [
"### Monthly time series of num buyers and total omzet"
],
"metadata": {
"id": "YO4KgJthOmtI"
}
},
{
"cell_type": "code",
"source": [
"# derive InvoiceMonth column\n",
"ecommerce['InvoiceMonth'] = ecommerce['InvoiceDate'].dt.to_period('M')\n",
"ecommerce.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 406
},
"id": "cbVW-cMnOY0k",
"outputId": "117c86dd-1be9-43d8-c124-01132b490933"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" InvoiceNo StockCode Description Quantity \\\n",
"0 554697 21166 COOK WITH WINE METAL SIGN 1 \n",
"1 561038 82482 WOODEN PICTURE FRAME WHITE FINISH 2 \n",
"2 560552 23192 BUNDLE OF 3 ALPHABET EXERCISE BOOKS 1 \n",
"3 559884 85183B CHARLIE & LOLA WASTEPAPER BIN FLORA 12 \n",
"4 544450 21789 KIDS RAIN MAC PINK 3 \n",
"\n",
" InvoiceDate UnitPrice CustomerID Country total_price \\\n",
"0 2011-05-25 17:31:00 2.08 14584 United Kingdom 2.08 \n",
"1 2011-07-24 11:58:00 2.55 17114 United Kingdom 5.10 \n",
"2 2011-07-19 12:54:00 1.65 15311 United Kingdom 1.65 \n",
"3 2011-07-13 11:34:00 1.25 16843 United Kingdom 15.00 \n",
"4 2011-02-20 12:23:00 0.85 17811 United Kingdom 2.55 \n",
"\n",
" InvoiceMonth \n",
"0 2011-05 \n",
"1 2011-07 \n",
"2 2011-07 \n",
"3 2011-07 \n",
"4 2011-02 "
],
"text/html": [
"\n",
" <div id=\"df-77ea7b35-85ee-44c6-a003-0675cd02ca91\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>InvoiceNo</th>\n",
" <th>StockCode</th>\n",
" <th>Description</th>\n",
" <th>Quantity</th>\n",
" <th>InvoiceDate</th>\n",
" <th>UnitPrice</th>\n",
" <th>CustomerID</th>\n",
" <th>Country</th>\n",
" <th>total_price</th>\n",
" <th>InvoiceMonth</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>554697</td>\n",
" <td>21166</td>\n",
" <td>COOK WITH WINE METAL SIGN</td>\n",
" <td>1</td>\n",
" <td>2011-05-25 17:31:00</td>\n",
" <td>2.08</td>\n",
" <td>14584</td>\n",
" <td>United Kingdom</td>\n",
" <td>2.08</td>\n",
" <td>2011-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>561038</td>\n",
" <td>82482</td>\n",
" <td>WOODEN PICTURE FRAME WHITE FINISH</td>\n",
" <td>2</td>\n",
" <td>2011-07-24 11:58:00</td>\n",
" <td>2.55</td>\n",
" <td>17114</td>\n",
" <td>United Kingdom</td>\n",
" <td>5.10</td>\n",
" <td>2011-07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>560552</td>\n",
" <td>23192</td>\n",
" <td>BUNDLE OF 3 ALPHABET EXERCISE BOOKS</td>\n",
" <td>1</td>\n",
" <td>2011-07-19 12:54:00</td>\n",
" <td>1.65</td>\n",
" <td>15311</td>\n",
" <td>United Kingdom</td>\n",
" <td>1.65</td>\n",
" <td>2011-07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>559884</td>\n",
" <td>85183B</td>\n",
" <td>CHARLIE &amp; LOLA WASTEPAPER BIN FLORA</td>\n",
" <td>12</td>\n",
" <td>2011-07-13 11:34:00</td>\n",
" <td>1.25</td>\n",
" <td>16843</td>\n",
" <td>United Kingdom</td>\n",
" <td>15.00</td>\n",
" <td>2011-07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>544450</td>\n",
" <td>21789</td>\n",
" <td>KIDS RAIN MAC PINK</td>\n",
" <td>3</td>\n",
" <td>2011-02-20 12:23:00</td>\n",
" <td>0.85</td>\n",
" <td>17811</td>\n",
" <td>United Kingdom</td>\n",
" <td>2.55</td>\n",
" <td>2011-02</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-77ea7b35-85ee-44c6-a003-0675cd02ca91')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-77ea7b35-85ee-44c6-a003-0675cd02ca91 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-77ea7b35-85ee-44c6-a003-0675cd02ca91');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 61
}
]
},
{
"cell_type": "code",
"source": [
"# monthly_data\n",
"monthly_data = (ecommerce\n",
" .groupby('InvoiceMonth')\n",
" .agg(num_buyer=('CustomerID','nunique'),\n",
" total_omzet=('total_price','sum'))\n",
" .reset_index())\n",
"\n",
"monthly_data['InvoiceMonth'] = monthly_data['InvoiceMonth'].astype(str)\n",
"monthly_data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 457
},
"id": "d8xO44A1O1Eq",
"outputId": "766f9fb6-eea0-4879-8d6d-82369404f106"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" InvoiceMonth num_buyer total_omzet\n",
"0 2010-12 221 10810.55\n",
"1 2011-01 209 6247.52\n",
"2 2011-02 197 6152.46\n",
"3 2011-03 247 7162.64\n",
"4 2011-04 211 6357.63\n",
"5 2011-05 254 6987.24\n",
"6 2011-06 224 7203.93\n",
"7 2011-07 231 7569.27\n",
"8 2011-08 237 9904.91\n",
"9 2011-09 328 9761.11\n",
"10 2011-10 374 10177.38\n",
"11 2011-11 500 17948.84\n",
"12 2011-12 144 5496.43"
],
"text/html": [
"\n",
" <div id=\"df-9a99dea4-557b-432b-926e-f2bac67efe00\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>InvoiceMonth</th>\n",
" <th>num_buyer</th>\n",
" <th>total_omzet</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2010-12</td>\n",
" <td>221</td>\n",
" <td>10810.55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2011-01</td>\n",
" <td>209</td>\n",
" <td>6247.52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2011-02</td>\n",
" <td>197</td>\n",
" <td>6152.46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2011-03</td>\n",
" <td>247</td>\n",
" <td>7162.64</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2011-04</td>\n",
" <td>211</td>\n",
" <td>6357.63</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2011-05</td>\n",
" <td>254</td>\n",
" <td>6987.24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2011-06</td>\n",
" <td>224</td>\n",
" <td>7203.93</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2011-07</td>\n",
" <td>231</td>\n",
" <td>7569.27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>2011-08</td>\n",
" <td>237</td>\n",
" <td>9904.91</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>2011-09</td>\n",
" <td>328</td>\n",
" <td>9761.11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>2011-10</td>\n",
" <td>374</td>\n",
" <td>10177.38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>2011-11</td>\n",
" <td>500</td>\n",
" <td>17948.84</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>2011-12</td>\n",
" <td>144</td>\n",
" <td>5496.43</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9a99dea4-557b-432b-926e-f2bac67efe00')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-9a99dea4-557b-432b-926e-f2bac67efe00 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-9a99dea4-557b-432b-926e-f2bac67efe00');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 62
}
]
},
{
"cell_type": "code",
"source": [
"# num buyer progression\n",
"plt.figure(figsize=(12,7))\n",
"sns.lineplot(data=monthly_data,\n",
" x='InvoiceMonth',\n",
" y='num_buyer')\n",
"plt.xticks(rotation=45)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 504
},
"id": "u4HB31jUPSDu",
"outputId": "6b421f4e-9136-4d68-9d5c-5fba7637d98e"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],\n",
" <a list of 13 Text major ticklabel objects>)"
]
},
"metadata": {},
"execution_count": 63
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 864x504 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"# omzet progression\n",
"plt.figure(figsize=(12,7))\n",
"sns.lineplot(data=monthly_data,\n",
" x='InvoiceMonth',\n",
" y='total_omzet',\n",
" color='red')\n",
"plt.xticks(rotation=45)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 504
},
"id": "iDsVVUTWP8Ur",
"outputId": "bc4bf78f-09b0-4d1b-be7a-263fe2ca4b90"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],\n",
" <a list of 13 Text major ticklabel objects>)"
]
},
"metadata": {},
"execution_count": 64
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 864x504 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "q4ZnNcz-QR_H"
},
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment