{ "cells": [ { "cell_type": "code", "execution_count": 700, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from sklearn.cluster import KMeans\n", "from sklearn.metrics import mean_squared_error\n", "from lifetimes import BetaGeoFitter\n", "from lifetimes import GammaGammaFitter\n", "from lifetimes.utils import calibration_and_holdout_data\n", "from lifetimes.utils import summary_data_from_transaction_data\n", "from lifetimes.plotting import plot_calibration_purchases_vs_holdout_purchases\n", "from decimal import Decimal \n", "import datetime as dt\n" ] }, { "cell_type": "code", "execution_count": 701, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
0053636571053WHITE METAL LANTERN62010-12-01 08:26:003.3917850.0United Kingdom
1153636521730GLASS STAR FROSTED T-LIGHT HOLDER62010-12-01 08:26:004.2517850.0United Kingdom
2253636622633HAND WARMER UNION JACK62010-12-01 08:28:001.8517850.0United Kingdom
3353636622632HAND WARMER RED POLKA DOT62010-12-01 08:28:001.8517850.0United Kingdom
4453636784879ASSORTED COLOUR BIRD ORNAMENT322010-12-01 08:34:001.6913047.0United Kingdom
..............................
20033320033358158722726ALARM CLOCK BAKELIKE GREEN42011-12-09 12:50:003.7512680.0France
20033420033458158722730ALARM CLOCK BAKELIKE IVORY42011-12-09 12:50:003.7512680.0France
20033520033558158723256CHILDRENS CUTLERY SPACEBOY42011-12-09 12:50:004.1512680.0France
20033620033658158723254CHILDRENS CUTLERY DOLLY GIRL42011-12-09 12:50:004.1512680.0France
20033720033758158722138BAKING SET 9 PIECE RETROSPOT32011-12-09 12:50:004.9512680.0France
\n", "

200338 rows × 9 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 InvoiceNo StockCode Description \\\n", "0 0 536365 71053 WHITE METAL LANTERN \n", "1 1 536365 21730 GLASS STAR FROSTED T-LIGHT HOLDER \n", "2 2 536366 22633 HAND WARMER UNION JACK \n", "3 3 536366 22632 HAND WARMER RED POLKA DOT \n", "4 4 536367 84879 ASSORTED COLOUR BIRD ORNAMENT \n", "... ... ... ... ... \n", "200333 200333 581587 22726 ALARM CLOCK BAKELIKE GREEN \n", "200334 200334 581587 22730 ALARM CLOCK BAKELIKE IVORY \n", "200335 200335 581587 23256 CHILDRENS CUTLERY SPACEBOY \n", "200336 200336 581587 23254 CHILDRENS CUTLERY DOLLY GIRL \n", "200337 200337 581587 22138 BAKING SET 9 PIECE RETROSPOT \n", "\n", " Quantity InvoiceDate UnitPrice CustomerID Country \n", "0 6 2010-12-01 08:26:00 3.39 17850.0 United Kingdom \n", "1 6 2010-12-01 08:26:00 4.25 17850.0 United Kingdom \n", "2 6 2010-12-01 08:28:00 1.85 17850.0 United Kingdom \n", "3 6 2010-12-01 08:28:00 1.85 17850.0 United Kingdom \n", "4 32 2010-12-01 08:34:00 1.69 13047.0 United Kingdom \n", "... ... ... ... ... ... \n", "200333 4 2011-12-09 12:50:00 3.75 12680.0 France \n", "200334 4 2011-12-09 12:50:00 3.75 12680.0 France \n", "200335 4 2011-12-09 12:50:00 4.15 12680.0 France \n", "200336 4 2011-12-09 12:50:00 4.15 12680.0 France \n", "200337 3 2011-12-09 12:50:00 4.95 12680.0 France \n", "\n", "[200338 rows x 9 columns]" ] }, "execution_count": 701, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('OnlineRetail.csv')\n", "df" ] }, { "cell_type": "code", "execution_count": 702, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
053636571053WHITE METAL LANTERN62010-12-01 08:26:003.3917850.0United Kingdom
153636521730GLASS STAR FROSTED T-LIGHT HOLDER62010-12-01 08:26:004.2517850.0United Kingdom
253636622633HAND WARMER UNION JACK62010-12-01 08:28:001.8517850.0United Kingdom
353636622632HAND WARMER RED POLKA DOT62010-12-01 08:28:001.8517850.0United Kingdom
453636784879ASSORTED COLOUR BIRD ORNAMENT322010-12-01 08:34:001.6913047.0United Kingdom
...........................
20033358158722726ALARM CLOCK BAKELIKE GREEN42011-12-09 12:50:003.7512680.0France
20033458158722730ALARM CLOCK BAKELIKE IVORY42011-12-09 12:50:003.7512680.0France
20033558158723256CHILDRENS CUTLERY SPACEBOY42011-12-09 12:50:004.1512680.0France
20033658158723254CHILDRENS CUTLERY DOLLY GIRL42011-12-09 12:50:004.1512680.0France
20033758158722138BAKING SET 9 PIECE RETROSPOT32011-12-09 12:50:004.9512680.0France
\n", "

200338 rows × 8 columns

\n", "
" ], "text/plain": [ " InvoiceNo StockCode Description Quantity \\\n", "0 536365 71053 WHITE METAL LANTERN 6 \n", "1 536365 21730 GLASS STAR FROSTED T-LIGHT HOLDER 6 \n", "2 536366 22633 HAND WARMER UNION JACK 6 \n", "3 536366 22632 HAND WARMER RED POLKA DOT 6 \n", "4 536367 84879 ASSORTED COLOUR BIRD ORNAMENT 32 \n", "... ... ... ... ... \n", "200333 581587 22726 ALARM CLOCK BAKELIKE GREEN 4 \n", "200334 581587 22730 ALARM CLOCK BAKELIKE IVORY 4 \n", "200335 581587 23256 CHILDRENS CUTLERY SPACEBOY 4 \n", "200336 581587 23254 CHILDRENS CUTLERY DOLLY GIRL 4 \n", "200337 581587 22138 BAKING SET 9 PIECE RETROSPOT 3 \n", "\n", " InvoiceDate UnitPrice CustomerID Country \n", "0 2010-12-01 08:26:00 3.39 17850.0 United Kingdom \n", "1 2010-12-01 08:26:00 4.25 17850.0 United Kingdom \n", "2 2010-12-01 08:28:00 1.85 17850.0 United Kingdom \n", "3 2010-12-01 08:28:00 1.85 17850.0 United Kingdom \n", "4 2010-12-01 08:34:00 1.69 13047.0 United Kingdom \n", "... ... ... ... ... \n", "200333 2011-12-09 12:50:00 3.75 12680.0 France \n", "200334 2011-12-09 12:50:00 3.75 12680.0 France \n", "200335 2011-12-09 12:50:00 4.15 12680.0 France \n", "200336 2011-12-09 12:50:00 4.15 12680.0 France \n", "200337 2011-12-09 12:50:00 4.95 12680.0 France \n", "\n", "[200338 rows x 8 columns]" ] }, "execution_count": 702, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.drop('Unnamed: 0', inplace=True, axis=1)\n", "df" ] }, { "cell_type": "code", "execution_count": 703, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "InvoiceNo 0\n", "StockCode 0\n", "Description 554\n", "Quantity 0\n", "InvoiceDate 0\n", "UnitPrice 0\n", "CustomerID 49962\n", "Country 0\n", "dtype: int64" ] }, "execution_count": 703, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Verify the existence of NaN values\n", "df.isna().sum()" ] }, { "cell_type": "code", "execution_count": 704, "metadata": {}, "outputs": [], "source": [ "df.dropna(inplace=True)" ] }, { "cell_type": "code", "execution_count": 705, "metadata": {}, "outputs": [], "source": [ "# Dropping rows with negative quantity.\n", "df = df[~df['Quantity'] < 0]" ] }, { "cell_type": "code", "execution_count": 706, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 147069 entries, 0 to 200337\n", "Data columns (total 8 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 InvoiceNo 147069 non-null object \n", " 1 StockCode 147069 non-null object \n", " 2 Description 147069 non-null object \n", " 3 Quantity 147069 non-null int64 \n", " 4 InvoiceDate 147069 non-null object \n", " 5 UnitPrice 147069 non-null float64\n", " 6 CustomerID 147069 non-null float64\n", " 7 Country 147069 non-null object \n", "dtypes: float64(2), int64(1), object(5)\n", "memory usage: 10.1+ MB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 707, "metadata": {}, "outputs": [], "source": [ "# Setting data types \n", "df['InvoiceNo'] = df['InvoiceNo'].astype('str')\n", "df['InvoiceDate'] = pd.to_datetime(df['InvoiceDate'])\n", "df['CustomerID'] = df['CustomerID'].astype('str')\n", "df['Description'] = df['Description'].astype('str')\n", "df['StockCode'] = df['StockCode'].astype('str')\n", "df['Country'] = df['Country'].astype('str')\n", "df['UnitPrice'] = df['UnitPrice'].apply(Decimal)" ] }, { "cell_type": "code", "execution_count": 708, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 147069 entries, 0 to 200337\n", "Data columns (total 8 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 InvoiceNo 147069 non-null object \n", " 1 StockCode 147069 non-null object \n", " 2 Description 147069 non-null object \n", " 3 Quantity 147069 non-null int64 \n", " 4 InvoiceDate 147069 non-null datetime64[ns]\n", " 5 UnitPrice 147069 non-null object \n", " 6 CustomerID 147069 non-null object \n", " 7 Country 147069 non-null object \n", "dtypes: datetime64[ns](1), int64(1), object(6)\n", "memory usage: 10.1+ MB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 709, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 20.34000000000000074606987255\n", "1 25.50\n", "2 11.10000000000000053290705182\n", "3 11.10000000000000053290705182\n", "4 54.07999999999999829469743418\n", " ... \n", "200333 15.00\n", "200334 15.00\n", "200335 16.60000000000000142108547152\n", "200336 16.60000000000000142108547152\n", "200337 14.85000000000000053290705182\n", "Name: Monetary, Length: 147069, dtype: object" ] }, "execution_count": 709, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Creating the monetary value of the transactions (quantity * price)\n", "df['Monetary'] = df['Quantity'] * df['UnitPrice']\n", "df['Monetary'] = df['Monetary'].apply(Decimal)\n", "df['Monetary']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Computing the summary data__." ] }, { "cell_type": "code", "execution_count": 710, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequencyrecencyTmonetary_value
CustomerID
12347.06.0365.0367.0202.878333
12348.02.0283.0358.0136.760000
12349.00.00.018.00.000000
12350.00.00.0310.00.000000
12352.06.0260.0296.0108.130000
\n", "
" ], "text/plain": [ " frequency recency T monetary_value\n", "CustomerID \n", "12347.0 6.0 365.0 367.0 202.878333\n", "12348.0 2.0 283.0 358.0 136.760000\n", "12349.0 0.0 0.0 18.0 0.000000\n", "12350.0 0.0 0.0 310.0 0.000000\n", "12352.0 6.0 260.0 296.0 108.130000" ] }, "execution_count": 710, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Computing the summary data (Recency, Frequency, monetary and tenure)\n", "df_rfmt = summary_data_from_transaction_data(transactions = df, \n", " customer_id_col = 'CustomerID', \n", " datetime_col = 'InvoiceDate', \n", " monetary_value_col = 'Monetary')\n", "df_rfmt.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Splitting the data__" ] }, { "cell_type": "code", "execution_count": 719, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Timedelta('373 days 04:24:00')" ] }, "execution_count": 719, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Size of the data \n", "# we have 373 days of data.\n", "# We will use 200 days as calibration data and the rest as observation data \n", "# to evaluate the performance of the model.\n", "diff_time = df['InvoiceDate'].max() - df['InvoiceDate'].min() \n", "diff_time" ] }, { "cell_type": "code", "execution_count": 720, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Timestamp('2011-12-09 12:50:00')" ] }, "execution_count": 720, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Getting the ending date of the calibration period. \n", "end_date_cal = df['InvoiceDate'].min() + dt.timedelta(days=200)\n", "end_date_obs = end_date_cal + (diff_time - dt.timedelta(days=200))\n", "end_date_obs" ] }, { "cell_type": "code", "execution_count": 721, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 721, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Verify if the calculations are correct. \n", "df['InvoiceDate'].max() == end_date_obs" ] }, { "cell_type": "code", "execution_count": 723, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequency_calrecency_calT_calfrequency_holdoutduration_holdout
CustomerID
12347.03.0184.0194.03.0173.0
12348.01.040.0185.01.0173.0
12350.00.00.0137.00.0173.0
12352.03.034.0123.03.0173.0
12353.00.00.031.00.0173.0
..................
18270.00.00.093.01.0173.0
18272.01.021.073.04.0173.0
18280.00.00.0104.00.0173.0
18283.05.0159.0164.08.0173.0
18287.00.00.028.02.0173.0
\n", "

2774 rows × 5 columns

\n", "
" ], "text/plain": [ " frequency_cal recency_cal T_cal frequency_holdout \\\n", "CustomerID \n", "12347.0 3.0 184.0 194.0 3.0 \n", "12348.0 1.0 40.0 185.0 1.0 \n", "12350.0 0.0 0.0 137.0 0.0 \n", "12352.0 3.0 34.0 123.0 3.0 \n", "12353.0 0.0 0.0 31.0 0.0 \n", "... ... ... ... ... \n", "18270.0 0.0 0.0 93.0 1.0 \n", "18272.0 1.0 21.0 73.0 4.0 \n", "18280.0 0.0 0.0 104.0 0.0 \n", "18283.0 5.0 159.0 164.0 8.0 \n", "18287.0 0.0 0.0 28.0 2.0 \n", "\n", " duration_holdout \n", "CustomerID \n", "12347.0 173.0 \n", "12348.0 173.0 \n", "12350.0 173.0 \n", "12352.0 173.0 \n", "12353.0 173.0 \n", "... ... \n", "18270.0 173.0 \n", "18272.0 173.0 \n", "18280.0 173.0 \n", "18283.0 173.0 \n", "18287.0 173.0 \n", "\n", "[2774 rows x 5 columns]" ] }, "execution_count": 723, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt_cal = calibration_and_holdout_data(transactions=df, \n", " customer_id_col=\"CustomerID\",\n", " datetime_col = \"InvoiceDate\", \n", " calibration_period_end=end_date_cal,\n", " observation_period_end= end_date_obs)\n", "df_rfmt_cal" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Tuning the model__." ] }, { "cell_type": "code", "execution_count": 724, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n", "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n" ] } ], "source": [ "l2_coefs = [0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]\n", "l2_list = []\n", "rmse_list = []\n", "for coef in l2_coefs :\n", " # Fitting the model using the calibration dataset.\n", " model = BetaGeoFitter(penalizer_coef=coef)\n", " model.fit(df_rfmt_cal['frequency_cal'], \n", " df_rfmt_cal['recency_cal'], \n", " df_rfmt_cal['T_cal'])\n", " # Predicting the frequency for the holdout period for all customers. \n", " pred_freq = pd.DataFrame(model.predict(df_rfmt_cal['duration_holdout'], \n", " df_rfmt_cal['frequency_cal'], df_rfmt_cal['recency_cal'], df_rfmt_cal['T_cal']), columns=['pred_frequency']).reset_index()\n", " # Merging the two dataframes and dropping NaN values. \n", " new_df = df_rfmt_cal.reset_index().merge(pred_freq, on='CustomerID').dropna()\n", "\n", " # Computing the rmse score \n", " rmse_score = np.sqrt(mean_squared_error(new_df['frequency_holdout'],new_df['pred_frequency']))\n", " l2_list.append(coef)\n", " rmse_list.append(rmse_score)" ] }, { "cell_type": "code", "execution_count": 725, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rmse_scoreL2 coefs
02.3104980.3
12.2951940.4
22.2893560.5
32.2824490.6
42.2792480.7
52.2782710.8
62.2839260.9
72.2821281.0
\n", "
" ], "text/plain": [ " rmse_score L2 coefs\n", "0 2.310498 0.3\n", "1 2.295194 0.4\n", "2 2.289356 0.5\n", "3 2.282449 0.6\n", "4 2.279248 0.7\n", "5 2.278271 0.8\n", "6 2.283926 0.9\n", "7 2.282128 1.0" ] }, "execution_count": 725, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Getting the results \n", "pd.DataFrame(np.array(rmse_list), columns=['rmse_score']).merge(pd.DataFrame(np.array(l2_list), columns=['L2 coefs']), right_index=True, left_index=True)" ] }, { "cell_type": "code", "execution_count": 726, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 726, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fitting the model using the calibration dataset.\n", "model = BetaGeoFitter(penalizer_coef=0.80)\n", "model.fit(df_rfmt_cal['frequency_cal'], \n", " df_rfmt_cal['recency_cal'], \n", " df_rfmt_cal['T_cal'])" ] }, { "cell_type": "code", "execution_count": 727, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Evaluating the performance of the model.\n", "plot_calibration_purchases_vs_holdout_purchases(model, df_rfmt_cal)\n", "plt.savefig('calib_hold.png')" ] }, { "cell_type": "code", "execution_count": 728, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "CustomerID\n", "12347.0 2.895862\n", "dtype: float64" ] }, "execution_count": 728, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Predicting the number of purchases in the next 180 days for the first customer.\n", "\n", "# Getting the customer data\n", "customer_1 = df_rfmt.iloc[0:1]\n", "\n", "# Predicting \n", "n_trans = model.predict(180, \n", " customer_1['frequency'], \n", " customer_1['recency'], \n", " customer_1['T'])\n", "n_trans" ] }, { "cell_type": "code", "execution_count": 729, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\afify\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pandas\\core\\arraylike.py:397: RuntimeWarning: invalid value encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n" ] } ], "source": [ "# Predicting the number of purchases in the next 180 days for all customers.\n", "df_rfmt['predicted_purchases'] = model.conditional_expected_number_of_purchases_up_to_time(180, \n", " df_rfmt['frequency'], \n", " df_rfmt['recency'], \n", " df_rfmt['T'])\n" ] }, { "cell_type": "code", "execution_count": 730, "metadata": {}, "outputs": [], "source": [ "df_rfmt.dropna(inplace=True)" ] }, { "cell_type": "code", "execution_count": 731, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequencyrecencyTmonetary_valuepredicted_purchases
CustomerID
12347.06.0365.0367.0202.8783332.895862
12348.02.0283.0358.0136.7600001.077508
12350.00.00.0310.00.0000000.153281
12352.06.0260.0296.0108.1300003.539127
12353.00.00.0204.00.0000000.224568
..................
18278.00.00.073.00.0000000.528455
18280.00.00.0277.00.0000000.170089
18282.01.0119.0126.017.7000001.536141
18283.013.0334.0337.058.5807696.630655
18287.02.0159.0201.0166.6800001.830610
\n", "

4029 rows × 5 columns

\n", "
" ], "text/plain": [ " frequency recency T monetary_value predicted_purchases\n", "CustomerID \n", "12347.0 6.0 365.0 367.0 202.878333 2.895862\n", "12348.0 2.0 283.0 358.0 136.760000 1.077508\n", "12350.0 0.0 0.0 310.0 0.000000 0.153281\n", "12352.0 6.0 260.0 296.0 108.130000 3.539127\n", "12353.0 0.0 0.0 204.0 0.000000 0.224568\n", "... ... ... ... ... ...\n", "18278.0 0.0 0.0 73.0 0.000000 0.528455\n", "18280.0 0.0 0.0 277.0 0.000000 0.170089\n", "18282.0 1.0 119.0 126.0 17.700000 1.536141\n", "18283.0 13.0 334.0 337.0 58.580769 6.630655\n", "18287.0 2.0 159.0 201.0 166.680000 1.830610\n", "\n", "[4029 rows x 5 columns]" ] }, "execution_count": 731, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Predicting Customer lifetime value__" ] }, { "cell_type": "code", "execution_count": 732, "metadata": {}, "outputs": [], "source": [ "# Getting rid of negative values.\n", "df_rfmt = df_rfmt[df_rfmt['monetary_value']>0]" ] }, { "cell_type": "code", "execution_count": 733, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 733, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fitting the GammaGamma model \n", "\n", "gg_model = GammaGammaFitter()\n", "gg_model.fit(df_rfmt['frequency'], df_rfmt['monetary_value'])" ] }, { "cell_type": "code", "execution_count": 734, "metadata": {}, "outputs": [], "source": [ "df_rfmt['pred_monetary'] = ggf.conditional_expected_average_profit(\n", " df_rfmt['frequency'],\n", " df_rfmt['monetary_value'])" ] }, { "cell_type": "code", "execution_count": 735, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequencyrecencyTmonetary_valuepredicted_purchasespred_monetary
CustomerID
12347.06.0365.0367.0202.8783332.895862197.189469
12348.02.0283.0358.0136.7600001.077508146.564367
12352.06.0260.0296.0108.1300003.539127116.684671
12356.01.080.0325.0229.9000000.646150196.499384
12358.01.0149.0150.0302.8000001.324216231.860840
.....................
18270.01.0228.0266.097.8000000.793018132.421903
18272.05.0244.0246.0215.2420003.527839206.449363
18282.01.0119.0126.017.7000001.53614193.567958
18283.013.0334.0337.058.5807696.63065566.617512
18287.02.0159.0201.0166.6800001.830610166.109915
\n", "

2669 rows × 6 columns

\n", "
" ], "text/plain": [ " frequency recency T monetary_value predicted_purchases \\\n", "CustomerID \n", "12347.0 6.0 365.0 367.0 202.878333 2.895862 \n", "12348.0 2.0 283.0 358.0 136.760000 1.077508 \n", "12352.0 6.0 260.0 296.0 108.130000 3.539127 \n", "12356.0 1.0 80.0 325.0 229.900000 0.646150 \n", "12358.0 1.0 149.0 150.0 302.800000 1.324216 \n", "... ... ... ... ... ... \n", "18270.0 1.0 228.0 266.0 97.800000 0.793018 \n", "18272.0 5.0 244.0 246.0 215.242000 3.527839 \n", "18282.0 1.0 119.0 126.0 17.700000 1.536141 \n", "18283.0 13.0 334.0 337.0 58.580769 6.630655 \n", "18287.0 2.0 159.0 201.0 166.680000 1.830610 \n", "\n", " pred_monetary \n", "CustomerID \n", "12347.0 197.189469 \n", "12348.0 146.564367 \n", "12352.0 116.684671 \n", "12356.0 196.499384 \n", "12358.0 231.860840 \n", "... ... \n", "18270.0 132.421903 \n", "18272.0 206.449363 \n", "18282.0 93.567958 \n", "18283.0 66.617512 \n", "18287.0 166.109915 \n", "\n", "[2669 rows x 6 columns]" ] }, "execution_count": 735, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt" ] }, { "cell_type": "code", "execution_count": 736, "metadata": {}, "outputs": [], "source": [ "# Predicting the CLV.\n", "df_rfmt['CLV'] = gg_model.customer_lifetime_value(\n", " model,\n", " df_rfmt['frequency'],\n", " df_rfmt['recency'],\n", " df_rfmt['T'],\n", " df_rfmt['monetary_value'],\n", " time = 6,# In months \n", " )\n", " " ] }, { "cell_type": "code", "execution_count": 737, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequencyrecencyTmonetary_valuepredicted_purchasespred_monetaryCLV
CustomerID
12347.06.0365.0367.0202.8783332.895862197.189469551.568608
12348.02.0283.0358.0136.7600001.077508146.564367152.541078
12352.06.0260.0296.0108.1300003.539127116.684671398.885094
12356.01.080.0325.0229.9000000.646150196.499384122.639994
12358.01.0149.0150.0302.8000001.324216231.860840296.567975
........................
18270.01.0228.0266.097.8000000.793018132.421903101.433299
18272.05.0244.0246.0215.2420003.527839206.449363703.493618
18282.01.0119.0126.017.7000001.53614193.567958138.834055
18283.013.0334.0337.058.5807696.63065566.617512426.660799
18287.02.0159.0201.0166.6800001.830610166.109915293.717102
\n", "

2669 rows × 7 columns

\n", "
" ], "text/plain": [ " frequency recency T monetary_value predicted_purchases \\\n", "CustomerID \n", "12347.0 6.0 365.0 367.0 202.878333 2.895862 \n", "12348.0 2.0 283.0 358.0 136.760000 1.077508 \n", "12352.0 6.0 260.0 296.0 108.130000 3.539127 \n", "12356.0 1.0 80.0 325.0 229.900000 0.646150 \n", "12358.0 1.0 149.0 150.0 302.800000 1.324216 \n", "... ... ... ... ... ... \n", "18270.0 1.0 228.0 266.0 97.800000 0.793018 \n", "18272.0 5.0 244.0 246.0 215.242000 3.527839 \n", "18282.0 1.0 119.0 126.0 17.700000 1.536141 \n", "18283.0 13.0 334.0 337.0 58.580769 6.630655 \n", "18287.0 2.0 159.0 201.0 166.680000 1.830610 \n", "\n", " pred_monetary CLV \n", "CustomerID \n", "12347.0 197.189469 551.568608 \n", "12348.0 146.564367 152.541078 \n", "12352.0 116.684671 398.885094 \n", "12356.0 196.499384 122.639994 \n", "12358.0 231.860840 296.567975 \n", "... ... ... \n", "18270.0 132.421903 101.433299 \n", "18272.0 206.449363 703.493618 \n", "18282.0 93.567958 138.834055 \n", "18283.0 66.617512 426.660799 \n", "18287.0 166.109915 293.717102 \n", "\n", "[2669 rows x 7 columns]" ] }, "execution_count": 737, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt" ] }, { "cell_type": "code", "execution_count": 740, "metadata": {}, "outputs": [], "source": [ "# Computing the probability of being alive.\n", "df_rfmt['prob_alive'] = model.conditional_probability_alive(frequency=df_rfmt['frequency'],\n", " recency=df_rfmt['recency'],\n", " T=df_rfmt['T'])" ] }, { "cell_type": "code", "execution_count": 741, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequencyrecencyTmonetary_valuepredicted_purchasespred_monetaryCLVprob_alive
CustomerID
12347.06.0365.0367.0202.8783332.895862197.189469551.5686081.000000
12348.02.0283.0358.0136.7600001.077508146.564367152.5410780.999999
12352.06.0260.0296.0108.1300003.539127116.684671398.8850941.000000
12356.01.080.0325.0229.9000000.646150196.499384122.6399940.974299
12358.01.0149.0150.0302.8000001.324216231.860840296.5679750.994437
...........................
18270.01.0228.0266.097.8000000.793018132.421903101.4332990.993392
18272.05.0244.0246.0215.2420003.527839206.449363703.4936181.000000
18282.01.0119.0126.017.7000001.53614193.567958138.8340550.994130
18283.013.0334.0337.058.5807696.63065566.617512426.6607991.000000
18287.02.0159.0201.0166.6800001.830610166.109915293.7171020.999999
\n", "

2669 rows × 8 columns

\n", "
" ], "text/plain": [ " frequency recency T monetary_value predicted_purchases \\\n", "CustomerID \n", "12347.0 6.0 365.0 367.0 202.878333 2.895862 \n", "12348.0 2.0 283.0 358.0 136.760000 1.077508 \n", "12352.0 6.0 260.0 296.0 108.130000 3.539127 \n", "12356.0 1.0 80.0 325.0 229.900000 0.646150 \n", "12358.0 1.0 149.0 150.0 302.800000 1.324216 \n", "... ... ... ... ... ... \n", "18270.0 1.0 228.0 266.0 97.800000 0.793018 \n", "18272.0 5.0 244.0 246.0 215.242000 3.527839 \n", "18282.0 1.0 119.0 126.0 17.700000 1.536141 \n", "18283.0 13.0 334.0 337.0 58.580769 6.630655 \n", "18287.0 2.0 159.0 201.0 166.680000 1.830610 \n", "\n", " pred_monetary CLV prob_alive \n", "CustomerID \n", "12347.0 197.189469 551.568608 1.000000 \n", "12348.0 146.564367 152.541078 0.999999 \n", "12352.0 116.684671 398.885094 1.000000 \n", "12356.0 196.499384 122.639994 0.974299 \n", "12358.0 231.860840 296.567975 0.994437 \n", "... ... ... ... \n", "18270.0 132.421903 101.433299 0.993392 \n", "18272.0 206.449363 703.493618 1.000000 \n", "18282.0 93.567958 138.834055 0.994130 \n", "18283.0 66.617512 426.660799 1.000000 \n", "18287.0 166.109915 293.717102 0.999999 \n", "\n", "[2669 rows x 8 columns]" ] }, "execution_count": 741, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Customers segmentation__" ] }, { "cell_type": "code", "execution_count": 757, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAFlCAYAAAC+8gFbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACIaklEQVR4nOzdd3wUdf7H8dfsbjab3ntIIwm9ht6RriDVEzkBC4rY9ad36FlObId69qPYu2IBRVFRBBQh0nsLIQnpvddt8/sjZCVSUshmdjffpw8eZsvMvGdT9rPf+RZJlmUZQRAEQRCEVlApHUAQBEEQBPslCglBEARBEFpNFBKCIAiCILSaKCQEQRAEQWg1UUgIgiAIgtBqopAQBEEQBKHVRCEhXJbMzEy6devG9OnTmT59OtOmTWPWrFl8/fXXlue88sorjW5fyOuvv86mTZtafPxzt2vOcVpi69atXHvttVx99dVcddVV3HPPPeTm5rbZ/ptr7dq1JCQkWF7jhn//+Mc/AFi6dClvv/02AF26dKG4uNiqeY4fP8748eOZOXMmmZmZrdrHzp07mTp1aqP73n33XUaNGsWJEyfYuXMnXbp0sZzjuebPn0+/fv1addy2tGXLFubPn8+MGTO46qqruPfee8nJyQHqv2eLFy9u9b5b+/twyy23kJyc3OrjCkJraJQOINg/nU7HN998Y7mdlZXFDTfcgIuLC5MmTeKee+5pch87d+4kNja2xcc+d7vmHKe58vLy+Oc//8natWsJCwsDYOXKldx777189tlnbXac5howYACrV69u9+NeyC+//MLgwYN5+umn22yfL730Ej/99BOffvopYWFh7Ny5k4CAALZu3UpNTQ0uLi5A/c9Wampqmx23tb799ltWrlzJypUriYyMRJZl3njjDRYsWMCGDRsue/+t/X148803L/vYgtBSopAQ2lxYWBh33303b7/9NpMmTWLp0qXExcVx88038+qrr/Lzzz/j5OSEj48Pzz77LD///DNHjhzhueeeQ61WM2TIEJ544glOnDiBJEmMHDmS+++/H41GQ8+ePRk3bhwnTpxg2rRpjbb75ZdfLMfZs2cPzz33HDU1NTg5OXHvvfcyatQo1q5dy88//4xKpeLMmTM4OTmxfPly4uPjG51DSUkJBoOB6upqy30LFy6kW7dulturV69m3bp1aDQaIiMj+c9//oOHhwf/+9//2LBhA2q1mujoaB599FECAgKYP38+Xl5epKSkcN111zFjxgyefvppkpKSMBgMDB06lH/84x9oNJf3a/nyyy9z+PBhzGYz9957L2PHjgW4YK6DBw/y9ttv8+mnnwIwefJkpkyZYml9mTNnDr/99hsqVX3j5fr16/n0008xmUzU1tby3//+t9nnO3/+/POyms1mli1bxokTJ/jkk0/w8fGxPObt7U2nTp3YtGkT06ZNA+Drr79m2rRpjYq5L774gk8//RSz2Yy3tzePPvoonTt3JjU1lWXLllFdXU1+fj5du3bl5ZdfxtnZmV69enHrrbeyfft28vPzWbBgATfccAMFBQX885//pKSkBIDRo0dz7733npf7pZde4sknnyQyMhIASZK49dZbCQ0NRa/XN3ru/Pnz+fvf/87kyZPPu92c34fRo0fzwgsvsHv3bkwmE927d+eRRx7B3d2dK664gt69e3Py5Enuv/9+nn32WV555RWqq6t56aWX6NSpE6dOnUKv1/PYY48xZMgQiouLeeihh0hPT8fb25uAgADi4uK46667WvXzJgji0oZgFV27diUpKanRfTk5Obz//vt89dVXrF27luHDh3Po0CH+/ve/07NnT/7xj38wYcIEnnrqKby9vfn222/56quvOHnyJO+88w4ABoOBsWPHsnHjRu68885G2zUoKSnh7rvv5l//+hfffvsty5cv58EHHyQjIwOA3bt38+ijj/Ldd9/Rv39/y2WBv+b/29/+xsyZM7nyyit55JFH2LJlCyNGjADqP5WvXbuWNWvW8N133xEeHs5HH33EV199xbZt2/jyyy/59ttviYuLY+nSpZb9enp68v333zN//nyeeeYZevTowdq1a/n6668pKSnh3XffveDruWfPnvMubXz11VcXfG54eDjr1q3j+eefZ+nSpRQXF18014gRI0hKSqK8vJzMzEwqKytJTEy0nOP48eMtRQTA1Vdfzdy5c7nyyiv573//26Lz/Suj0ciDDz7Ip59+ypIlSxoVEQ1mzJjRqLXrhx9+aHRJZNeuXXz99dd8/PHHfP311yxatMjyhvj5558zY8YM1qxZw08//URmZiZbt24FQK/X4+Pjw2effcarr77Kf//7X+rq6vj8888tr9/HH3/MmTNnqKioaJSppKSErKws+vfv3+h+SZKYNm0a7u7uF/y+/FVzfx/eeOMN1Go1a9euZf369QQGBvLCCy9Y9hMXF8cPP/zQ6HcA4NChQ9x00018/fXXzJkzh9dffx2Ap556itjYWH744QdeeeUV9u3b16y8gnAxdtcicfDgQV544QU+/PDDiz7nqaeeYt++fbi5ufHAAw/Qp0+fdkwoQP0fVZ1O1+i+oKAgunbtysyZMxk1ahSjRo1i6NCh523722+/8emnnyJJElqtlrlz5/L+++9z6623AvXN/Jdy6NAhIiIiLN/3uLg4+vfvz65du5AkiR49ehAcHAxA9+7d+fnnny+4n6VLl7J48WJ27drF7t27ee655/jwww/5+OOPSUxMZPLkyXh5eQHw0EMPAfWXV2bNmoWrqysACxYsYNWqVZZPqedm37p1K4cPH+bLL78EoLa29qLn1JJLG9dddx0A8fHxdO7cmf379/Pbb79dMJdKpWLYsGFs376d0tJSrr32WtasWUNFRQWbN29m0aJFlzzWxfZ7ofP9q9TUVPr378/y5ctZunQpa9euJSQkpNFzxo4dy7///W+KiopIS0sjJibG8ppD/Wt45swZ5s6da7mvrKyM0tJSHnzwQbZv386bb75JWloa+fn5jVqYxo0bB0CPHj3Q6/VUV1czcuRIbr31VnJychg2bBj/93//h4eHR6NMDYWV2Wy+5GvTlOb+PmzdupWKigp27NgB1BfTfn5+lscv9hqHhoZaWtC6d+/OunXrAPj1118tXwcGBlpaSgShteyqkHjzzTdZv3695XrphWzZsoXU1FS+/PJLSktLWbRoEWvXrm3HlALA4cOHz7tcoFKp+Oijjzh8+DCJiYk888wzDB48mEceeaTR8/76B9psNmM0Gi23G960LuZCf+BlWcZoNOLk5NSowJEkiQstN/PLL79QWlrK7NmzmTRpEpMmTeK+++5jzJgxHDt2DLVajSRJlueXl5dTXl5+3r4uld1sNvPKK6/QuXNnyz7O3WdrnduCIMsyGo3mkrkmTJjAb7/9Rnl5OYsWLSIlJYVNmzaRlJTEwIEDL3mslpzvX0VFRfHMM88AsG/fPu666y4++eQTtFqt5TlarZaJEyfy3XffkZyczMyZM8873vTp03nwwQctt/Pz8/Hy8uK+++7DZDIxZcoUxowZQ05OTqO8zs7OAJbXXJZlevfuzS+//EJiYiJ//PEH11xzDf/73/8atT54eXkRFRXFwYMHGTZsWKM899xzD0uWLLnk62QwGICW/T48/PDDjB49GoCqqirq6uqafI0v9nP+15+Hc39eBKE17OonKCIigtdee81y++TJk8yfP5/58+dz1113UVFRQXJyMiNHjkSlUuHr64taraagoEDB1B1PamoqK1as4Kabbmp0/4kTJ5g6dSqdO3dm8eLF3HDDDZw8eRIAtVpteQMaMWIEH3/8MbIso9fr+fzzz8/7g93g3O0a9OnTh9TUVA4dOgTAqVOn2L17N4MGDWr2Obi5ufHiiy826gGfmZmJs7MzERERDBs2jJ9//pnKykoAXnvtNd577z1GjBjB2rVrLZ98P/zwQwYOHNjozbHBiBEjeO+99yznuWTJEj766KNmZ7yYhk+bR48e5cyZM/Tp0+eSucaMGUNiYiLHjx+nd+/eDB8+nFdeeYVRo0Y12V+jJef7V05OTpav//Wvf2EymVi2bNl5z5sxYwbr1q1j9+7djBw5stFjw4cPZ8OGDeTn5wPw6aefsnDhQgB+//137rjjDq688kokSeLgwYOYTKZLZnrhhRdYsWIF48eP51//+hexsbGkpaWd97w777yTp59+mjNnzgBgMplYsWIFJ06cICYmptFzfX19OXLkCADp6emWn/mW/j7o9XrMZjOPPvooL7744iXP41JGjx5taQUrKSlh06ZNbVLACh2XXbVITJo0qdFws0cffZRnnnmG2NhYvvjiC9566y0GDhzIu+++y9///ndyc3NJTk6mpqZGwdSOr7a2lunTpwP1n26cnZ25//77GTNmTKPnde3alSlTpjB79mxcXV3R6XSWT19jx45l+fLlGAwGHnnkEZ566immTZuGwWBg5MiR3HbbbRc89rnbNfD19eWVV17hySefpLa2FkmSePbZZ4mOjmb//v3NOqchQ4bw6KOP8s9//pOKigrUajUBAQGsWLECLy8vRo8eTXJysuUyQmxsLE8++SSurq7k5ORwzTXXYDabiYyMbHQ9+1z/+te/ePrppy3nOWzYsIteSmjoI3Guhuvmf5WRkcGMGTOQJIkXX3wRb29v5syZc9Fcnp6edO7cGRcXF9RqNSNGjOBf//oXEydObPJ1utR+W8LZ2ZlXXnmFmTNn0qtXL6KioiyP9evXj5qaGq644orzCpuRI0dyyy23cNNNNyFJEu7u7rz++utI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p57immuu4corr2TKlCns3bsXgIceegiAhQsXkpOTc162pKQkYmNjycjI4LrrriM6OprXXnsNNzc3y3MWL17MgAEDLvhv8eLF5+2zsrKSV1991XLslvjHP/7B6NGj2bFjB4mJidx5550AvPPOO6xcuZLnnnuO/fv387///Y+wsDBefvlltm3bxpo1a9i+fTt6vZ7//e9/lv2dPHmSAwcOMG7cOLZs2cKCBQtYtWoVn332GStXriQxMZGgoCBefvnlRjlaes7t4b///S+DBw9m7ty57Ny503J/ZWUlq176gO7RCWCWUDtJVNaW0CV4MCHesSxcuJANGzZQU1NDXl4e27ZtY+TIkUB9C82RI0coKSlhwoQJjBo1imXLlll+3gD+/e9/06dPH6ZMmUJAQACjR4+2PHapfZ9r3bp1zJgx45LDL5u7L6ifOv/06dMXfKw5x2qN9KJjmMwGrupzOwlRU9id+mch4+ceypTei5nSezHdQocS5d+TcJ8ubXr8Bh1m1EaDhtaHzKxsfsio4oM9KTxzZT/cnJ0UTibYqz59Ltyiddddd7Fo0SKg/vJLYmLiec8ZMGAAb7/9NgDvv/8+L7744nnPOXiw+R2B09LSeOmll/jggw/w8fHh1KlT3HjjjTz11FONnpeTk8MLL7xA//79WbNmDf/4xz/44osvSExM5K233mLNmjX4+vqydu1a7rjjDq688kq2bdvGsGHD2LZtG15eXuzZs4dhw4axdetW7rnnnvMy5+fns2bNGlQqFW+88QZvvvkmCQkJPPvss6xdu5b3338fX1/f886hoUVi4cKFPPzww4wfP/6856xevbrZrwnAyy+/zOzZswkODm7RdlDfImEymTCZTDg7O5OQkEBxcTGvv/46n3zyCV27dgWgS5cuFBYW8tFHH/H9998TGBgIwKRJk/jyyy8t+ztx4gQ333wz48aNo6qqioqKClatWsW6deuIjIwEYM6cOTzxxBOXdc7W9sADD9C5c2e0Wi0bNmzgtttu45tvviEiIsLyemt1Tphrncg4XMuwKwMs69MMHDiQzz//nISEBEwmEzNnzrR8nwsLCzEYDPz44498/PHHaDQabr/9dlauXMl9990H1BcSjz76KPv372fXrl2NJoq71L4bZGVlsXv3bp5++ulLnuPF9mU0GvH19eWtt97ihhtuYOfOnezevZuEhITz9tHcY7VGXnkaYWeLg0DPCIoqs857jsGkZ/+ZTUzpbb1is0O1SDR4fFIfbusTyM2DYymvNfDZgTSlIwlCm9i+fbulyXX69Ok88MADSJLU6Not1L/p9e/fH4CZM2dy5MgRKioq2LZtG1deeaXlDX7WrFnk5eUxYcIEfvvtNwD27NnDDTfcwPbt2zl48CAREREEBAQ02n+/fv249957+eyzz1i+fDk//vhjsy5NyLJMUlISW7ZsYe7cuRcsIlrq+PHjJCYmcsMNN7Rq++eff55ffvmFkSNH8vDDD1NaWsqOHTuIj4+3FBEN9uzZQ3x8vKUZHqC0tLTR63Py5MlG18oTExPR6/Vcc801lhaGRYsW4eHh0aq87aVPnz64u7uj1WqZOXMm/fv359dff7W83vOuv5aK2iLMtU5UFpiRUJFbnoLZbGbRokVMmDCBAwcO8Mcff1BWVsbzzz8PgE6nA+o7cwYGBuLr68uNN97Ir7/+2uj4arWaAQMGkJuby6effgrQ5L4bfPPNNyQkJFj6XVzIpfbl5OTE//73P3799VdGjBjBu+++y+TJkxt931tyrNYymGrRqnWW25IkYZYb97k5lbebKP9e6Jzc/rp5m+lwLRLnWjQ4jmc2HeGNxFPcPDhO6TiCnWpOi8GqVauafM7ChQtZuHDhZWUxm80MHTq0UbN4Tk4OaWlpjZ6nUjX+DCFJEhqN5oIrmsqyjFarxWAw8MsvvxAZGcnYsWO577770Gg0TJw48bxttm7dytNPP82NN97IuHHjiImJYf369U3mz8zMBGDlypUsWbKEoUOHXrBz5KJFiyyXSv4qISGBt956y3J7586dZGVlMXbsWKD+sk7Dp8t169Y1mWno0KEMHTqUoqIibrnlFtatW4dWq73gmivFxcXnFQC//PKLZURDVlYWRqORmJgYy+NlZWWMHz+eV1999ZI5WnLOSpAkCVmWLa/37L/NpOeIMNJPFnBybzYuoVWMnDCQ3IJMsrOzuf7669FqtWi1WmbPns3LL7/MP/7xD7y8vAgODm50GeBSlwRMJpOlj0Rpaekl993gm2++4ZZbbrnk+TS1r65du/LRRx9Znj937lymTJly3n6ac6zWclLrMJjqLLdlWUYlqRs9JyX/AGO7/d0qx2/QIVskGnTyceOq7mHsyShiT8bld2wSlDFgwAC6deumdAybMGTIELZv3265Vvvrr79y9dVXU1dX1+h5J0+etCy7vmbNGhISEnBxcWHEiBF8//33lhEVX331Fd7e3kRGRjJ+/HheeOEFhg8fTufOnamsrOTbb789b9gf1LeMjB07lnnz5tGrVy82bdrUaHSCWq0+b7hfQ64uXboQFxfHk08+yZ133kl+/vnr4rz11luNesWf+++vb6jXXnstP//8M19//TVff/01c+fOZcyYMZZLSpfy008/kZaWhizLVFVVUV5eTteuXenWrRt79+7lxIkTyLJMWloap0+fplevXhw4cID09HSqqqp45ZVXKCwstIx8OHHiBPHx8Y0Kue7du7Nz506OHj0K1Pcv2LRp03lFXUvOuYHRaKSurg6z2YzJZKKurs7yul/qsaYeLy8vZ9u2bZb71q9fz549exg5cqTl9f7o3TUsvflFBnQdy4gRI7h+9q0A1KlKCQ8P59NPP8VoNFJeXs66devo0uXP6/ezZs3iww8/pKioiLKyMt577z3GjBlDUVERGzZsoKqqCpPJxLZt29iwYYOlA62vr2+T+963bx95eXlNjqBoal8nTpygrq6Ompoa3n77bfLz87n66qsb7aO5x2qtQM9IMktOAJBfno6PW+NLd3pjLSbZiJuzt1WO36BDt0hA/aiNb49msnpHEgOubVlvbsE2vP322xf9pNbRxMXFsWzZMu6//35kWUaj0bBy5crzhhjGxMTw+uuvk5GRgZ+fn2X47PDhw7nhhhtYuHAhZrMZX19fVq9ejUqlYsKECbz99tsMGzYMgGHDhnHy5ElCQkLOyzF37lweeOABpk2bZmmC/umnnzCbzZZ9zZs3jxUrVhAfH2/ZrqGQABg/fjwnT57kjjvu4KOPPmr1cFAXFxdcXFwst11dXdFqtY36Z9xyyy3MnTuXcePGNdp27969LFu2jKqqKgIDA7n11lstb1pLlixh8eLFlJeXExYWxvLly+nVqxe33XYb8+bNo7a2lmHDhvH+++9bjn/ixInzLof069ePO+64g7vuuouSkhI8PDwYO3Zsm1zWWblyJa+//rrl9vr167nzzju56667LvlYU9sajUZefvllUlJSUKvVxMTE8L///Y/o6GiAC77encN6kV5+gPyKM7z++us888wzvPnmm6hUKoYMGdKoI+ztt99OSUkJkyZNwtnZmSlTprBkyRKqqqr49NNPefzxxzGb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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 757, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from yellowbrick.cluster import KElbowVisualizer\n", "\n", "\n", "# Instantiate the clustering model and visualizer\n", "km_model = KMeans()\n", "visualizer = KElbowVisualizer(km_model, k=(2,10))\n", "\n", "visualizer.fit(df_rfmt) # Fit the data to the visualizer\n", "visualizer.show() # Finalize and render the figure\n" ] }, { "cell_type": "code", "execution_count": 550, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "KMeans(n_clusters=4)" ] }, "execution_count": 550, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Training the model with the optimal number of clusters according the elbow metho\n", "km_model = KMeans(n_clusters=4)\n", "km_model.fit(df_rfmt)" ] }, { "cell_type": "code", "execution_count": 551, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequencyrecencyTmonetary_valuepredicted_purchasespred_monetaryCLVprob_alivecluster
CustomerID
12347.06.0365.0367.0202.8783332.895862197.189469551.5686081.0000000
12348.02.0283.0358.0136.7600001.077508146.564367152.5410780.9999990
12352.06.0260.0296.0108.1300003.539127116.684671398.8850941.0000000
12356.01.080.0325.0229.9000000.646150196.499384122.6399940.9742990
12358.01.0149.0150.0302.8000001.324216231.860840296.5679750.9944370
..............................
18270.01.0228.0266.097.8000000.793018132.421903101.4332990.9933920
18272.05.0244.0246.0215.2420003.527839206.449363703.4936181.0000000
18282.01.0119.0126.017.7000001.53614193.567958138.8340550.9941300
18283.013.0334.0337.058.5807696.63065566.617512426.6607991.0000000
18287.02.0159.0201.0166.6800001.830610166.109915293.7171020.9999990
\n", "

2669 rows × 9 columns

\n", "
" ], "text/plain": [ " frequency recency T monetary_value predicted_purchases \\\n", "CustomerID \n", "12347.0 6.0 365.0 367.0 202.878333 2.895862 \n", "12348.0 2.0 283.0 358.0 136.760000 1.077508 \n", "12352.0 6.0 260.0 296.0 108.130000 3.539127 \n", "12356.0 1.0 80.0 325.0 229.900000 0.646150 \n", "12358.0 1.0 149.0 150.0 302.800000 1.324216 \n", "... ... ... ... ... ... \n", "18270.0 1.0 228.0 266.0 97.800000 0.793018 \n", "18272.0 5.0 244.0 246.0 215.242000 3.527839 \n", "18282.0 1.0 119.0 126.0 17.700000 1.536141 \n", "18283.0 13.0 334.0 337.0 58.580769 6.630655 \n", "18287.0 2.0 159.0 201.0 166.680000 1.830610 \n", "\n", " pred_monetary CLV prob_alive cluster \n", "CustomerID \n", "12347.0 197.189469 551.568608 1.000000 0 \n", "12348.0 146.564367 152.541078 0.999999 0 \n", "12352.0 116.684671 398.885094 1.000000 0 \n", "12356.0 196.499384 122.639994 0.974299 0 \n", "12358.0 231.860840 296.567975 0.994437 0 \n", "... ... ... ... ... \n", "18270.0 132.421903 101.433299 0.993392 0 \n", "18272.0 206.449363 703.493618 1.000000 0 \n", "18282.0 93.567958 138.834055 0.994130 0 \n", "18283.0 66.617512 426.660799 1.000000 0 \n", "18287.0 166.109915 293.717102 0.999999 0 \n", "\n", "[2669 rows x 9 columns]" ] }, "execution_count": 551, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt['cluster'] = km_model.labels_\n", "df_rfmt" ] }, { "cell_type": "code", "execution_count": 692, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
clusteravg_CLVn_customersperct_customers
00395.086399261297.864369
1137242.65494440.149869
224537.561030461.723492
3316019.64962170.262271
\n", "
" ], "text/plain": [ " cluster avg_CLV n_customers perct_customers\n", "0 0 395.086399 2612 97.864369\n", "1 1 37242.654944 4 0.149869\n", "2 2 4537.561030 46 1.723492\n", "3 3 16019.649621 7 0.262271" ] }, "execution_count": 692, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Grouping by clusters\n", "df_clusters = df_rfmt.groupby(['cluster'])['CLV']\\\n", " .agg(['mean', \"count\"])\\\n", " .reset_index()\n", "\n", "df_clusters.columns = [\"cluster\", \"avg_CLV\", \"n_customers\"]\n", "\n", "df_clusters['perct_customers'] = (df_clusters['n_customers']/df_clusters['n_customers']\\\n", " .sum())*100\n", "df_clusters " ] }, { "cell_type": "code", "execution_count": 569, "metadata": {}, "outputs": [], "source": [ "# Let's name the clusters.\n", "df_rfmt['customer_category'] = df_rfmt['cluster'].replace({3:\"Gold\", 1:\"Diamond\", 2:\"Silver\", 0:\"Bronze\"})" ] }, { "cell_type": "code", "execution_count": 673, "metadata": {}, "outputs": [], "source": [ "# Grouping by customer category\n", "df_cat = pd.DataFrame(df_rfmt.groupby(['customer_category'])['CLV'].agg('mean')).reset_index()" ] }, { "cell_type": "code", "execution_count": 674, "metadata": {}, "outputs": [ { "data": { "image/png": "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eXNiY2MJCAigUKFCDBo0iAkTJuDu7k7NmjWxt7fH29ubxo0bY7VaCQwMBKBv377J7isiIiLPZjEMw0jtIlLKk9MiuhxgDvO2BKV2CWleyxoK3iIvs2cd93SzIBEREZNSCBARETEphQARERGTUggQERExKYUAERERk1IIEBERMSmFABEREZNSCBARETEphQARERGTUggQERExKYUAERERk1IIEBERMSmFABEREZNSCBARETEphQARERGTUggQERExKYUAERERk1IIEBERMSmFABEREZNSCBARETEphQARERGTUggQERExKYUAERERk1IIEBERMSmFABEREZNSCBARETEphQARERGTUggQERExKYUAERERk1IIEBERMSmFABEREZNSCBARETEphQARERGTUggQERExKYUAERERk1IIEBERMSmFABEREZNSCBARETEphQARERGTUggQERExKYUAERERk1IIEBERMSmFABEREZNSCBARETEphQARERGTUggQERExKYUAERERk1IIEBERMSmHlFhJTEwMAQEBXLlyhejoaDp27Eju3Lnp0KEDb7zxBgBNmzaldu3aTJ06lR07duDg4EBAQACenp5cuHCBfv36YbFYKFKkCIMHD8bOzi7RviIiIpI8KRIC1q1bR5YsWRg3bhz37t2jXr16dO7cmVatWtG6dWtbv9DQUA4cOMDy5cu5du0aXbt2ZeXKlYwaNYoePXpQoUIFAgMD2bZtG3ny5Em0r4iIiCRPioSAWrVqUbNmTQAMw8De3p6QkBDOnTvHtm3bKFCgAAEBAQQHB+Pr64vFYiFPnjzExcVx584dQkND8fHxAaBq1ars3r2bggULJtrXzc0tJTZJRETklZciIcDJyQmAiIgIunXrRo8ePYiOjqZhw4Z4eHgwffp0pk2bhouLC1myZIk3X3h4OIZhYLFY4rVFREQk2jc5ISAkJOS5bp+IWQUHB6d2CSLyL6RICAC4du0anTt3plmzZtStW5f79+/j6uoKQI0aNRg2bBjvvfcekZGRtnkiIyNxcXHBzs4uXpurqyvOzs6J9k0ODw8P0qdP/5y2TF5WR7dsSO0S0rxy5cqldgkikoSoqKgkP/imyLcDbt26RevWrfniiy9o0KABAG3atOHIkSMA7N27l5IlS1K2bFl27dqF1Wrl6tWrWK1W3NzcKFGiBPv37wdg586deHt7P7WviIiIJE+KnAmYMWMG9+/f5+uvv+brr78GoF+/fowcOZJ06dKRLVs2hg0bhrOzM97e3jRu3Bir1UpgYCAAffv2ZdCgQUyYMAF3d3dq1qyJvb19on1FREQkeSyGYRipXURKeXJaRJcDzGHelqDULiHNa1lD4VvkZfas455uFiQiImJSCgEiIiImpRAgIiJiUgoBIiIiJqUQICIiYlIKASIiIialECAiImJSCgEiIiImpRAgIiJiUgoBIiIiJqUQICIiYlIKASIiIialECAiImJSCgEiIiImpRAgIiJiUgoBIiIiJqUQICIiYlIKASIiIialECAiImJSCgEiIiImpRAgIiJiUgoBIiIiJqUQICIiYlIKASIiIialECAiImJSCgEiIiImpRAgIiJiUgoBIiIiJqUQICIiYlIKASIiIialECAiImJSCgEiIiImpRAgIiJiUgoBIiIiJqUQICIiYlIKASIiIialECAiImJSCgEiIiImpRAgIiJiUgoBIiIiJqUQICIiYlIKASIiIialECAiImJSCgEiIiImlWQIsFqtKVWHiIiIpLAkQ0CVKlUYOXIkR48eTal6REREJIUkGQI6derEsWPHaNy4MTVr1mTq1KlcvHgxpWoTERGRF8ghqYnNmzenefPm3Lhxg02bNrF582amTZtGqVKlqFu3Lh9++CFubm7PXElMTAwBAQFcuXKF6OhoOnbsSOHChenXrx8Wi4UiRYowePBg7OzsmDp1Kjt27MDBwYGAgAA8PT25cOFCsvuKiIhI8iQZAp7IkSMHn376KZ9++inXrl1j8+bNrF+/njFjxlCpUiU++ugj6tat+9T5161bR5YsWRg3bhz37t2jXr16FC9enB49elChQgUCAwPZtm0befLk4cCBAyxfvpxr167RtWtXVq5cyahRo5LdV0RERJLnb387IHfu3LRq1Yply5bx3XffcevWLfr06ZPkPLVq1aJ79+4AGIaBvb09oaGh+Pj4AFC1alX27NlDcHAwvr6+WCwW8uTJQ1xcHHfu3PlbfUVERCR5knUm4M/OnDnDjz/+yI8//sjZs2epXLkybdu2TXIeJycnACIiIujWrRs9evRgzJgxWCwW2/Tw8HAiIiLIkiVLvPnCw8MxDCPZfZNzeSIkJORvbrWIJCY4ODi1SxCRfyFZIeDEiRP8+OOP/PTTT5w7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ry8Wi4U8efIQFxfHnTt3CA0NtT2Gs2rVquzZs+epfUVERCR5UuxMQM2aNbl8+bLttaenJw0bNsTDw4Pp06czbdo0XFxcyJIli62Pk5MT4eHhGIaBxWKJ1xYREZFoXzc3t2fWEhIS8ty2S8TMgoODU7sE+Yf03gmk4rMDatSogaurq+33YcOG8d577xEZGWnrExkZiYuLC3Z2dvHaXF1dcXZ2TrRvcjztucqSthzdsiG1S0jzypUr90KWe+WFLFX+7EW9d/JyiYqKSvKDb6p9O6BNmza2wXx79+6lZMmSlC1bll27dmG1Wrl69SpWqxU3NzdKlCjB/v37Adi5cyfe3t5P7SsiIiLJk2pnAoYMGcKwYcNIly4d2bJlY9iwYTg7O+Pt7U3jxo2xWq0EBgYC0LdvXwYNGsSECRNwd3enZs2a2NvbJ9pXREREksdiGIaR2kWklCenRXQ5wBzmbQlK7RLSvJY1Xkz41qOEXzw9StgcnnXc082CRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMKkVDwOHDh/H39wfgwoULNG3alGbNmjF48GCsVisAU6dOpUGDBjRp0oQjR4787b4iIiKSPCkWAmbNmsXAgQOJiooCYNSoUfTo0YNFixZhGAbbtm0jNDSUAwcOsHz5ciZMmMDQoUP/dl8RERFJnhQLAfnz52fKlCm216Ghofj4+ABQtWpV9uzZQ3BwML6+vlgsFvLkyUNcXBx37tz5W31FREQkeVIsBNSsWRMHBwfba8MwsFgsADg5OREeHk5ERATOzs62Pk/a/05fERERSR6HZ3d5Mezs/j9/REZG4urqirOzM5GRkfHaXVxc/lbf5AgJCXkOWyAiwcHBqV2C/EN67wRSMQSUKFGC/fv3U6FCBXbu3EnFihXJnz8/48aNo02bNoSFhWG1WnFzc/tbfZPDw8OD9OnTv+AtlNR2dMuG1C4hzStXrtwLWe6VF7JU+bMX9d7JyyUqKirJD76pFgL69u3LoEGDmDBhAu7u7tSsWRN7e3u8vb1p3LgxVquVwMDAv91XREREksdiGIaR2kWklCeJSGcCzGHelqDULiHNa1njxYTvdYXyvZDlyv/76Myl1C5BUsCzjnu6WZCIiIhJKQSIiIiYlEKAiIiISSkEiIiImJRCgIiIiEkpBIiIiJiUQoCIiIhJKQSIiIiYlEKAiIiISSkEiIiImJRCgIiIiEkpBIiIiJiUQoCIiIhJKQSIiIiYlEKAiIiISSkEiIiImJRCgIiIiEkpBIiIiJiUQoCIiIhJKQSIiIiYlEKAiIiISSkEiIiImJRCgIiIiEkpBIiIiJiUQoCIiIhJKQSIiIiYlEKAiIiISSkEiIiImJRCgIiIiEkpBIiIiJiUQoCIiIhJKQSIiIiYlEKAiIiISSkEiIiImJRCgIiIiEkpBIiIiJiUQoCIiIhJKQSIiIiYlEKAiIiISSkEiIiImJRCgIiIiEkpBIiIiJiUQoCIiLwSfvvtN0qUKMH+/fttbQ0aNKBYsWLxfgYMGGCbHhwcTNOmTfHy8qJKlSqMGzeO6OhoAPbv359g3ic/LVq0eGod3bt3T9C/ZcuWtumGYTBz5kyqVauGl5cXzZs35/jx489/hzwHDqldgIiIyLM8ePCAPn36EBcXZ2szDIPTp08zfvx4KlasaGvPmDEjAFeuXKFt27Y0atSIMWPGcPnyZfr06UNsbCz9+/enTJky7Nq1K956du/eTf/+/WnXrt1Tazl58iS9e/emfv36tjZHR0fb79OmTWPevHmMHj0ad3d3pk6dSrt27di8eTPOzs7/el88TwoBIiLy0hs9ejQ5c+bkwoULtrZLly7x8OFDvLy8yJ49e4J5rly5wvvvv0///v0ByJ8/P7Vr12bv3r3A4wP3n+cLDw9n/PjxtGnThipVqiRaR3R0NBcvXsTT0zPRdUZGRjJ79mwGDhxI9erVAQgKCuKjjz7i2LFj+Pj4/POd8AIoBIiIyEvtl19+YceOHcyaNYuPPvrI1n7y5EkyZMjA66+/nuh8Pj4+8Q66oaGhbN26lZo1ayba/+uvv8bR0ZHOnTs/tZazZ88SGxtLoUKFEp0eHBxMVFQUtWrVsrU5Ozvz888/J7mNqUVjAkRE5KV1584dBgwYwPDhw8mcOXO8aadOncLFxYXPP/8cX19f6taty9y5c7FarQmW4+3tjZ+fH5kzZ6ZTp04Jpt++fZuFCxfSuXNn2+WExJw8eZJ06dIxZcoU3nnnHWrWrMnEiROJiooC4Pz587i5uXH48GEaNWrEW2+9RZs2bTh9+vS/3BMvhkKAiIi8tAYPHsy7775L1apVE0w7ffo0Dx48wNfXlzlz5tCsWTMmT57M1KlT4/WzWq18++23zJ49m4cPH9K+fXsMw4jXZ/Hixbz22mvxzjQk5snB3N3dnZkzZ9KlSxdWrFhBYGAgABEREURGRjJs2DA+++wzZsyYQaZMmWjevDl37tz5N7vihUj1ywH169e3DZTImzcvjRs3ZsSIEdjb2+Pr60uXLl2wWq0MGTKE33//HUdHR4YPH06BAgX47bffEvQVEZG0YfXq1Rw7dox169YlOn3MmDE8ePAAV1dXAIoVK0Z4eDgzZsyga9euWCwWAOzs7PD09LTN06hRIw4dOkTZsmVty1q3bh1+fn6kS5cuyZp69OhB69atyZIli22d9vb29OzZk379+uHg4MDDhw8ZMmSIbbDi+PHjefvtt1m7di2tWrX6V/vkeUvVEBAVFYVhGCxYsMDW9vHHHzNlyhTy5ctH+/btOXbsGJcvXyY6OpqlS5fy22+/MXr0aKZPn87gwYMT9C1RokQqbpGIiDwvq1at4vr16/j6+gLYPr23a9eOevXqERQUZAsATxQrVozIyEjCw8O5ceMG169fp3LlyrbpRYsWBeD69eu2tlOnTnHhwgU+/PDDZ9ZkZ2dnCwB/XWZYWBg5c+aM1waQPn168ubNy+XLl5O76SkmVUPAiRMnePjwIa1btyY2NpauXbsSHR1N/vz5AfD19WXPnj3cvHnTNlLTy8uLkJAQIiIiEu2rECAikjaMHz+eR48e2V7fvHmT5s2bM3z4cCpXrkyjRo3w9PRk4MCBtj5Hjx4lR44cuLq6snTpUmbPns3OnTtJnz49AEeOHAGgcOHCtnkOHjxI9uzZnzrY78+6d+9ObGws06ZNs7WFhITg6OhI/vz5cXFxsdXx9ttvA/Do0SMuXbpEnTp1/sXeeDFSNQRkyJCBNm3a0LBhQ86fP0+7du3ipTonJycuXbpEREREvO9W2tvbJ2h70jc5QkJCnt9GiJhYcHBwapcg/9Cr+N49uab+xx9/cP78eUqUKMGSJUtwcnKiWLFiHDt2jPnz59OiRQuCg4Nxd3cnNjaWzz77jPr163Pnzh3mzJlDxYoVuX//vm0f7Ny5k1y5ciW6T2JjY23HGwcHB4oWLcqUKVMICgrC29ub8+fPM3fuXGrXrs2JEyeAxx9KAwICaNeuHW5ubqxatQqr1UqBAgVeuv2eqiGgYMGCFChQAIvFQsGCBXFxceHevXu26ZGRkbi6uvLo0SMiIyNt7VarFWdn53htT/omh4eHhy0VStp1dMuG1C4hzStXrtwLWe6VF7JU+bMX9d69SGFhYcDjU+3lypWjbNmyFChQgCVLlvDtt9+SJ08eBgwYQOPGjW3zfP/994wePZrBgweTKVMmPvroI3r27Bnv5j6zZs0iX758ie6T/fv306lTJ+bPn0+5cuUoV64cr7/+OnPmzGHFihW89tprtG7dmg4dOmBn93is/fTp05k4cSKzZs0iIiICLy8vFi1aRJEiRV7wHkooKioqyQ++qRoCVqxYwcmTJxkyZAjXr1/n4cOHZMqUiYsXL5IvXz527dpFly5dCAsLY/v27dSuXZvffvuNokWL4uzsTLp06RL0FRGRtClXrlz8/vvvttcWi4VWrVolOdiuePHizJs3L8nlzpgx46nTKlSoEG+dAPXq1aNevXpPncfR0ZG+ffvSt2/fJNf7MkjVENCgQQP69+9P06ZNsVgsjBw5Ejs7Oz7//HPi4uLw9fWldOnSlCpVit27d9OkSRMMw2DkyJEADB06NEFfERERSZ5UDQGOjo58+eWXCdqXLVsW77WdnR1BQUEJ+nl5eSXoKyIiIsmT6vcJEBGRtGVyziapXUKa1+36kueyHN0xUERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAkRERExKIUBERMSkFAJERERMSiFARETEpBQCRERETEohQERExKQUAlJJWFgY3bp1w8fHB29vb3r27Mn169cBsFqtzJ07l5o1a1KmTBlatGhBSEhIvPnHjh1LsWLF4v3UqFEjyXXOmzePatWqUbp0aVq1asX58+fjTd+5cyd+fn6UKVOGunXr8sMPPzzXbRYRkZeLQkAqMAyD9u3bc//+febPn8/ChQu5efMmHTt2BGDWrFlMnDiR1q1bs2rVKsqXL88nn3zC2bNnbcs4efIkzZs3Z9euXbafpUuXPnWdy5cvZ/LkyfTt25dly5aRPn162rZtS3R0NADBwcG0b9+ecuXKsWLFCtq3b09gYCBr1qx5oftCRERSj0JAKrh16xaFChVi+PDhFC9enOLFi9OyZUtCQ0P5448/mD17Nq1ataJx48YULFiQrl27UqZMGWbNmmVbxqlTpyhZsiTZs2e3/bi5uT11nU+WWatWLYoVK8aXX37J7du3+fHHHwGYM2cOZcqUYcCAARQqVIi6devSrl07Jk+e/ML3h4iIpA6FgFSQPXt2Jk6cSN68eYHHlwaWLl1KqVKliIuL4/79+3h7e8eb58033+TAgQMAhIeHExYWRqFChZK1vtu3b3P+/Hl8fHxsbU5OTnh4eHDw4EEALly4kGCdJUqU4MqVK1y9evUfb6uIiLy8HFK7ALPr1KkT27ZtI3PmzMyfP5/MmTPj6OhIWFhYvH5Xrlzhzp07wONLAQCrVq2id+/eAFStWpVevXrh4uKSYB1PlpUzZ8547Tly5LBNy5EjB9euXYs3/fLly8DjEJEnT55/u6kiIvKS0ZmAVNa9e3eWL19O2bJladWqFbdu3aJOnTpMmzaNkJAQ4uLi2Lx5M9u3bycmJgaA06dPA5AlSxa+/vprAgIC2L17N506dcIwjATrePjwIQDp06eP1+7o6EhUVBQAH3/8MZs2bWLjxo3ExsZy7Ngxvv32WwDbekVEJG3RmYBUVqxYMQAmTpzIO++8w+rVqwkICCAwMJCGDRsCULZsWVq0aMGKFSsAaNSoETVq1LCNAShWrBjZsmWjUaNGhIaG4uHhEW8dGTJkALANAnwiOjqajBkzAlCvXj2uXLlC//796d27N7lz56ZNmzYEBQUlenZBRERefToTkApu3brFhg0b4rVlzJiRfPnycf36dVxcXJg4cSL/+9//2L17N99//z0xMTHkz58fAIvFkmAQYNGiRQESXEYAyJ07NwA3b96M137jxo14lwg6d+5McHAwO3bsYNu2beTKlQt7e3tdChARSaMUAlLB1atX6dWrF0ePHrW1hYeHc+7cOQoXLkxAQACrV68mY8aMuLm5ERcXx/bt26lcuTIAY8aMwc/PL94yn9xHILHBgq+99hpvvPGGbWAhQGRkJCEhIZQvXx6AhQsXMmLECBwcHMiZMycWi4WtW7dSpkwZnJycnvs+EBGR1KcQkAo8PDzw9vZm4MCBHDlyhGPHjtGjRw/c3NyoV68e2bNnZ9KkSRw8eJCzZ8/Su3dvHjx4QIsWLQCoUaMGJ06cYOzYsVy4cIFdu3YREBBA3bp1KViwIPA4VDwZSAjQsmVLZs2axYYNGzh58iS9e/cmR44cthsMubu7s2jRItauXcvly5eZOXMm69evp3v37im/g0REJEVoTEAqsLOzY8qUKYwdO5YOHToQFRWFr68vCxcuxMnJic6dO/PgwQO6d+/Oo0ePKF++PAsXLiRr1qzA4zEC06dPZ8qUKSxatAgnJyfq1KlDr169bOsYMWIEBw4c4OeffwagadOm3L9/n1GjRhEZGUnZsmWZPXs2jo6OALz11lsMGTKEqVOncuPGDYoUKcL06dPjfa1QRETSFouR2HDyNCoqKoqQkBA8PDwSjJSXtGfelqDULiHNa1kj8IUsd12hfC9kufL/Pjpz6YUte3LOJi9s2fJYt+tLktXvWcc9XQ4QERExKYUAERERk9KYgCTk7DwxtUtI865P65naJYiImJbOBIiIiJjUK38mwGq1MmTIEH7//XccHR0ZPnw4BQoUSO2yREREXnqv/JmArVu3Eh0dzdKlS+nduzejR49O7ZJEREReCa/8mYDg4GCqVKkCgJeXl+3OeYl58m3Iv95D/2lyOOtrhC/akwcYvQjp7DK+sGXLYy/q/bPPnuOFLFf+34v820ufw/WFLVseS+779+R497S7Abzy9wkYMGAA77//Pm+//TYA77zzDlu3bsXBIWG+CQ8Ptz2GV0RExCyKFi2a6MPgXvkzAc7OzkRGRtpeW63WRAMAgJOTE0WLFiVdunRYLJaUKlFERCRVGIZBTEzMU58B88qHgLJly7J9+3Zq167Nb7/9ZnuaXmLs7Oz0WFwRETGVJ4+TT8wrfzngybcDTp48iWEYjBw5MtEn6YmIiEh8r3wIEBERkX/mlf+KoIiIiPwzCgEiIiIm9coPDExr9u/fT48ePShcuDCGYRAdHc2QIUMoUaJEapcmifjr+xUbG0uLFi0oWLAg27Zto0uXLile0+LFi7l16xZdu3ZN8XWnVZcuXWLcuHGEhYWRIUMGMmTIwBdffEGRIkUS7V+5cmV2794dr03vS8r65ptv2LNnD7GxsVgsFvr27cvatWtp1aoVK1euJFu2bDRt2jS1y0x1CgEvoYoVKzJx4uOHF+3atYtJkyYxc+bMVK5KnubP71dkZCT+/v6MGDEiVQKAPH8PHz6kY8eODBs2jDJlygBw5MgRgoKCWLBgQSpXJ4k5ffo0P//8M4sXL8ZisXD8+HH69u3LunXrUru0l45CwEvu/v37uLm54e/vj5ubG3/88QfffPMNAQEBXL58mbi4OFq1akXt2rXx9/enePHinDp1ioiICCZNmsSNGzeYMGECAHfv3uXBgwf8/PPPLFiwgB9++AGLxULt2rVp0aJFKm9p2uDk5ETjxo0JCgoiV65cTJw4kYULF/LTTz/x8OFDsmbNytSpU/nhhx/Yvn07jx494ubNm7Ro0YJt27Zx6tQp+vTpQ/Xq1Vm3bh3fffcdjo6OvPHGGwQFBbF+/Xp++eUXHj16xMWLF2nXrh1+fn4cPHiQkSNH4urqir29PV5eXqm9K9KM7du3U7FiRVsAAPD09GT+/PlcvnyZgIAA4uLisFgsDBw4kOLFi9v66X1JHS4uLly9epUVK1ZQtWpV3nzzTVasWIG/vz9Dhgyx9Rs1ahTFixenfv363Lx5kw4dOrBq1Sq+/PJLDh48iNVqpWXLlnzwwQfx/g2eM2cO9vb2qbeBz5FCwEto3759+Pv7Ex0dzYkTJ5g2bRozZ86kTp061KhRg4ULF+Lm5sb48eOJiIjAz8+PihUrAo//cRowYAATJ05kw4YNtG/fngULFnDv3j0+++wzxowZw+nTp9m4cSOLFi0CoFWrVvj6+uLu7p6am51mvPbaa9y9e5dcuXJhtVq5d+8e8+bNw87OjjZt2nD06FHg8VmDb7/9lg0bNjBv3jyWLVvG/v37mT9/PuXKlWPKlCmsXr0aZ2dnRo4cydKlS8mUKRMRERHMmTOH8+fP89lnn+Hn58fQoUOZPHkyBQsWZPDgwam8B9KWy5cvkz9/ftvrjh07EhERwY0bN8idOzctWrSgevXqHD9+nICAAFatWmXrq/cldeTMmZPp06ezcOFCpk2bRoYMGejZM+Fjyxs2bEhQUBD169dn7dq1+Pn58csvv3D58mUWL15MVFQUjRo1onLlygC2f4PTEoWAl9CfTy+fPXuWJk2aUKBAAQoWLAjAmTNneOutt4DHd0wsVKgQly5dArCNHciVKxe3bt0CHh9sOnfuTLdu3ShZsiQbN27k6tWrtGzZEoA//viDCxcuKAQ8J1evXuWjjz7i1KlT2NnZkS5dOnr16kWmTJkICwsjNjYWgDfffBN4/KmlUKFCWCwWMmfOTFRUFJcuXaJw4cI4OzsDUL58eXbt2kXp0qVtnzRz585tuy/4rVu3bP9/lC1blosXL6b0ZqdZuXLlivdMkunTpwPQqFEjfvvtNyZNmgQ8fj/DwsLizav3JXVcuHABZ2dnRo0aBcDRo0dp164d2bNnj9evcOHCxMXFceXKFTZu3Mi8efNYunQpoaGh+Pv7AxAbG8uVK1cAbO9lWqJvB7zksmXLZvv9ya2OCxUqxMGDBwGIiIjg5MmT5M2bN9H5o6Oj6datG82bN7cFB3d3dwoXLsz8+fNZsGABfn5+FCtW7AVviTlERESwfPly3NzcADhx4gRbt27lq6++YtCgQVitVtuDPJK6dXXevHk5c+YMDx48AODAgQO2f4ASmy9nzpycOXMGwHamQZ6P9957j7179/Lbb7/Z2i5cuEBYWBilSpWy/S0eP3483t8r6H1JLb///jtBQUG2kFywYEHbJZm/atCgAePGjaNw4cK4urri7u5OhQoVWLBgAd999x0ffPAB+fLlA5L+m31V6UzAS+jJ5QA7OzsiIyPp168fq1evtk1v1KgRgwYNomnTpkRFRdGlSxdee+21RJc1f/58QkNDiY2NZfHixQBMmTKFSpUq0bRpU6Kjo/H09CRnzpwpsm1p0Z/fr7i4OLp27UrmzJnZv38/BQoUIGPGjDRp0gSA7Nmzc+PGjWcu083Nja5du9KiRQvs7OzInz8/n3/+ORs2bEi0f1BQEH369MHZ2RknJycyZ878XLfRzJycnJg+fTpffvkl48ePJzY2Fnt7e/r370+pUqUYNGgQ3377LbGxsYwYMSLevHpfUsf777/PmTNnaNCgAZkyZcIwDPr06cN3332XoG+tWrUYMWKE7QzPu+++y4EDB2jWrBkPHjygevXqtjNyaZHuGCgiImJSuhwgIiJiUgoBIiIiJqUQICIiYlIKASIiIialECAiImJSCgEiL4H79+8zZswY3nvvPUqXLk3NmjX55ptviImJeS7L37dvHydPnnwuy3qZHD9+3PY9fRH5+xQCRFLZvXv3aNiwIYcPH2b48OH88MMP9OrViwULFtC/f//nso5PP/3UdgfJtKRz586cO3cutcsQeWXpZkEiqWz8+PGkS5eOuXPnkj59egDy5ctH1qxZ8ff3x9/fn9KlS6dylSKSFulMgEgqio6OZsOGDTRv3twWAJ7w8fHhu+++o2jRogAUK1aMPXv22KavWrWKqlWr2l5PmjSJKlWqUKpUKRo3bsyhQ4eAx3dAg8cPipoyZQoAhw4domnTpnh5efHuu+/y/fff25bTr18/Ro8eTc+ePSldujQffvghJ06cYOLEiXh7e/P222/z008/2fqHhYXRqVMnvLy8eOeddxg/frztdq2rVq2iUaNGdOvWjXLlyrF8+fIE++Dhw4cEBQVRsWJFypcvT58+fYiIiADgxo0bdOvWjfLly+Ph4UG9evX49ddfAfD39+fKlSsMHDiQfv36AXDq1ClatGiBp6cnNWrU4Ntvv+XP90Nbt24d1atXp3Tp0vTu3ZtevXrZ9smTemvXro2npyd+fn7s37/fNu3dd99l7Nix+Pr6Urt2bdq2bRvviXQAvXr1YtiwYYm80yIvJ4UAkVR08eJFHjx4QKlSpRKdXrFiRTJmzPjM5WzZsoXvv/+e8ePHs3HjRkqUKEG3bt2wWq2sWLECgK+++orWrVtz5swZPv30U8qXL8/q1avp2rUr48aNY9OmTbblLVy4kHLlyrF27VpcXFzw9/fn7t27LF26lMqVKzNo0CAMw8AwDDp37kzmzJlZuXIl48ePZ8eOHbbHVwMcPnyYAgUKsHz5cqpVq5ag9sDAQPbu3cvUqVNZsGABp06dYvTo0QD06dOH2NhYlixZwpo1a8iVK5ftaXxTpkwhV65c9OvXjwEDBvDo0SPatm2Ll5cX69atY+DAgXz33XcsXLgQePxY34CAAFq3bs2qVavImDEjGzdutNWxatUqgoKCaN++PWvXrqVy5cq0b9+eq1ev2vqsW7eO2bNn8+WXX1KnTh22bNlCXFwc8DjMbN++nTp16jzz/RJ5aRgikmqCg4ONokWLGufPn39m36JFixq7d++2vV65cqVRpUoVwzAMY+7cuUalSpWMixcvGoZhGOHh4caePXuMmJiYBPOOHDnSaNCgQbxljxs3zvDz8zMMwzD69u1r/Oc//7FNmz9/vlGyZEnj0aNHhmEYRmhoqFG0aFHj9u3bxp49ewwfHx8jNjbW1n///v1GyZIljZiYGGPlypVG0aJFjYiIiES36f79+0aJEiXibdfhw4eNWbNmGYZhGPPmzTOuXr1qm7Zz506jaNGihtVqNQzDMKpVq2YsW7bMMAzDWLZsmVG3bt14y1+1apXx3nvvGYZhGL169TJ69eplmxYTE2O8/fbbxuTJkw3DMIx69eoZY8eOjTd/o0aNjNGjR9vW9eT3J/vY09PT2Lt3r2EYhrFx40ajWrVqiW6nyMtKYwJEUlHWrFmBx49z/jc+/PBDFi9eTI0aNShVqhTvvvsuDRo0wMEh4Z/4mTNnEowxKFOmTLxLAk+emgaQIUMGsmXLZrtc8eS/0dHRnDlzhvv37+Pt7W3rbxgGMTExtk/QWbJkwcnJKdG6z507R2xsLCVLlrS1eXp64unpCUDTpk3ZuHEj//vf/zh37pztkb5xcXEJtu3s2bOcPn2aMmXK2NqsVivR0dFER0fz+++/06BBA9s0BwcHPDw84u2Xjh07xluml5cXZ8+etb1+/fXXbb87OzvzzjvvsGnTJipWrMimTZv48MMPE91OkZeVQoBIKsqfPz9ZsmTh6NGjtgPfn/Xo0YM6depQvXr1BNOenIaGx08n3LBhA3v37uWXX35h6dKlfP/996xcuTLBEyIzZMiQYFlWqzXe8v76yFU7u8SvHMbGxlKgQAFmzpyZYFquXLkAEox1+DNHR8enTrNarbRu3Zo//viD2rVr8+677xITE0OXLl2eWouPjw9Dhw5NMM3BwQF7e/t44wOAeK8T2y9xcXHx9stft6Vu3boEBgbyxRdf2Pa7yKtEYwJEUpG9vT0ffvghCxcutA2me2Lfvn1s2rTJdrYgXbp0REZG2qZfunTJ9vuOHTtYunQpVapUYeDAgfz4449ERkYSHBycYJ3u7u4cPnw4XtuhQ4coWLDg366/YMGChIWFkSVLFgoUKECBAgW4efMmX375ZYIDbmLy5s2Lvb09x44ds7Xt2bOHmjVrcvLkSX799VfmzJlDx44deeedd2yPYU5s2QULFuT8+fO8/vrrtlqOHz/OrFmzsLOzo3DhwrYzCfD4AH/8+PEk98vhw4eT3C9Vq1YlJiaGWbNmkTdvXooXL/7MbRZ5mSgEiKSyLl26EBUVRatWrdi3bx8XL15k9erV9OjRAz8/P8qVKwdAqVKl+P777zl//jzbt29n1apVtmVYrVbGjh3L5s2buXz5MuvWrSM6Otp2UMqUKROnTp0iPDycZs2acfLkSSZMmMC5c+dYs2YNixYt4pNPPvnbtfv6+pI3b14+//xzTpw4waFDhxg4cCB2dnZJngF4wtnZGT8/P0aOHMlvv/3GsWPHGDduHBUrViRLlizY2dmxceNGrly5wubNm20j+Z8EJicnJ86ePcu9e/f46KOPiI6OZuDAgZw5c4bdu3cTFBRE5syZAfjkk0/48ccfWbZsGefOnWPUqFFcuXIFi8UCPP72xKJFi1izZg3nzp3jyy+/5MSJEzRq1Oip9Ts6OlKjRg3mzp2rSwHyakrVEQkiYhiGYYSFhRmDBg0yqlatapQqVcr44IMPjDlz5hjR0dG2PqGhoUb9+vWNkiVLGo0bNzaWLVtmGxhoGIbx7bffGtWqVTNKlixpfPDBB8amTZts07766iujVKlSxogRIwzDMIy9e/fallWjRg1j8eLFtr59+/Y1evfubXu9bNmyeAPeTp8+bRQtWtS4du2aYRiGcfHiRaNDhw5G6dKlDR8fH2PAgAFGeHi4YRjxBy8+TUREhNG/f3+jXLlyho+PjzFw4EAjMjLSMAzDWLJkiVG1alWjdOnSRr169Yz169cbJUuWNH799VfDMAxj8eLFhpeXl9G5c2fbPvrkk0+MUqVKGZUrVzbGjh1rGxz5ZFvefvttw9PT0/jiiy+MJk2aGDNmzLBNX7BggVGtWjXDw8PDaNiwobF//37btD8PQvyzXbt2JXtwp8jLxmIYyThnJyLyijty5AjOzs64u7vb2j788EPatGmDn5/fP17umjVr+P777xO9B4LIy06XA0TEFA4dOkT79u353//+x6VLl5gxYwbXrl2jSpUq/2h5ly5dYuPGjUybNi3JSwYiLzN9O0BETKF58+ZcvnyZrl27Eh4ezptvvsmsWbPInj37P1re5cuXCQgIoGrVqv/qTIJIatLlABEREZPS5QARERGTUggQERExKYUAERERk1IIEBERMSmFABEREZNSCBARETGp/wOf3QnpDFWynwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Code source : https://www.geeksforgeeks.org/how-to-annotate-bars-in-barplot-with-matplotlib-in-python/\n", "# Defining the plot size\n", "plt.figure(figsize=(8, 8))\n", " \n", "# Defining the values for x-axis, y-axis\n", "# and from which dataframe the values are to be picked\n", "plots = sns.barplot(x=\"customer_category\", y=\"CLV\", data=df_cat)\n", " \n", "# Iterating over the bars one-by-one\n", "for bar in plots.patches:\n", " \n", " # Using Matplotlib's annotate function and\n", " # passing the coordinates where the annotation shall be done\n", " # x-coordinate: bar.get_x() + bar.get_width() / 2\n", " # y-coordinate: bar.get_height()\n", " # free space to be left to make graph pleasing: (0, 8)\n", " # ha and va stand for the horizontal and vertical alignment\n", " plots.annotate(format(bar.get_height(), '.2f'),\n", " (bar.get_x() + bar.get_width() / 2,\n", " bar.get_height()), ha='center', va='center',\n", " size=15, xytext=(0, 8),textcoords='offset points')\n", "\n", "plt.xlabel(\"Customer category\", size=14)\n", " \n", "# Setting the label for y-axis\n", "plt.ylabel(\"CLV\", size=14)\n", " \n", "# Setting the title for the graph\n", "plt.title(\"CLV per category\")\n", " \n", "# Finally showing the plot\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 679, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
customer_categoryCLVcontributioncontribution_to_CLV
0Bronze395.0863990.6789010.678901
1Diamond37242.65494463.99636763.996367
2Gold16019.64962127.52755927.527559
3Silver4537.5610307.7971737.797173
\n", "
" ], "text/plain": [ " customer_category CLV contribution contribution_to_CLV\n", "0 Bronze 395.086399 0.678901 0.678901\n", "1 Diamond 37242.654944 63.996367 63.996367\n", "2 Gold 16019.649621 27.527559 27.527559\n", "3 Silver 4537.561030 7.797173 7.797173" ] }, "execution_count": 679, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Computing the contribution of each category to the total CLV of the next six months\n", "df_cat[\"contribution_to_CLV\"] = df_cat['CLV']/df_cat['CLV'].sum()*100" ] }, { "cell_type": "code", "execution_count": 683, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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LhdPRERUaugssDMyMiCEQEhIiDTM1dUVwcHB+OCDDzB69Gj8+eefqFu3rq5KICIiKjV0dkj82rVrSE9Px4gRIzBkyBCcOXMGKpUKNWrUgEKhgIuLCyIjI3W1eCIiolJFZz1sU1NTjBw5En379sXt27cxatQolCtXThpvbm6O+Pj4Qtu5fPmyrkokeqdER0eXdAlE9C/oLLBr1aqFmjVrQqFQoFatWihbtiySk5Ol8ampqbkCXBsHBweYmJjoqkx6S8Qc3F/SJZR6TZo0KekSiKgQGRkZWjuqOjskHhoaisWLFwMAEhISkJ6eDjMzM9y5cwdCCJw4cQKOjo66WjwREVGporMedp8+fTBjxgwMHDgQCoUCAQEBMDAwwNSpU5GVlQUXFxc0bNhQV4snIiIqVXQW2MbGxli+fHme4T/88IOuFklERFRq8cYpREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBooc2JGRkejWrRs6duyI8PBwXdZERERErzHUNiIzMxNGRkbS6y1btkhB3bt3b/Tq1Uv31RERERGAAnrY7u7uOHbsmPTa1NQUv/76K37//XcYGxvrpTgiIiLKpjWwN2zYgIiICHh4eCA+Ph6zZ89GbGwsYmJisHz5cn3WSERE9M7Teki8XLly8PX1xbVr1+Dn54f69etj3LhxMDU11Wd9REREhAJ62FlZWTh27BiSkpKwceNGWFtbY+jQofj111/1WR8RERGhgB72pEmTUKlSJaSnp+PAgQOYO3cuOnTogK+//hqhoaH45ptv9FknERHRO01rYMfHx+Orr74CALi5uQEALCws4O3tjdjYWL0UR0RERNm0BnbdunUxatQoZGRkoG3btrnG2djY6LouIiIieoXWwF60aBGuX78OY2Nj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xf30008xadIkAIAQAkqlEleuXIGTkxMAoHXr1oiMjNTFoomIiEolnfSwzc3NAQApKSmYOHEivLy8EBgYCIVCIY1/8eJFkdq6fPmyLkokeudER0eXdAn0L3D/kU4CGwAePHgADw8PDBo0CN27d8fSpUulcampqShXrlyR2nFwcICJiYmuyqS3RMzB/SVdQqnXpEkTnbV9T2ctUw5d7j96e2RkZGjtqOrkkPjjx48xYsQITJs2DX369AEA1K1bF1FRUQCAiIgIODo66mLRREREpZJOAnvdunV4/vw51qxZA3d3d7i7u8PLywvBwcHo378/MjMz0blzZ10smoiIqFTSySHx2bNnY/bs2XmGb9myRReLIyIiKvX4Q2giIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZYGATERHJAAObiIhIBhjYREREMsDAJiIikgEGNhERkQwwsImIiGSAgU1ERCQDDGwiIiIZ0GlgX7x4Ee7u7gCAuLg4DBw4EIMGDYKfnx80Go0uF01ERFSq6Cyw//vf/2L27NnIyMgAACxatAheXl7Ytm0bhBA4dOiQrhZNRERU6ugssGvUqIHg4GDp9ZUrV+Dk5AQAaN26NSIjI3W1aCIiolLHUFcNd+7cGXfv3pVeCyGgUCgAAObm5njx4kWR2rl8+bJO6iN610RHR5d0CfQvlMb99+eff2LBggX5jqtbty5mz56dZ/iVK1ewfft23Lt3D+XLl0eHDh3QrVs3KV8yMjKwefNmnDlzBhqNBs7OznB3d4epqalO10UfdBbYrzMw+P/OfGpqKsqVK1ek+RwcHGBiYqKr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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Code source : https://www.geeksforgeeks.org/how-to-annotate-bars-in-barplot-with-matplotlib-in-python/\n", "# Defining the plot size\n", "plt.figure(figsize=(8, 8))\n", " \n", "# Defining the values for x-axis, y-axis\n", "# and from which dataframe the values are to be picked\n", "plots = sns.barplot(x=\"customer_category\", y=\"contribution_to_CLV\", data=df_cat)\n", " \n", "# Iterating over the bars one-by-one\n", "for bar in plots.patches:\n", " \n", " # Using Matplotlib's annotate function and\n", " # passing the coordinates where the annotation shall be done\n", " # x-coordinate: bar.get_x() + bar.get_width() / 2\n", " # y-coordinate: bar.get_height()\n", " # free space to be left to make graph pleasing: (0, 8)\n", " # ha and va stand for the horizontal and vertical alignment\n", " plots.annotate(format(bar.get_height(), '.2f'),\n", " (bar.get_x() + bar.get_width() / 2,\n", " bar.get_height()), ha='center', va='center',\n", " size=15, xytext=(0, 8),textcoords='offset points')\n", "\n", "plt.xlabel(\"Customer category\", size=12)\n", "\n", "# Setting the label for y-axis\n", "plt.ylabel(\"contribution to CLV in %\", size=12)\n", " \n", "# Setting the title for the graph\n", "plt.title(\"The contribution of each category to the total CLV of the next six months\")\n", " \n", "# Finally showing the plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Analyzing the frequency__" ] }, { "cell_type": "code", "execution_count": 575, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.displot(df_rfmt['frequency'])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 608, "metadata": { "scrolled": true }, "outputs": [], "source": [ "df_freq = pd.DataFrame(df_rfmt.groupby(['customer_category'])['frequency'].mean().reset_index())" ] }, { "cell_type": "code", "execution_count": 609, "metadata": {}, "outputs": [ { "data": { "image/png": "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ku4G9N69eyVJnp6eqly5shYsWCDpbvB16tRJW7ZseWAdtWrV0tdff62EhASlpKRo3LhxWr9+vSSpS5cuWrx4sYwxqlixYrrbX7t2TTt27JAkfffdd3J3d5eXl5d8fX21atUqxcTESLp7Tn/48OF/+rm8+OKL2rx5s327WbNmaeHChfr+++/16quvql27dipevLi+++47JScnS7obqklJSZKk2rVra/369bpy5YokadmyZfbz9vXq1dOqVaskSdevX9e3334rm82mSpUq6eTJkzp48KAk6dixY/rpp59Uo0aNdGts166dvv32Wx0+fFhNmjT50zEBzsIMHMgEWbJk0ezZs/Xee+/pk08+UVJSkgYNGqSqVatKkrp166bOnTsra9asevbZZ+3b+fn56e2331bTpk1VuHDhVCEzZcoUTZgwQa1atVJCQoJatmypV155Jd2Z6j0dO3bU+fPn1aZNGxljVKNGDftFZWXLllXu3LkfOMu890vIlClTlC1bNn300UdydXVVu3btdPnyZbVv3142m02FChXS+++//6efS7169XT8+HF16tRJklSqVClNmDBBERERGjNmjMLCwuTq6qoKFSooMjJS0t1fQgYMGCB3d3cFBQXpX//6l3r06CGbzSZPT099+OGHstlsGjVqlAIDA+0z+H/84x/Kli2b8uXLpxkzZmjChAmKi4uTzWZTcHCwihcvrv3796epMX/+/PL29lbJkiVTHR0BHjU2Y3icKOBMmzZt0tKlSxUaGurQ9z1z5oz8/Py0adMm+2H53zt37pxatWqVbsg9ipYuXary5curSpUqSkhIUOfOnTVgwAD7tQEZde3aNbVt21ZLly5VoUKFMqla4O9jBg48gWbMmKEVK1Zo9OjR6Ya3Fd2bzaekpCgxMVHNmjX7y+G9YsUKTZs2TX369CG88chjBg4AgAVxERsAABZEgAMAYEGWOQeekpKi2NhYubu7p/oeKQAAjytjjBITE+Xh4ZHqIUqShQI8NjbW/rUSAACeJF5eXsqZM2eqNssE+L3vY3p5eSlLlixOrgYAgMyXkJCgyMjIdO9JYJkAv3fYPEuWLMqaNauTqwEAwHHSO3XMRWwAAFgQAQ4AgAUR4AAAWBABDsDSLl26pIEDB6pGjRqqVq2ahgwZosuXL0u6+/XTBQsWqGnTpqpSpYq6detmf9rb/Rw+fFjdu3dXtWrV5Ovrq9GjR9ufry5JMTExGjNmjHx9fVWjRg29/fbb+u233zJziEC6CHAAlmWM0RtvvKHo6GgtXrxYS5YsUVRUlPr27StJmj9/vkJCQtSjRw+FhYWpevXq6tq1q3799dd0+7t8+bL8/f1VuHBhffHFF5oxY4YOHjyowYMH29cZNGiQ/vOf/yg4OFhLly7V7du31a1bNyUkJDhiyMB/GYuIi4sze/fuNXFxcc4uBcAj4sqVK2bw4MHm7Nmz9rbNmzcbLy8vc+PGDVOtWjUzbdq0VNt0797djBw5Mt3+FixYYGrXrm2SkpLsbT/99JPx8vIy58+fN0eOHDFeXl5m586d9uUxMTGmWrVqJiws7CGPDnhw9jEDB2BZTz/9tEJCQlS4cGFJdw+nf/HFF/Lx8VFycrKio6NVrVq1VNuUK1dOP/74Y7r9NWzYUNOnT5erq6u97d7Xd6Kjo3Xq1ClJsj/XXZI8PDxUrFix+/YJZBaHfg/8t99+U5s2bfTZZ5/Jzc1NI0eOlM1mU+nSpTV27Ng0t4kDgIx68803tWXLFuXOnVuLFy9W7ty5lSVLFl26dCnVeufPn9e1a9fS7aNo0aIqWrRoqrb58+erQIECKl26tGJjYyXd/UWhWLFikqTk5GRdunRJ+fPnz4RRAffnsMRMTEzUmDFjlC1bNklScHCwBg8erM8//1zGGG3ZssVRpQB4DA0aNEgrV67U888/L39/f129elUtW7bURx99pPDwcCUnJ2vTpk3aunWrEhMTM9TnlClTtG3bNo0dO1aurq7y8fFRiRIlNHbsWF25ckVxcXGaOnWqrl+/nuE+gYfFYQH+wQcfqGPHjnrmmWck3b3Ss0aNGpKkunXrateuXY4qBcBjqEyZMqpYsaJCQkKUkpKiNWvWKCAgQFWqVFG7du3k7e2t0NBQdevWTZ6eng/sKzk5WWPHjtUnn3yicePGqVGjRpLu3gnyww8/VHR0tOrUqaNq1arp+vXrqlu37p/2CTxsDjmEHhYWpnz58qlOnTr6+OOPJd29evTeuSUPDw/dunUrQ3392VdAADw5bt68qcOHD+vFF19M1Z4vXz6Fh4crMjJSXbt2Vbt27RQfH69cuXIpNDRU+fPn1759+9LtMyEhQTNnztSBAwf05ptvqnTp0mnWHT16tG7duiU3Nzdlz55dAQEB8vHxuW+fQGZwSICvXr1aNptNu3fv1tGjRzVixIhU56BiY2OVK1euDPXl7e3NvdABSJIOHjyoDz/8UPXr15ePj48k6datW7py5Yq6du2q1atXq3r16nr11Vcl3Z1Zjxo1Si1atEh1Ido9KSkpevPNN3X06FHNmzdPderUSbU8JiZGffr00ZgxY+zbnzt3TmfOnNG4cePS7RP4O+Lj4+87cXXIIfSlS5dqyZIlCg0NVbly5fTBBx+obt262rNnjyRpx44daa4UBYA/4+3trWrVqikwMFAHDx7UkSNHNHjwYOXLl0+tW7fW008/rRkzZmjv3r369ddf9dZbb9m/t31PVFSU/eK0ZcuWaevWrRo9erTKli2rqKgo+5/ExER5enoqOTlZEydO1PHjx3Xw4EH16dNHtWrVUq1atZz1MeAJ5bTLvkeMGKFZs2apQ4cOSkxMVNOmTZ1VCgCLcnFx0axZs1SuXDn17t1bXbt2lYeHh5YsWSIPDw/169dPTZo00aBBg9SuXTvFxcVpyZIlyps3r70PX19fffbZZ5KkdevWSZICAwPl6+ub6s+BAwckSSEhIcqRI4c6dOigvn37qnr16po1a5bjB48nns0YY5xdREbcO4zAIXQAwJPiQdnHF68BALAgAhwAAAsiwAEAsCCH3koVwJNhbckizi7hsffKibPOLgFOxgwcAAALIsABALAgAhwAAAsiwAEAsCACHAAACyLAAQCwIAIcAAALIsABALAgAhwAAAsiwAEAsCACHAAACyLAAQCwIAIcAAALIsABALAgAhwAAAsiwAEAsCACHAAACyLAAQCwIAIcAAALIsABALAgAhwAAAsiwAEAsCACHAAACyLAAQCwIAIcAAALIsABALAgAhwAAAsiwAEAsCACHAAACyLAAQCwIAIcAAALIsABALAgAhwAAAsiwAEAsCACHAAACyLAAQCwIAIcAAALIsABALAgAhwAAAsiwAEAsCACHAAAC3Jz1BslJycrMDBQJ0+elM1m0zvvvKOkpCT17t1bzz33nCSpU6dOat68uaNKAgDAshwW4Fu3bpUkLV++XHv27FFISIgaNmwof39/9ejRw1FlAADwWHBYgDdu3Fj169eXJF24cEG5cuVSeHi4Tp48qS1btqhYsWIKCAiQp6eno0oCAMCybMYY48g3HDFihDZv3qyZM2fq8uXLKlOmjLy9vTVnzhxFR0dr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ChcurLffflsRERHav3+/AgMD5eLi8sCZ9z2enp5q06aNJk6cqJ9//llHjhzR5MmTVbNmTeXJk0cuLi7asGGDzp8/r02bNtmvGL/3y46Hh4d+/fVX3bhxQ6+88ooSEhIUGBioEydOaOfOnRo/frz9Odxdu3bVv//9b61YsUInT55UcHCwzp8/L5vNJunuVfqff/65vvzyS508eVJTp05VRESE2rdvf9/6s2TJoiZNmmjBggUcPof1OPUMPPCYuHTpkgkKCjJ169Y1Pj4+5uWXXzaffvqpSUhIsK9z+PBh8+qrr5oKFSqYDh06mBUrVtgvYjPGmM8++8w0aNDAVKhQwbz88stm48aN9mXTp083Pj4+5r333jPGGLN79257X02aNDHLli2zrztixAjz1ltv2V+vWLEi1cVZx48fN15eXubixYvGGGPOnDljevfubSpVqmRq1KhhRo8ebW7dumWMSX2h3f3ExMSYUaNGmapVq5oaNWqYwMBAExsba4wxZvny5aZu3bqmUqVKpnXr1mbdunWmQoUK5qeffjLGGLNs2TJTuXJl069fP/tn1LVrV+Pj42Nq165tJk2aZL+Q795Y6tWrZypWrGiGDRtmOnbsaObOnWtfHhoaaho0aGC8vb1Nu3btzJ49e+zLfn/B3O99//33Gb4QEXiU2IzJwHEyAHCygwcPytPTUyVKlLC3tWjRQj179lSbNm3+536//PJLLV26NN3vuAOPMg6hA7CE/fv364033tD//d//6ezZs5o7d64uXryoOnXq/E/9nT17Vhs2bNBHH330wMPswKOKq9ABWEKXLl107tw5DRgwQLdu3VK5cuU0f/58Pf300/9Tf+fOnVNAQIDq1q37t2bwgLNwCB0AAAviEDoAABZEgAMAYEEEOAAAFkSAAwBgQQQ4AAAWRIADAGBB/w/VHp2rKlNhIQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Code source : https://www.geeksforgeeks.org/how-to-annotate-bars-in-barplot-with-matplotlib-in-python/\n", "# Defining the plot size\n", "plt.figure(figsize=(8, 8))\n", " \n", "# Defining the values for x-axis, y-axis\n", "# and from which dataframe the values are to be picked\n", "plots = sns.barplot(x=\"customer_category\", y=\"frequency\", data=df_freq)\n", " \n", "# Iterating over the bars one-by-one\n", "for bar in plots.patches:\n", " \n", " # Using Matplotlib's annotate function and\n", " # passing the coordinates where the annotation shall be done\n", " # x-coordinate: bar.get_x() + bar.get_width() / 2\n", " # y-coordinate: bar.get_height()\n", " # free space to be left to make graph pleasing: (0, 8)\n", " # ha and va stand for the horizontal and vertical alignment\n", " plots.annotate(format(bar.get_height(), '.2f'),\n", " (bar.get_x() + bar.get_width() / 2,\n", " bar.get_height()), ha='center', va='center',\n", " size=15, xytext=(0, 8),textcoords='offset points')\n", "\n", "plt.xlabel(\"Customer category\", size=14)\n", " \n", "# Setting the label for y-axis\n", "plt.ylabel(\"Frequency\", size=14)\n", " \n", "# Setting the title for the graph\n", "plt.title(\"Frequency per category\")\n", " \n", "# Finally showing the plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gold customers purchase more frequently from the company" ] }, { "cell_type": "code", "execution_count": 576, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 2669.000000\n", "mean 4.311353\n", "std 6.598983\n", "min 1.000000\n", "25% 1.000000\n", "50% 2.000000\n", "75% 5.000000\n", "max 128.000000\n", "Name: frequency, dtype: float64" ] }, "execution_count": 576, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt['frequency'].describe()" ] }, { "cell_type": "code", "execution_count": 649, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9037092544023979" ] }, "execution_count": 649, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Getting the percentage of customers with a frequency less than 10.\n", "\n", "len(df_rfmt[df_rfmt['frequency'] < 10])/len(df_rfmt)" ] }, { "cell_type": "code", "execution_count": 612, "metadata": {}, "outputs": [], "source": [ "# Getting the number of customers per category for those with a frequency greater than 10.\n", "\n", "df_freq_1 = pd.DataFrame(df_rfmt[df_rfmt['frequency'] > 10]\\\n", " .groupby(['customer_category'])['customer_category']\\\n", " .agg('count'))\n", "\n", "df_freq_1.columns = ['n_customers']\n", "\n", "df_freq_1 = df_freq_1.reset_index()" ] }, { "cell_type": "code", "execution_count": 613, "metadata": {}, "outputs": [ { "data": { "image/png": "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z564evUq5s6di8OHD2PChAkICAjAtGnT8mUZAwcOlK5CKCejR4/G/fv3tV0G0ReLF6gh0gB/f3/o6+vj559/RpEiRQAAlStXRunSpeHm5gY3NzfUr19fy1USkRxxj50onymVShw5cgT9+vWTQj1TkyZNsHXrVlhYWAAAatWqhfPnz0vT9+/fj1atWkmPly9fjpYtW6JevXro3bs3Ll++DODtVbSAtzf6WblyJQDg8uXL6Nu3Lxo0aABHR0fs2LFD6mfq1KmYP38+xo8fj/r166NTp064efMmli5dCltbWzg4OODYsWPS/LGxsfjhhx/QoEEDtG7dGv7+/tJlPPfv349evXph7NixsLGxwZ49e7Jtg9evX8PHxwfNmjVD48aNMWXKFCQlJQEAnj59irFjx6Jx48awsrKCi4sLLl68CABwc3PD48eP4enpialTpwIA7ty5gwEDBsDa2hrt27fH5s2b8e51tYKCgtCuXTvUr18fEydOxIQJE6Rtkllvx44dYW1tje7duyM0NFSa5ujoiIULF8Le3h4dO3bEsGHDstwlDAAmTJiAOXPm5PBKExVODHaifPbo0SOkpKSgXr16OU5v1qwZihYt+tF+/vjjD+zYsQP+/v4IDg5G3bp1MXbsWKhUKuzduxcAsGzZMgwZMgR3797FwIED0bhxYxw4cADu7u5YtGgRfvvtN6m/7du3w8bGBocOHULx4sXh5uaGf//9F7t27YKdnR28vLwghIAQAqNHj0bJkiWxb98++Pv749SpU9JtggHg6tWrqFq1Kvbs2YM2bdpkq93b2xshISFYtWoVAgICcOfOHcyfPx8AMGXKFKSnpyMwMBAHDx6EmZmZdJe0lStXwszMDFOnTsWMGTPw5s0bDBs2DA0aNEBQUBA8PT2xdetWbN++HcDbW6hOnz4dQ4YMwf79+1G0aFEEBwdLdezfvx8+Pj4YMWIEDh06BDs7O4wYMQJPnjyR5gkKCsLGjRuxePFidO7cGX/88QcyMjIAvP0D5eTJk+jcufNHXy+iQkMQUb4KCwsTFhYW4sGDBx+d18LCQpw7d056vG/fPtGyZUshhBA///yzaN68uXj06JEQQojExERx/vx5kZaWlu258+bNEz169MjS96JFi0T37t2FEEJ4eHiI7777Tpq2bds2YWlpKd68eSOEEOL69evCwsJCvHjxQpw/f140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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Code source : https://www.geeksforgeeks.org/how-to-annotate-bars-in-barplot-with-matplotlib-in-python/\n", "# Defining the plot size\n", "plt.figure(figsize=(8, 8))\n", " \n", "# Defining the values for x-axis, y-axis\n", "# and from which dataframe the values are to be picked\n", "plots = sns.barplot(x=\"customer_category\", y=\"n_customers\", data=df_freq_1)\n", " \n", "# Iterating over the bars one-by-one\n", "for bar in plots.patches:\n", " \n", " # Using Matplotlib's annotate function and\n", " # passing the coordinates where the annotation shall be done\n", " # x-coordinate: bar.get_x() + bar.get_width() / 2\n", " # y-coordinate: bar.get_height()\n", " # free space to be left to make graph pleasing: (0, 8)\n", " # ha and va stand for the horizontal and vertical alignment\n", " plots.annotate(format(bar.get_height(), '.2f'),\n", " (bar.get_x() + bar.get_width() / 2,\n", " bar.get_height()), ha='center', va='center',\n", " size=15, xytext=(0, 8),textcoords='offset points')\n", "\n", "plt.xlabel(\"Customer category\", size=14)\n", " \n", "# Setting the label for y-axis\n", "plt.ylabel(\"number of customers\", size=14)\n", "\n", "# Setting the title for the graph\n", "plt.title(\"Nombre of customers per category for those with frequency higher than 10\")\n", " \n", "# Finally showing the plot\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 616, "metadata": {}, "outputs": [], "source": [ "# Getting the number of customers per category for those with a frequency less than 10.\n", "\n", "df_freq_2 = pd.DataFrame(df_rfmt[df_rfmt['frequency'] < 10]\\\n", " .groupby(['customer_category'])['customer_category']\\\n", " .agg('count'))\n", "\n", "df_freq_2.columns=['n_customers']\n", "\n", "df_freq_2 = df_freq_2.reset_index()" ] }, { "cell_type": "code", "execution_count": 617, "metadata": {}, "outputs": [ { "data": { "image/png": "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hIWFITo6GmfPnsW+ffuwcuVKLFiwAADy7UtERESaKZaw7969O6ZMmQIAEEJAV1cX0dHRsLGxAQB06NABp06dQlRUFOzs7KBQKFC9enVkZ2cjKSkp375ERESkmWIJeyMjIxgbGyMtLQ2TJ0+Gu7s7hBBQKBTS8NTUVKSlpcHY2FhtvNTU1Hz7EhERkWaK5Zw9AMTHx2PixIkYOnQonJyc4O/vLw1LT09H2bJlYWxsjPT0dLV2ExMTtfPzuX01cfXq1aJbAJKFqKioki6BiKjYFUvYP336FKNHj4aPjw/atGkDAGjatCkiIyPRunVrREREwNbWFrVr14a/vz/GjBmDhIQEqFQqVKhQId++mjA3N0epUqXev+DvI95/HPokWFlZlXQJRERakZGRUeBObrGE/caNG5GSkoL169dj/fr1AIC5c+di4cKFWLlyJerVq4du3bpBV1cX1tbWcHZ2hkqlgo+PDwDAw8MD3t7ean2JiIhIMwohhCjpIopa7l83H7pnX2XiKi1URR+DxHVTS7oEIiKteFv28WZ1IiIimWPYExERyRzDnoiISOYY9kRERDLHsCciIpI5hj0REZHMMeyJiIhkjmFPREQkcwx7IiIimWPYExERyRzDnoiISOYY9kRERDLHsCciIpI5hj0REZHMMeyJiIhkjmFPREQkcwx7IiIimWPYExERyRzDnoiISOYY9kRERDLHsCciIpI5hj0REZHMMeyJiIhkjmFPREQkcwx7IiIimWPYExERyRzDnoiISOYY9kRERDLHsCciIpI5hj0REZHMMeyJiIhkjmFPREQkcwx7IiIimWPYExERyRzDnoiISOYY9kRERDLHsCciIpI5hj0REZHMMeyJiIhkjmFPREQkcwx7IiIimWPYExERyRzDnoiISOYY9kRERDLHsCciIpI5hj0REZHMMeyJiIhkjmFPREQkcwx7IiIimWPYExERyRzDnoiISOYY9kRERDLHsCciIpI5hj0REZHMMeyJiIhkjmFPREQkcwx7IiIimWPYExERyRzDnoiISObeK+xVKhUA4MmTJ/jll19w7949bdRERERERUijsL906RI6duyIc+fO4enTp/jqq68wd+5cODo64vfff9d2jURERFQIGoX90qVL0blzZ5ibm2P//v3Q09PDmTNnMG/ePAQGBmq7RiIiIioEjcL+2rVrGDNmDIyM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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Code source : https://www.geeksforgeeks.org/how-to-annotate-bars-in-barplot-with-matplotlib-in-python/\n", "# Defining the plot size\n", "plt.figure(figsize=(8, 8))\n", " \n", "# Defining the values for x-axis, y-axis\n", "# and from which dataframe the values are to be picked\n", "plots = sns.barplot(x=\"customer_category\", y=\"n_customers\", data=df_freq_2)\n", " \n", "# Iterating over the bars one-by-one\n", "for bar in plots.patches:\n", " \n", " # Using Matplotlib's annotate function and\n", " # passing the coordinates where the annotation shall be done\n", " # x-coordinate: bar.get_x() + bar.get_width() / 2\n", " # y-coordinate: bar.get_height()\n", " # free space to be left to make graph pleasing: (0, 8)\n", " # ha and va stand for the horizontal and vertical alignment\n", " plots.annotate(format(bar.get_height(), '.2f'),\n", " (bar.get_x() + bar.get_width() / 2,\n", " bar.get_height()), ha='center', va='center',\n", " size=15, xytext=(0, 8),textcoords='offset points')\n", "\n", "plt.xlabel(\"Customer category\", size=14)\n", " \n", "# Setting the label for y-axis\n", "plt.ylabel(\"number of customers\", size=14)\n", "\n", "# Setting the title for the graph\n", "plt.title(\"Nombre of customers per category for those with frequency less than 10\")\n", " \n", "# Finally showing the plot\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 582, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "customer_category\n", "Bronze 175\n", "Diamond 4\n", "Gold 6\n", "Silver 33\n", "Name: CustomerID, dtype: int64" ] }, "execution_count": 582, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt[df_rfmt['frequency'] > 10].reset_index().groupby(['customer_category'])['CustomerID'].agg('count')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Analyzing the monetary values__" ] }, { "cell_type": "code", "execution_count": 626, "metadata": {}, "outputs": [ { "data": { "image/png": "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rXnuuee0bNkyLV26VOeff74WLFigvn37JtQcFBQU6O2335YxRrt27dL+/fvVp0+fhJqDzMzM8FWoP/zhD9XU1NTq/i7E/YUP8X4V29y5c/X3v/9dnTt3Di+bPn265s6dq2AwqM6dO2vu3LlKTk5WWVmZ1q5dK8dxdOedd6qwsFBbtmzRzJkzj1q3rRo9erRmz56tpKSkY+5XPM/B/fffr+rqahlj9Lvf/U65ubkJNQc+n0+lpaX66quvFAwGNWbMGOXl5bWqOYj74AJAaxH3pxQAoLUguABgCcEFAEsILgBYQnABwBKCi7izevVqPfXUU7EeRtiqVas0bdq0WA8DrUB8XXIF6OB9FIDWiODCiurqai1evFjGGH3++ecaOHCgMjIy9NZbBz9m/vHHH9d//vMf/fGPf5TjODr77LN1zz33qH379rrkkks0bNgwVVZWav/+/VqwYIHy8vK0detWzZ49W/v27VO7du00c+ZMpaam6vnnn5ck5eTkqKioSKWlpWpoaNBXX32lIUOG6LbbbtOqVav0l7/8Rfv27VOfPn30yiuvqKKiQh6PR9u3b9f48eP12muvHXNfnn32WX322WeaNWuWpIM3zjnzzDM1ePDgY77WoS655BI9++yzys3NVXV1tcrLy7V06dJj7kvXrl2j+H8EMXHK7z8GHENVVZXp0aOH2blzp/n222/NBRdcYJYvX26MMWbatGmmrKzMFBUVmW3bthljjFmyZIkpKSkxxhhz8cUXm6eeesoYY8yzzz5rJk2aZIwxpri42NTW1hpjjPnkk0/MZZddZowx5uGHHzYPP/ywMcaYJ554wqxatcoYY0x9fb3p0aOH+frrr83KlSvNgAEDTDAYNMYYc8cdd5gVK1YYY4wpKyszjz322HH3Zffu3ebCCy80TU1NxnEcc/HFF5tdu3a1+FrNtwi9+OKLw/tYVVVlrr/++hb3BfGFI1xY06VLF5111lmSpNNPP119+vSRdPBIdPXq1erevbtyc3MlScXFxXr88cfDz22+E9h5552nN998Uz6fTzU1NbrzzjvD63z77bfau3fvYa85btw4VVVV6cknn9Qnn3yiYDCo/fv3Szp4z4nmGxldddVVKisr04gRI/S3v/1NzzzzzHH344wzztD555+v6upqpaSkqGPHjjrzzDNbfK2WtLQvp59++gmfj7aD4MKalJSUw74+9Dp1c8QV5saYw26jmZaWJknh2+c5jqPU1FS98sor4XW++OILZWVlHbad+fPna9u2bbriiit06aWXav369eHXateuXXi9nj176ssvv9Sbb76p3Nxc/ehHP2pxX4YNG6bXX39dKSkpGjZs2Alf68h9kxTev0j3BW0f71JAq9C9e3e9//772r59uyTphRdeUO/evY+7fkZGhjp27BiO1Lp163TddddJOvyex+vWrdO4ceM0aNAg1dXVadeuXXIc56jtuVwuDR8+XHPnztWVV155wvH2799fmzZtUmVlpQYMGBDxa51++un69NNPJUkVFRUn3BfEF45w0Sq0b99e99xzjyZNmqRgMKicnBzde++9LT5n4cKFmj17tp544gmlpKToD3/4g1wul3r27KmpU6eqffv2Gj9+vO644w5lZmbqjDPOUF5eXjjqRxoyZIieeuopXXrppSccb7t27ZSfn69AIKD09HRJiui1Jk+erDlz5qi8vFxFRUUn3BfEF+4WBujgP+uXL1+uLVu2aMaMGbEeDuIUR7iApEmTJqmurk5PPvmkJOnAgQMqLi4+5rqTJ09W//79bQ4PcYIjXACwhF+aAYAlBBcALCG4AGAJwQUASwguAFhCcAHAkv8PzW7DNWQQajcAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.displot(df_rfmt['monetary_value'])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 633, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 2669.000000\n", "mean 169.242452\n", "std 291.921682\n", "min 1.650000\n", "25% 74.476667\n", "50% 117.286667\n", "75% 186.017500\n", "max 8322.120000\n", "Name: monetary_value, dtype: float64" ] }, "execution_count": 633, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_rfmt['monetary_value'].describe()" ] }, { "cell_type": "code", "execution_count": 634, "metadata": {}, "outputs": [], "source": [ "df_mon = pd.DataFrame(df_rfmt.groupby(['customer_category'])['monetary_value'].mean().reset_index())" ] }, { "cell_type": "code", "execution_count": 636, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfsAAAHxCAYAAABqEBW0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABVY0lEQVR4nO3dd3xO9///8UcSO0FQRa0KooQQUqNilqrRGrVXjba0ZhWxQmuv2kXVLKpGVCk1i9asUWpvEnvVSETW9f794ev6NZ9Ee7XJJZw+77dbbs11xvu8znVSz+v9Puc6x8UYYxARERHLck3uAkRERMS5FPYiIiIWp7AXERGxOIW9iIiIxSnsRURELE5hLyIiYnEKe5H/qNDQULp06ZLcZdhNnjyZwYMHJ3cZSer3339n4MCByV2GiMJe5L/q8uXLnDt3LrnLsLTTp09z7dq15C5DhBTJXYBIUrDZbAwfPpyDBw8SHh6OMYahQ4fi7e1NpUqVWLduHVmzZgWgcePGdOrUiXLlyjF27Fj27NlDbGwsRYoUYcCAAXh4eFC1alV8fX05ceIEPXr0IEWKFHz55ZdERUVx+/Zt6tWrR/fu3QGYMWMGy5Ytw93dHX9/fzZt2sRPP/1EVFTUE9v/s8mTJxMSEkJoaCjXr1/H19eX8uXLs2LFCi5evEivXr2oU6cO0dHRjBw5kp07d+Lm5oavry99+/a111u/fn127tzJlStXqFmzJr179wbgp59+Ytq0aURHR5MmTRoCAwPx9fVlwIABXLt2jfbt2zNr1iymT5/Oxo0biYyMJCIigsDAQKpXr87kyZM5cOAA169fx9vbm8OHDxMUFERAQAAAAwYMoGDBgrz77rv2fRo3bhxhYWH2Xu3PP//M5MmTWbp06RO382dVq1Zl4sSJFCtWLN7r/fv3M3bsWCIiInBxcaFLly5UqVIl3t9EkSJFePfdd9m9ezcPHjygR48evPHGGwAsXbqURYsWYbPZ8PT0JCgoiPz589OnTx/u3LlDaGgolStXplevXnHaXLZsGXPmzMHV1ZVMmTIxatQosmXLluDf3ksvvcSkSZO4f/8+ffv2ZcSIEQkeCz8/PyIiIhg0aBAHDx4kffr0FChQAICRI0dy6tQpBg8ezJ07d3BxcaFdu3bUq1eP3bt3M2zYMNKlS8eDBw/w8fEha9as9OjRA4CVK1eybt06vvjii3/4f5NYkhGxgP3795suXbqY2NhYY4wxX375penQoYMxxpjevXubmTNnGmOMOX36tKlcubKJjY01kydPNiNHjjQ2m80YY8znn39uBg0aZIwxpkqVKmbKlCnGGGNsNptp2bKlOXfunDHGmKtXr5rChQubW7dumZ9//tnUqFHD3L1719hsNtO3b19TpUoVY4z5y/b/bNKkSaZKlSrm3r17JiIiwrz66qtmxIgRxhhjNmzYYN544w1jjDETJ040nTt3NlFRUSY2Ntb06dPHBAUF2esdOXKkvb5ixYqZkJAQc+7cOVOnTh1z+/ZtY4wxJ0+eNOXLlzfh4eFm165dpnbt2sYYYy5evGhatWplIiIijDHG/PDDD6ZOnTr2+mrUqGGio6ONMcbMmTPHdO3a1RhjzP37903ZsmXN3bt34+xTSEiIKVOmjImMjDTGGNOtWzezZMmSv93OZ599Zt+f33//3d7e49d37twxb7zxhgkNDbXva8WKFc2lS5fiva/e3t5m2rRpxhhjjh07ZkqVKmVu3bpldu/ebZo3b24ePHhgjDHml19+MTVr1jTGGBMYGGjefffdeG09bqNMmTLm8uXL9vchKCjoL//2goODzQcffGCMMX95LMaOHWt69OhhYmNjzf37981bb71lAgMDTXR0tHn99dfNunXr7PtboUIFs3//frNr1y7zyiuvmIsXLxpjjDl69KgpX768/Tg1b97c/Pzzzwnui/z3qGcvluDn50fGjBn59ttvCQ0NZffu3bi7uwPQqFEjPvvsM9q3b09wcDANGjTA1dWVLVu2cP/+fXbs2AFAdHQ0WbJksbfp7+8PgIuLC9OnT2fLli388MMPnDlzBmMMERERbN26lTfffJMMGTIA0KJFC3bt2gXwt+3/2WuvvUb69OkBePHFF6lQoQIAefLk4c6dO8Cj3vHHH39MypQpAWjVqhWdOnWyt/H6668DkC1bNrJkycLdu3c5ePAg169fp02bNvblXFxcCAkJibP9nDlzMmrUKFatWsWFCxfsvdTHSpQoQYoUj/65aNCgAV988QW3b99m7dq1VK5c2b7/j+XOnZtXXnmFn376iXLlyrFz506GDRuGu7v7X27n7xw4cIAbN27E2W8XFxdOnDjBSy+9FG/5li1bAvDKK6/g7e3Nnj17OHjwIBcuXKBp06b25e7evWt/n0uVKpXg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UNhPmTKFhQsX0q1bN/z8/LDZbOzfv58pU6aQOnVqOnTo4Ow6RURE5F9yKOyXLFnCsGHDqFq1qn1a4cKFyZ49O0OHDlXYi4iIPMMc+updeHg4L7/8crzpL7/8Mrdv307qmkRERCQJORT2fn5+zJ49m9jYWPu02NhYZs+eja+vr9OKExERkcRzaBi/b9++tGjRgu3bt1O4cGEAjh49SmxsLDNnznRqgSIiIpI4DoV9/vz5+fHHH1m1ahVnz54lTZo0VK5cmTp16pAuXTpn1ygiIiKJ4PBX7zJlykTr1q2dWYuIiIg4gUNhv3//foYNG8bZs2eJjo6ON/9Jz88VERGR5OfwOfuXX36ZDz/8UE+RExERec44FPbXr19n2rRpeHl5ObseERERSWIOffWuTp06rF271tm1iIiIiBM41LP/4IMPeOedd1i2bBk5c+bExcUlzvyvv/7aKcWJiIhI4jkU9j179iRTpkxUrVpV5+xFRESeMw6F/fHjx1m+fDn58+d3dj0iIiKSxBw6Z1+qVClOnTrl7FpERETECRzq2ZcrV47+/fuzbt06cufOjZubW5z53bp1c0pxIiIikngOhf3PP/9MkSJFuHnzJjdv3owz738v1hMREZFni0NhP3/+fGfXISIiIk7i0Dl7EREReX4p7EVERCxOYS8iImJxCnsRERGLczjst2zZQps2bahatSqXLl1i/PjxLF682Jm1iYiISBJwKOy///57evfujb+/P7du3cJms/Hiiy8ycuRI5s6d6+QSRUREJDEcCvuZM2fy2Wef0blzZ1xdH63SokULRowYoYfgiIiIPOMcCvuQkBCKFi0ab3rhwoXj3WRHREREni0Ohb23tzdbt26NNz04OJhChQoleVEiIiKSdBy6g15gYCAdOnRg586dREdHM3XqVM6fP8+xY8eYPn26s2sUERGRRHCoZ+/v78/atWvx9vamatWq3Lt3j1KlSrFmzRrKli3r7BpFREQkERzq2QNkzZpVT7cTERF5DjkU9q1atUrw6XYuLi6kTJmSrFmzUrNmTSpWrJjkBYqIiEjiODSM/+qrr7J//36yZs1K9erVqVatGtmzZ2ffvn1ky5aNtGnT0qNHD4KDg51dr4iIiPxDDvXsd+7cSd++fWnRokWc6a+++iorVqxg4cKFlC1blnHjxvHOO+84pVARERH5dxzq2R89epTXXnst3nR/f38OHToEQNGiRbly5UrSViciIiKJ5lDYv/LKK8yfPx+bzWafZoxh4cKFFChQAIBDhw6RPXt251QpIiIi/5pDw/hBQUG8//77bNmyhcKFC2OM4fjx40RERDB9+nT27dtHz549GTRokLPrFRERkX/IobAvWrQoGzZsYPXq1Zw8eRI3NzeqVKlC7dq1SZcuHRcvXmTp0qW88sorzq5XRERE/iGHv2fv4eFBkyZN4k2/evUquXLlStKiREREJOk4FPZnzpxh9OjRnDp1yn7e3hhDVFQUd+7c4dixY04tUkRERP49hy7QCwoK4u7du3To0IE//viD999/n9q1axMREcGIESOcXaOIiIgkgkM9+8OHD7N48WIKFy7MihUr8PLyokWLFuTLl48lS5ZQr149J5cpIiIi/5ZDPfsUKVKQPn16ALy8vOzD9q+99honT550XnUiIiKSaA6FfalSpZg1axYREREULVqUjRs3YrPZOHjwIKlTp3Z2jSIiIpIIDoV937592bFjB4sWLaJu3br88ccf+Pv707NnT5o3b+7sGkVERCQRHDpnHxsby48//khkZCRp06YlODiYX3/9FU9PT0qUKOHkEkVERCQxHOrZt27dmqNHj5I2bVoA0qVLR+XKlRX0IiIizwGHwj579uxcu3bN2bWIiIiIEzg0jF+oUCG6du1K4cKFyZkzZ7yL8kaPHu2U4kRERCTxHAp7FxcX3n77bWfXIiIiIk7gUNjrLnkiIiLPL4fO2QNs2bKFtm3bUrVqVS5dusSECRNYvHixM2sTERGRJOBQ2H///ff07t2bUqVKcevWLWw2G1mzZmXkyJHMnTvXySWKiIhIYjgU9jNnzuSzzz6jc+fOuLo+WqVFixaMGDGCr7/+2qkFioiISOI4FPYhISEULVo03vTChQtz8+bNJC9KREREko5DYe/t7c3WrVvjTQ8ODqZQoUJJXpSIiIgkHYeuxg8MDKRDhw7s3LmT6Ohopk6dyvnz5zl27BjTp093do0iIiKSCA717P39/Vm7di3e3t5UrVqVe/fuUapUKdasWUPZsmWdXaOIiIgkgkM9+4ULF1KzZk26devm7HpEREQkiTnUs//mm2+oWLEi7dq1Izg4mLCwMGfXJSIiIknEobBfvXo1y5cvx8/Pj9mzZ1OuXDk6duzIqlWrePDggbNrFBERkURw+A56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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Code source : https://www.geeksforgeeks.org/how-to-annotate-bars-in-barplot-with-matplotlib-in-python/\n", "# Defining the plot size\n", "plt.figure(figsize=(8, 8))\n", " \n", "# Defining the values for x-axis, y-axis\n", "# and from which dataframe the values are to be picked\n", "plots = sns.barplot(x=\"customer_category\", y=\"monetary_value\", data=df_mon)\n", " \n", "# Iterating over the bars one-by-one\n", "for bar in plots.patches:\n", " \n", " # Using Matplotlib's annotate function and\n", " # passing the coordinates where the annotation shall be done\n", " # x-coordinate: bar.get_x() + bar.get_width() / 2\n", " # y-coordinate: bar.get_height()\n", " # free space to be left to make graph pleasing: (0, 8)\n", " # ha and va stand for the horizontal and vertical alignment\n", " plots.annotate(format(bar.get_height(), '.2f'),\n", " (bar.get_x() + bar.get_width() / 2,\n", " bar.get_height()), ha='center', va='center',\n", " size=15, xytext=(0, 8),textcoords='offset points')\n", "\n", "plt.xlabel(\"Customer category\", size=14)\n", " \n", "# Setting the label for y-axis\n", "plt.ylabel(\"average monetary value\", size=14)\n", " \n", "# Setting the title for the graph\n", "plt.title(\"average monetary value per category\")\n", " \n", "# Finally showing the plot\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 650, "metadata": {}, "outputs": [], "source": [ "# Getting the 80th percentile \n", "perct = df_rfmt['monetary_value'].quantile(q=0.8)" ] }, { "cell_type": "code", "execution_count": 656, "metadata": {}, "outputs": [], "source": [ "# Getting the number of customers per category for those with a monetary value greater than the 80th percentile.\n", "\n", "df_mon_1 = pd.DataFrame(df_rfmt[df_rfmt['monetary_value'] > perct]\\\n", " .groupby(['customer_category'])['customer_category']\\\n", " .agg('count'))\n", "\n", "df_mon_1.columns = ['n_customers']\n", "\n", "df_mon_1 = df_mon_1.reset_index()\n", "\n" ] }, { "cell_type": "code", "execution_count": 661, "metadata": {}, "outputs": [ { "data": { "image/png": "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n2bUuXNnTJ06FW5ubsjOzsa0adNgamoKHx8fLFy4ELVr14aDgwO0tbVhbW2Nvn37QqVSwdfX9z/Nl4iIiEoWhRBCvGuiI0eOYM2aNfjuu+9QvXp16OjkzSxffPFFkRX4LrndT+oedjEZvUiGqj5tscvHF3cJREQa631/90oitXo+vvvuOwA5z3jJpVAoIISAQqFAZGRk0VRHREREGket8HH48OGiroOIiIg+EWqFj2rVqkEIgdDQUNy9exdKpRK1a9eGra0t9PT0irpGIiIi0iBqhY/Hjx9j1KhRePjwoXTDsQcPHqBKlSrYuHEjTExMirpOIiIi0hBa754E8Pf3R+XKlXHs2DEEBwfjt99+w9GjR/HFF18gMDCwqGskIiIiDaJWz0d4eDh27NiB8uXLS8MqVKiAiRMnwtXVtciKIyIiIs2jVs9H+fLlkZCQkG94QkICdHV1C7smIiIi0mBqhQ9HR0d4e3sjLCwMiYmJSExMxD///ANfX184OjoWdY1ERESkQdQ67DJ27Fg8e/YMI0eORO49ybS1tdGvXz9MmjSpSAskIiIizaJW+NDT08OcOXMwbdo03L9/H6VKlUKNGjVQunRpxMfHf7R3WCMiIiL5qXXYpX79+oiPj0e5cuVgYWGBunXronTp0oiOjkaHDh2KukYiIiLSIG/s+dizZw927doFABBCYNSoUfme6fL06VNUrly5aCskIiIijfLG8OHg4IBHjx4BACIiImBpaQkDA4M80xgYGKBz585FWyERERFplDeGjzJlymDMmDEAcm6v3r17d95KnYiIiP4ztc756NGjB/bu3YvHjx8DAJYtW4bu3bvD09MTSUlJRVogERERaRa1wkdQUBAWL16MhIQEHD9+HKtWrYKjoyMePnyIgICAoq6RiIiINIha4eP333/H4sWL0aBBA+zfvx+tWrXCqFGjMH36dBw5cqSoayQiIiINolb4SElJweeffw6VSoXQ0FC0a9cOAPJd/UJERET0Lmqlh4YNG2L16tWoUKECEhMT0aFDB8TExGDhwoVo0qRJEZdIREREmkStng9fX19cvHgRW7ZswcSJE1GlShWsW7cOT548ga+vb1HXSERERBpErZ4PMzMzhISE5Bk2adIkXnpLRERE702t8JF7p9M3cXFxKZRiiIiISPOpFT5WrFiR57VSqcTz58+ho6MDS0tLhg8i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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Code source : https://www.geeksforgeeks.org/how-to-annotate-bars-in-barplot-with-matplotlib-in-python/\n", "# Defining the plot size\n", "plt.figure(figsize=(8, 8))\n", " \n", "# Defining the values for x-axis, y-axis\n", "# and from which dataframe the values are to be picked\n", "plots = sns.barplot(x=\"customer_category\", y=\"n_customers\", data=df_mon_1)\n", " \n", "# Iterating over the bars one-by-one\n", "for bar in plots.patches:\n", " \n", " # Using Matplotlib's annotate function and\n", " # passing the coordinates where the annotation shall be done\n", " # x-coordinate: bar.get_x() + bar.get_width() / 2\n", " # y-coordinate: bar.get_height()\n", " # free space to be left to make graph pleasing: (0, 8)\n", " # ha and va stand for the horizontal and vertical alignment\n", " plots.annotate(format(bar.get_height(), '.2f'),\n", " (bar.get_x() + bar.get_width() / 2,\n", " bar.get_height()), ha='center', va='center',\n", " size=15, xytext=(0, 8),textcoords='offset points')\n", "\n", "plt.xlabel(\"Customer category\", size=14)\n", " \n", "# Setting the label for y-axis\n", "plt.ylabel(\"number of customers\", size=14)\n", " \n", "# Setting the title for the graph\n", "plt.title(\"Nombre of customers per category for those with a monetary value greater than the 80th percentile.\")\n", " \n", "# Finally showing the plot\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 662, "metadata": {}, "outputs": [], "source": [ "# Getting the number of customers per category for those with a monetary value less than the 80th percentile.\n", "\n", "df_mon_2= pd.DataFrame(df_rfmt[df_rfmt['monetary_value'] < perct]\\\n", " .groupby(['customer_category'])['customer_category']\\\n", " .agg('count'))\n", "\n", "df_mon_2.columns = ['n_customers']\n", "\n", "df_mon_2 = df_mon_2.reset_index()\n" ] }, { "cell_type": "code", "execution_count": 663, "metadata": {}, "outputs": [ { "data": { "image/png": "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r58sxREREVHpoFbgOHToELS1tXH48OE80xQKBQMHERERvZNagePYsWNy10FERESlmNr3Unn69CnWrFmDKVOm4NmzZzh48CCuXbsmZ21ERERUSqgVOC5fvgx7e3ucPXsW+/fvR1paGsLCwtC/f3+cOnVK7hqJiIiohFP7XiqjR4/Gr7/+Cm1tbQDArFmzMHr0aCxevFjWAomIiKjkU/teKt27d8/T3rt3b9y+fbvQiyIiIqLSRa3A8fnnn+PWrVt52sPDw1GpUqVCL4qIiIhKF7XOUvn222/h5eWFb7/9FkIInD59GgkJCfj1118xceJEuWskIiKiEk6twDFw4EBUrFgRGzduhJ6eHhYvXozatWvD19cXPXr0kLtGIiIiKuHUChwA0KlTJ3Tq1EnOWoiIiKiUUitwvHr1CkFBQbh9+zYyMzPzTJ8zZ06hF0ZERESlh1qBY/z48Th//jxatGgBPT09uWsiIiKiUkatwHHu3DmsX78e1tbWctdDREREpZBap8XWrl0bSqVS7lqIiIiolFJrhMPPzw8//PADevbsiapVq0JDI3dOcXJykqM2IiIiKiXUChx79uzBnTt3EBAQkOcYDoVCwcBBRERE76RW4AgMDMTChQvh6Ogodz1ERERUCql1DEf58uVRv359uWshIiKiUkqtEQ5PT0/MmDED33//PapXrw4trdxPq1GjhizFERERUemgVuD4/vvvAby+p0oOhUIBIQQUCgViYmLkqY6IiIhKBbUCR0hIiNx1EBERUSmmVuCoVq0ahBAIDQ3F7du3oVQqUadOHdja2kJHR0fuGomIiKiEUytwPHjwAGPGjMG9e/eki4DFxsaicuXK2Lx5M0xMTOSuk4iIiEowtc5SmT17NipVqoQTJ05g9+7d2LdvH44fP44aNWrA19dX7hqJiIiohFNrhCMsLAw7duzAZ599JrWVL18eEydOhLOzs2zFERERUemg1gjHZ599hhcvXuRpf/HiBbS1tQu7JiIiIipl1BrhcHBwgKenJ7y8vGBhYQEAiIyMhI+PDxwcHNReWGRkJBYtWoSAgADExMRgzpw50NTUhI6ODubPn48KFSrAx8cHERER0NfXBwCsXr0aWVlZmDhxIl69eoVKlSph3rx5KFOmzEesLhERERUHtQLHuHHj8PTpU4wePRpCCACApqYmBg0ahEmTJqm1oPXr1yM4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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Code source : https://www.geeksforgeeks.org/how-to-annotate-bars-in-barplot-with-matplotlib-in-python/\n", "# Defining the plot size\n", "plt.figure(figsize=(8, 8))\n", " \n", "# Defining the values for x-axis, y-axis\n", "# and from which dataframe the values are to be picked\n", "plots = sns.barplot(x=\"customer_category\", y=\"n_customers\", data=df_mon_2)\n", " \n", "# Iterating over the bars one-by-one\n", "for bar in plots.patches:\n", " \n", " # Using Matplotlib's annotate function and\n", " # passing the coordinates where the annotation shall be done\n", " # x-coordinate: bar.get_x() + bar.get_width() / 2\n", " # y-coordinate: bar.get_height()\n", " # free space to be left to make graph pleasing: (0, 8)\n", " # ha and va stand for the horizontal and vertical alignment\n", " plots.annotate(format(bar.get_height(), '.2f'),\n", " (bar.get_x() + bar.get_width() / 2,\n", " bar.get_height()), ha='center', va='center',\n", " size=15, xytext=(0, 8),textcoords='offset points')\n", "\n", "plt.xlabel(\"Customer category\", size=14)\n", " \n", "# Setting the label for y-axis\n", "plt.ylabel(\"number of customers\", size=14)\n", " \n", "# Setting the title for the graph\n", "plt.title(\"Nombre of customers per category for those with a monetary value less than the 80th percentile.\")\n", " \n", "# Finally showing the plot\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }