diff --git a/lab-dw-aggregating.ipynb b/lab-dw-aggregating.ipynb
index fadd718..de0ed24 100644
--- a/lab-dw-aggregating.ipynb
+++ b/lab-dw-aggregating.ipynb
@@ -24,6 +24,243 @@
"This dataset contains information such as customer demographics, policy details, vehicle information, and the customer's response to the last marketing campaign. Our goal is to explore and analyze this data by first performing data cleaning, formatting, and structuring."
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "a34717ca",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer | \n",
+ " state | \n",
+ " customer_lifetime_value | \n",
+ " response | \n",
+ " coverage | \n",
+ " education | \n",
+ " effective_to_date | \n",
+ " employmentstatus | \n",
+ " gender | \n",
+ " income | \n",
+ " ... | \n",
+ " number_of_open_complaints | \n",
+ " number_of_policies | \n",
+ " policy_type | \n",
+ " policy | \n",
+ " renew_offer_type | \n",
+ " sales_channel | \n",
+ " total_claim_amount | \n",
+ " vehicle_class | \n",
+ " vehicle_size | \n",
+ " vehicle_type | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " DK49336 | \n",
+ " Arizona | \n",
+ " 4809.216960 | \n",
+ " No | \n",
+ " Basic | \n",
+ " College | \n",
+ " 2/18/11 | \n",
+ " Employed | \n",
+ " M | \n",
+ " 48029 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 9 | \n",
+ " Corporate Auto | \n",
+ " Corporate L3 | \n",
+ " Offer3 | \n",
+ " Agent | \n",
+ " 292.800000 | \n",
+ " Four-Door Car | \n",
+ " Medsize | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " KX64629 | \n",
+ " California | \n",
+ " 2228.525238 | \n",
+ " No | \n",
+ " Basic | \n",
+ " College | \n",
+ " 1/18/11 | \n",
+ " Unemployed | \n",
+ " F | \n",
+ " 0 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " Personal Auto | \n",
+ " Personal L3 | \n",
+ " Offer4 | \n",
+ " Call Center | \n",
+ " 744.924331 | \n",
+ " Four-Door Car | \n",
+ " Medsize | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " LZ68649 | \n",
+ " Washington | \n",
+ " 14947.917300 | \n",
+ " No | \n",
+ " Basic | \n",
+ " Bachelor | \n",
+ " 2/10/11 | \n",
+ " Employed | \n",
+ " M | \n",
+ " 22139 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 2 | \n",
+ " Personal Auto | \n",
+ " Personal L3 | \n",
+ " Offer3 | \n",
+ " Call Center | \n",
+ " 480.000000 | \n",
+ " SUV | \n",
+ " Medsize | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " XL78013 | \n",
+ " Oregon | \n",
+ " 22332.439460 | \n",
+ " Yes | \n",
+ " Extended | \n",
+ " College | \n",
+ " 1/11/11 | \n",
+ " Employed | \n",
+ " M | \n",
+ " 49078 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 2 | \n",
+ " Corporate Auto | \n",
+ " Corporate L3 | \n",
+ " Offer2 | \n",
+ " Branch | \n",
+ " 484.013411 | \n",
+ " Four-Door Car | \n",
+ " Medsize | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " QA50777 | \n",
+ " Oregon | \n",
+ " 9025.067525 | \n",
+ " No | \n",
+ " Premium | \n",
+ " Bachelor | \n",
+ " 1/17/11 | \n",
+ " Medical Leave | \n",
+ " F | \n",
+ " 23675 | \n",
+ " ... | \n",
+ " NaN | \n",
+ " 7 | \n",
+ " Personal Auto | \n",
+ " Personal L2 | \n",
+ " Offer1 | \n",
+ " Branch | \n",
+ " 707.925645 | \n",
+ " Four-Door Car | \n",
+ " Medsize | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 25 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer state customer_lifetime_value response coverage education \\\n",
+ "0 DK49336 Arizona 4809.216960 No Basic College \n",
+ "1 KX64629 California 2228.525238 No Basic College \n",
+ "2 LZ68649 Washington 14947.917300 No Basic Bachelor \n",
+ "3 XL78013 Oregon 22332.439460 Yes Extended College \n",
+ "4 QA50777 Oregon 9025.067525 No Premium Bachelor \n",
+ "\n",
+ " effective_to_date employmentstatus gender income ... \\\n",
+ "0 2/18/11 Employed M 48029 ... \n",
+ "1 1/18/11 Unemployed F 0 ... \n",
+ "2 2/10/11 Employed M 22139 ... \n",
+ "3 1/11/11 Employed M 49078 ... \n",
+ "4 1/17/11 Medical Leave F 23675 ... \n",
+ "\n",
+ " number_of_open_complaints number_of_policies policy_type policy \\\n",
+ "0 0.0 9 Corporate Auto Corporate L3 \n",
+ "1 0.0 1 Personal Auto Personal L3 \n",
+ "2 0.0 2 Personal Auto Personal L3 \n",
+ "3 0.0 2 Corporate Auto Corporate L3 \n",
+ "4 NaN 7 Personal Auto Personal L2 \n",
+ "\n",
+ " renew_offer_type sales_channel total_claim_amount vehicle_class \\\n",
+ "0 Offer3 Agent 292.800000 Four-Door Car \n",
+ "1 Offer4 Call Center 744.924331 Four-Door Car \n",
+ "2 Offer3 Call Center 480.000000 SUV \n",
+ "3 Offer2 Branch 484.013411 Four-Door Car \n",
+ "4 Offer1 Branch 707.925645 Four-Door Car \n",
+ "\n",
+ " vehicle_size vehicle_type \n",
+ "0 Medsize NaN \n",
+ "1 Medsize NaN \n",
+ "2 Medsize A \n",
+ "3 Medsize A \n",
+ "4 Medsize NaN \n",
+ "\n",
+ "[5 rows x 25 columns]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "\n",
+ "df_marketing = pd.read_csv(\"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/marketing_customer_analysis.csv\")\n",
+ "df_marketing.columns = (\n",
+ " df_marketing.columns\n",
+ " .str.strip() # elimina espacios alrededor\n",
+ " .str.lower() # convierte a minúsculas\n",
+ " .str.replace(\" \", \"_\")\n",
+ " \n",
+ ")\n",
+ "\n",
+ "df_marketing = df_marketing.drop(columns=[\"unnamed:_0\"])\n",
+ "\n",
+ "display(df_marketing.head())"
+ ]
+ },
{
"cell_type": "markdown",
"id": "9c98ddc5-b041-4c94-ada1-4dfee5c98e50",
@@ -36,6 +273,405 @@
" - have a response \"Yes\" to the last marketing campaign."
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "144f1fb5",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer | \n",
+ " state | \n",
+ " customer_lifetime_value | \n",
+ " response | \n",
+ " coverage | \n",
+ " education | \n",
+ " effective_to_date | \n",
+ " employmentstatus | \n",
+ " gender | \n",
+ " income | \n",
+ " ... | \n",
+ " number_of_open_complaints | \n",
+ " number_of_policies | \n",
+ " policy_type | \n",
+ " policy | \n",
+ " renew_offer_type | \n",
+ " sales_channel | \n",
+ " total_claim_amount | \n",
+ " vehicle_class | \n",
+ " vehicle_size | \n",
+ " vehicle_type | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 | \n",
+ " XL78013 | \n",
+ " Oregon | \n",
+ " 22332.439460 | \n",
+ " Yes | \n",
+ " Extended | \n",
+ " College | \n",
+ " 1/11/11 | \n",
+ " Employed | \n",
+ " M | \n",
+ " 49078 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 2 | \n",
+ " Corporate Auto | \n",
+ " Corporate L3 | \n",
+ " Offer2 | \n",
+ " Branch | \n",
+ " 484.013411 | \n",
+ " Four-Door Car | \n",
+ " Medsize | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " FM55990 | \n",
+ " California | \n",
+ " 5989.773931 | \n",
+ " Yes | \n",
+ " Premium | \n",
+ " College | \n",
+ " 1/19/11 | \n",
+ " Employed | \n",
+ " M | \n",
+ " 66839 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " Personal Auto | \n",
+ " Personal L1 | \n",
+ " Offer2 | \n",
+ " Branch | \n",
+ " 739.200000 | \n",
+ " Sports Car | \n",
+ " Medsize | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " CW49887 | \n",
+ " California | \n",
+ " 4626.801093 | \n",
+ " Yes | \n",
+ " Basic | \n",
+ " Master | \n",
+ " 1/16/11 | \n",
+ " Employed | \n",
+ " F | \n",
+ " 79487 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " Special Auto | \n",
+ " Special L1 | \n",
+ " Offer2 | \n",
+ " Branch | \n",
+ " 547.200000 | \n",
+ " SUV | \n",
+ " Medsize | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " NJ54277 | \n",
+ " California | \n",
+ " 3746.751625 | \n",
+ " Yes | \n",
+ " Extended | \n",
+ " College | \n",
+ " 2/26/11 | \n",
+ " Employed | \n",
+ " F | \n",
+ " 41479 | \n",
+ " ... | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ " Personal Auto | \n",
+ " Personal L2 | \n",
+ " Offer2 | \n",
+ " Call Center | \n",
+ " 19.575683 | \n",
+ " Two-Door Car | \n",
+ " Large | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " MQ68407 | \n",
+ " Oregon | \n",
+ " 4376.363592 | \n",
+ " Yes | \n",
+ " Premium | \n",
+ " Bachelor | \n",
+ " 2/28/11 | \n",
+ " Employed | \n",
+ " F | \n",
+ " 63774 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " Personal Auto | \n",
+ " Personal L3 | \n",
+ " Offer2 | \n",
+ " Agent | \n",
+ " 60.036683 | \n",
+ " Four-Door Car | \n",
+ " Medsize | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 10844 | \n",
+ " FM31768 | \n",
+ " Arizona | \n",
+ " 5979.724161 | \n",
+ " Yes | \n",
+ " Extended | \n",
+ " High School or Below | \n",
+ " 2/7/11 | \n",
+ " Employed | \n",
+ " F | \n",
+ " 57693 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 3 | \n",
+ " Personal Auto | \n",
+ " Personal L1 | \n",
+ " Offer2 | \n",
+ " Agent | \n",
+ " 547.200000 | \n",
+ " Four-Door Car | \n",
+ " Medsize | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 10852 | \n",
+ " KZ80424 | \n",
+ " Washington | \n",
+ " 8382.478392 | \n",
+ " Yes | \n",
+ " Basic | \n",
+ " Bachelor | \n",
+ " 1/27/11 | \n",
+ " Employed | \n",
+ " M | \n",
+ " 25998 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 2 | \n",
+ " Personal Auto | \n",
+ " Personal L2 | \n",
+ " Offer2 | \n",
+ " Call Center | \n",
+ " 791.878042 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " 10872 | \n",
+ " XT67997 | \n",
+ " California | \n",
+ " 5979.724161 | \n",
+ " Yes | \n",
+ " Extended | \n",
+ " High School or Below | \n",
+ " 2/7/11 | \n",
+ " Employed | \n",
+ " F | \n",
+ " 57693 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 3 | \n",
+ " Personal Auto | \n",
+ " Personal L3 | \n",
+ " Offer2 | \n",
+ " Agent | \n",
+ " 547.200000 | \n",
+ " Four-Door Car | \n",
+ " Medsize | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 10887 | \n",
+ " BY78730 | \n",
+ " Oregon | \n",
+ " 8879.790017 | \n",
+ " Yes | \n",
+ " Basic | \n",
+ " High School or Below | \n",
+ " 2/3/11 | \n",
+ " Employed | \n",
+ " F | \n",
+ " 52583 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 7 | \n",
+ " Special Auto | \n",
+ " Special L2 | \n",
+ " Offer1 | \n",
+ " Agent | \n",
+ " 528.200860 | \n",
+ " SUV | \n",
+ " Small | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " 10897 | \n",
+ " MM70762 | \n",
+ " Arizona | \n",
+ " 9075.768214 | \n",
+ " Yes | \n",
+ " Basic | \n",
+ " Master | \n",
+ " 1/26/11 | \n",
+ " Employed | \n",
+ " M | \n",
+ " 37722 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 8 | \n",
+ " Personal Auto | \n",
+ " Personal L1 | \n",
+ " Offer1 | \n",
+ " Agent | \n",
+ " 158.077504 | \n",
+ " Sports Car | \n",
+ " Medsize | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1399 rows × 25 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer state customer_lifetime_value response coverage \\\n",
+ "3 XL78013 Oregon 22332.439460 Yes Extended \n",
+ "8 FM55990 California 5989.773931 Yes Premium \n",
+ "15 CW49887 California 4626.801093 Yes Basic \n",
+ "19 NJ54277 California 3746.751625 Yes Extended \n",
+ "27 MQ68407 Oregon 4376.363592 Yes Premium \n",
+ "... ... ... ... ... ... \n",
+ "10844 FM31768 Arizona 5979.724161 Yes Extended \n",
+ "10852 KZ80424 Washington 8382.478392 Yes Basic \n",
+ "10872 XT67997 California 5979.724161 Yes Extended \n",
+ "10887 BY78730 Oregon 8879.790017 Yes Basic \n",
+ "10897 MM70762 Arizona 9075.768214 Yes Basic \n",
+ "\n",
+ " education effective_to_date employmentstatus gender income \\\n",
+ "3 College 1/11/11 Employed M 49078 \n",
+ "8 College 1/19/11 Employed M 66839 \n",
+ "15 Master 1/16/11 Employed F 79487 \n",
+ "19 College 2/26/11 Employed F 41479 \n",
+ "27 Bachelor 2/28/11 Employed F 63774 \n",
+ "... ... ... ... ... ... \n",
+ "10844 High School or Below 2/7/11 Employed F 57693 \n",
+ "10852 Bachelor 1/27/11 Employed M 25998 \n",
+ "10872 High School or Below 2/7/11 Employed F 57693 \n",
+ "10887 High School or Below 2/3/11 Employed F 52583 \n",
+ "10897 Master 1/26/11 Employed M 37722 \n",
+ "\n",
+ " ... number_of_open_complaints number_of_policies policy_type \\\n",
+ "3 ... 0.0 2 Corporate Auto \n",
+ "8 ... 0.0 1 Personal Auto \n",
+ "15 ... 0.0 1 Special Auto \n",
+ "19 ... 1.0 1 Personal Auto \n",
+ "27 ... 0.0 1 Personal Auto \n",
+ "... ... ... ... ... \n",
+ "10844 ... 0.0 3 Personal Auto \n",
+ "10852 ... 0.0 2 Personal Auto \n",
+ "10872 ... 0.0 3 Personal Auto \n",
+ "10887 ... 0.0 7 Special Auto \n",
+ "10897 ... 0.0 8 Personal Auto \n",
+ "\n",
+ " policy renew_offer_type sales_channel total_claim_amount \\\n",
+ "3 Corporate L3 Offer2 Branch 484.013411 \n",
+ "8 Personal L1 Offer2 Branch 739.200000 \n",
+ "15 Special L1 Offer2 Branch 547.200000 \n",
+ "19 Personal L2 Offer2 Call Center 19.575683 \n",
+ "27 Personal L3 Offer2 Agent 60.036683 \n",
+ "... ... ... ... ... \n",
+ "10844 Personal L1 Offer2 Agent 547.200000 \n",
+ "10852 Personal L2 Offer2 Call Center 791.878042 \n",
+ "10872 Personal L3 Offer2 Agent 547.200000 \n",
+ "10887 Special L2 Offer1 Agent 528.200860 \n",
+ "10897 Personal L1 Offer1 Agent 158.077504 \n",
+ "\n",
+ " vehicle_class vehicle_size vehicle_type \n",
+ "3 Four-Door Car Medsize A \n",
+ "8 Sports Car Medsize NaN \n",
+ "15 SUV Medsize NaN \n",
+ "19 Two-Door Car Large A \n",
+ "27 Four-Door Car Medsize NaN \n",
+ "... ... ... ... \n",
+ "10844 Four-Door Car Medsize NaN \n",
+ "10852 NaN NaN A \n",
+ "10872 Four-Door Car Medsize NaN \n",
+ "10887 SUV Small A \n",
+ "10897 Sports Car Medsize A \n",
+ "\n",
+ "[1399 rows x 25 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_low = df_marketing [(df_marketing[\"total_claim_amount\"] < 1000) & (df_marketing[\"response\"] == \"Yes\")]\n",
+ "df_low"
+ ]
+ },
{
"cell_type": "markdown",
"id": "b9be383e-5165-436e-80c8-57d4c757c8c3",
@@ -48,6 +684,115 @@
" - compare these insights to `total_claim_amount` patterns, and discuss which segments appear most profitable or low-risk for the company."
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "19783d79",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " | \n",
+ " customer_lifetime_value | \n",
+ " monthly_premium_auto | \n",
+ "
\n",
+ " \n",
+ " policy_type | \n",
+ " gender | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Corporate Auto | \n",
+ " F | \n",
+ " 7712.63 | \n",
+ " 94.30 | \n",
+ "
\n",
+ " \n",
+ " M | \n",
+ " 7944.47 | \n",
+ " 92.19 | \n",
+ "
\n",
+ " \n",
+ " Personal Auto | \n",
+ " F | \n",
+ " 8339.79 | \n",
+ " 99.00 | \n",
+ "
\n",
+ " \n",
+ " M | \n",
+ " 7448.38 | \n",
+ " 91.09 | \n",
+ "
\n",
+ " \n",
+ " Special Auto | \n",
+ " F | \n",
+ " 7691.58 | \n",
+ " 92.31 | \n",
+ "
\n",
+ " \n",
+ " M | \n",
+ " 8247.09 | \n",
+ " 86.34 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer_lifetime_value monthly_premium_auto\n",
+ "policy_type gender \n",
+ "Corporate Auto F 7712.63 94.30\n",
+ " M 7944.47 92.19\n",
+ "Personal Auto F 8339.79 99.00\n",
+ " M 7448.38 91.09\n",
+ "Special Auto F 7691.58 92.31\n",
+ " M 8247.09 86.34"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "\n",
+ "\n",
+ "# Filtrar solo clientes que respondieron \"Yes\"\n",
+ "df_yes = df_marketing[df_marketing[\"response\"] == \"Yes\"]\n",
+ "\n",
+ "# Agrupar por policy_type y gender\n",
+ "pivot_result = (\n",
+ " df_yes\n",
+ " .groupby([\"policy_type\", \"gender\"])\n",
+ " [[\"customer_lifetime_value\", \"monthly_premium_auto\"]] # usa el nombre real de tu columna premium\n",
+ " .mean()\n",
+ " .round(2)\n",
+ ")\n",
+ "\n",
+ "display(pivot_result)\n"
+ ]
+ },
{
"cell_type": "markdown",
"id": "7050f4ac-53c5-4193-a3c0-8699b87196f0",
@@ -58,6 +803,38 @@
"3. Analyze the total number of customers who have policies in each state, and then filter the results to only include states where there are more than 500 customers."
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "2f5f7b1b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "state\n",
+ "California 3552\n",
+ "Oregon 2909\n",
+ "Arizona 1937\n",
+ "Nevada 993\n",
+ "Washington 888\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Contar clientes por estado\n",
+ "state_counts = df_marketing[\"state\"].value_counts()\n",
+ "\n",
+ "# Filtrar solo los que tienen más de 500\n",
+ "state_counts_filtered = state_counts[state_counts > 500]\n",
+ "\n",
+ "display(state_counts_filtered)\n"
+ ]
+ },
{
"cell_type": "markdown",
"id": "b60a4443-a1a7-4bbf-b78e-9ccdf9895e0d",
@@ -68,6 +845,143 @@
"4. Find the maximum, minimum, and median customer lifetime value by education level and gender. Write your conclusions."
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "b6ee2716",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " | \n",
+ " max | \n",
+ " min | \n",
+ " median | \n",
+ "
\n",
+ " \n",
+ " education | \n",
+ " gender | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Bachelor | \n",
+ " F | \n",
+ " 73225.96 | \n",
+ " 1904.00 | \n",
+ " 5640.51 | \n",
+ "
\n",
+ " \n",
+ " M | \n",
+ " 67907.27 | \n",
+ " 1898.01 | \n",
+ " 5548.03 | \n",
+ "
\n",
+ " \n",
+ " College | \n",
+ " F | \n",
+ " 61850.19 | \n",
+ " 1898.68 | \n",
+ " 5623.61 | \n",
+ "
\n",
+ " \n",
+ " M | \n",
+ " 61134.68 | \n",
+ " 1918.12 | \n",
+ " 6005.85 | \n",
+ "
\n",
+ " \n",
+ " Doctor | \n",
+ " F | \n",
+ " 44856.11 | \n",
+ " 2395.57 | \n",
+ " 5332.46 | \n",
+ "
\n",
+ " \n",
+ " M | \n",
+ " 32677.34 | \n",
+ " 2267.60 | \n",
+ " 5577.67 | \n",
+ "
\n",
+ " \n",
+ " High School or Below | \n",
+ " F | \n",
+ " 55277.45 | \n",
+ " 2144.92 | \n",
+ " 6039.55 | \n",
+ "
\n",
+ " \n",
+ " M | \n",
+ " 83325.38 | \n",
+ " 1940.98 | \n",
+ " 6286.73 | \n",
+ "
\n",
+ " \n",
+ " Master | \n",
+ " F | \n",
+ " 51016.07 | \n",
+ " 2417.78 | \n",
+ " 5729.86 | \n",
+ "
\n",
+ " \n",
+ " M | \n",
+ " 50568.26 | \n",
+ " 2272.31 | \n",
+ " 5579.10 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " max min median\n",
+ "education gender \n",
+ "Bachelor F 73225.96 1904.00 5640.51\n",
+ " M 67907.27 1898.01 5548.03\n",
+ "College F 61850.19 1898.68 5623.61\n",
+ " M 61134.68 1918.12 6005.85\n",
+ "Doctor F 44856.11 2395.57 5332.46\n",
+ " M 32677.34 2267.60 5577.67\n",
+ "High School or Below F 55277.45 2144.92 6039.55\n",
+ " M 83325.38 1940.98 6286.73\n",
+ "Master F 51016.07 2417.78 5729.86\n",
+ " M 50568.26 2272.31 5579.10"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "clv_stats = (\n",
+ " df_marketing.groupby([\"education\", \"gender\"])[\"customer_lifetime_value\"].agg([\"max\", \"min\", \"median\"]).round(2)\n",
+ ")\n",
+ "\n",
+ "display(clv_stats)\n"
+ ]
+ },
{
"cell_type": "markdown",
"id": "b42999f9-311f-481e-ae63-40a5577072c5",
@@ -143,7 +1057,7 @@
"provenance": []
},
"kernelspec": {
- "display_name": "Python 3 (ipykernel)",
+ "display_name": "Python 3",
"language": "python",
"name": "python3"
},
@@ -157,7 +1071,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.9.13"
+ "version": "3.13.7"
}
},
"nbformat": 4,