32 minute read

Open in Colab

Introduction

theLook Ecommerce dataset is a publicly available dataset in Google BigQuery. It includes information about customers, orders, and products. For this project, I will use SQL and Pandas to perform customer segmentation based on demographic, RFM analysis, and Cohort analysis.

For convenience, I ran this project on Google Colab to combine the SQL result with Pandas. To open and run this project, click the ‘Open in Colab’ button above. Remember to change the project ID to your own in each cell of the notebook.

Analysis

Demographics Segmentation

The dataset includes demographic information such as gender, age, and country, which I will use to segment the customers. However, to make the age feature more meaningful, it needs to be grouped into five categories. Under 18, 18-30, 31-45, 46-60, and Over 60 are the age groups used to group the age feature. Here is the query to perform this grouping:

CASE
    WHEN age < 18 THEN 'Under 18'
    WHEN age BETWEEN 18 AND 30 THEN '18-30'
    WHEN age BETWEEN 31 AND 45 THEN '31-45'
    WHEN age BETWEEN 46 AND 60 THEN '46-60'
    ELSE 'Over 60'
END AS age_category,

By combining this feature with others, we can obtain demographic segmentation grouped by age category, gender, and country using the following query:

SELECT
    CASE
        WHEN age < 18 THEN 'Under 18'
        WHEN age BETWEEN 18 AND 30 THEN '18-30'
        WHEN age BETWEEN 31 AND 45 THEN '31-45'
        WHEN age BETWEEN 46 AND 60 THEN '46-60'
        ELSE 'Over 60'
    END AS age_category,
    gender,
    country,
    COUNT(*) AS customer_count
FROM
    bigquery-public-data.thelook_ecommerce.users
GROUP BY
    age_category,
    gender,
    country
ORDER BY
    customer_count DESC

The top 5 results of the query are shown in the following table

age_category gender country customer_count
46-60 F China 4430
31-45 F China 4425
31-45 M China 4208
46-60 M China 4193
18-30 M China 3771

The results indicate that most customers are from China, with the majority falling within the 46–60 and 31–45 age ranges. Additionally, both genders are female.

RFM Analysis

RFM analysis is a customer segmentation technique that divides customers into groups based on their past purchase habits. It evaluates customers by scoring them in three categories: how recently they’ve made a purchase, how often they buy, and the total amount of the price from their purchases. The following query will retrieve the user_id and the RFM values:

SELECT
    orders.user_id,
    MAX(orders.created_at) as last_purchase,
    COUNT(*) AS frequency,
    SUM(order_items.sale_price) AS monetary_value
FROM
    bigquery-public-data.thelook_ecommerce.orders orders
    INNER JOIN
        bigquery-public-data.thelook_ecommerce.order_items order_items
    ON
        orders.order_id = order_items.order_id
WHERE
    orders.status = 'Complete'
GROUP BY
    orders.user_id

To obtain the most recent purchase date, we can use the function MAX(orders.created_at) AS last_purchase. The frequency can be determined by counting the number of orders for each customer. The monetary value can be calculated by multiplying the sale price of the items, so it reflects the price when the item is ordered, by using SUM(order_items.sale_price) AS monetary_value. Group each entry by user_id and consider only completed orders with WHERE orders.status = 'Complete'. The resulting table displays the first five entries.

user_id last_purchase frequency monetary_value
42746 2024-02-12 01:23:00+00:00 8 402.49
5667 2020-11-15 03:12:00+00:00 7 390.94
39989 2024-02-20 16:27:32.139503+00:00 7 317.27
48668 2022-09-14 11:12:00+00:00 7 204.88
80317 2023-08-07 15:59:00+00:00 6 224.14

The table, however, only shows each user’s summary of their purchases. To get the RFM score, I use Pandas for ease of use. In pandas there’s a method called qcut which is Quantile-based discretization function. It discretizes variable into equal-sized buckets based on rank or based on sample quantiles. I use 5-category scores, and because we are only interested in the numeric value, we can set the labels to False. Here is the code to get the RFM score:

import pandas as pd

pd.qcut(df[col_name], 5, labels=False, duplicates='drop')

Do this for each column, and then combine all scores from each column to get the RFM score. We now have each customer segmented based on their RFM score under five categories. Here are the first five results of the best customers.

user_id last_purchase frequency monetary_value rfm_score rfm_category
42746 2024-02-12 01:23:00+00:00 8 402.49 9 Best
39989 2024-02-20 16:27:32.139503+00:00 7 317.27 9 Best
80317 2023-08-07 15:59:00+00:00 6 224.14 8 Best
80986 2024-02-14 15:37:00+00:00 6 222.18 9 Best
10748 2023-09-12 09:01:00+00:00 8 687.94 8 Best

Cohort Analysis

Cohort analysis is a subset of behavioral analytics that takes the data from a given platform like e-commerce and rather than looking at all users as one unit; it breaks them into related groups for analysis. These related groups, or cohorts, usually share common characteristics or experiences within a defined time-span.

Cohort Items

The first step is to get the first purchase month of each user.

SELECT
    user_id,
    FORMAT_DATE('%Y-%m-01', MIN(created_at)) AS cohort_month,
FROM
    bigquery-public-data.thelook_ecommerce.orders
GROUP BY
    user_id
ORDER BY
    user_id

The FORMAT_DATE('%Y-%m-01', MIN(created_at)) is used to get the first day of the month of the first purchase each customer made. The first five results of the query are shown below.

user_id cohort_month
1 2023-06-01
2 2022-02-01
3 2023-04-01
4 2021-10-01
5 2023-12-01

Let’s name this table as cohort_items.

User Activities

The next step is to get the unique difference between the first purchase month and the next purchase month. This is done by using the following query with a combination of previous query:

WITH cohort_items as (
    SELECT
        user_id,
        FORMAT_DATE('%Y-%m-01', MIN(created_at)) AS cohort_month,
    FROM
        bigquery-public-data.thelook_ecommerce.orders
    GROUP BY
        user_id
    ORDER BY
        user_id
)
SELECT
    orders.user_id,
    DATE_DIFF(DATE(orders.created_at), DATE(ci.cohort_month), MONTH) as month_number
FROM
    bigquery-public-data.thelook_ecommerce.orders orders
    JOIN cohort_items ci ON orders.user_id = ci.user_id
GROUP BY
    orders.user_id,
    month_number
ORDER BY
    orders.user_id,
    month_number

Pay attention to the DATE_DIFF(DATE(orders.created_at), DATE(ci.cohort_month), MONTH) as month_number part. This is used to get the difference between the first purchase month and the next purchase month. The first five results of the query are shown below.

user_id month_number
1 0
2 0
2 1
3 0
4 0

Let’s name this table as user_activities. Take, for example, user 2, value 1 in the month_number means that user 2 made the second purchase 1 month later after the first purchase. Check out the query and its result below for clarity.

SELECT user_id, created_at
FROM bigquery-public-data.thelook_ecommerce.orders
WHERE user_id = 2
user_id created_at
2 2022-03-29 13:49:00+00:00
2 2022-02-20 13:49:00+00:00

Cohort Retention Activities

The next step is to count how many users for each first purchase month and the next purchase month. This is done by using the following query with a combination of previous query:

WITH cohort_items as (
    SELECT
        user_id,
        FORMAT_DATE('%Y-%m-01', MIN(created_at)) AS cohort_month,
    FROM
        bigquery-public-data.thelook_ecommerce.orders
    GROUP BY
        user_id
    ORDER BY
        user_id
),
user_activities as (
    SELECT
        orders.user_id,
        DATE_DIFF(DATE(orders.created_at), DATE(ci.cohort_month), MONTH) as month_number
    FROM
        bigquery-public-data.thelook_ecommerce.orders orders
        JOIN cohort_items ci ON orders.user_id = ci.user_id
    GROUP BY
        orders.user_id,
        month_number
    ORDER BY
        orders.user_id,
        month_number
)
SELECT
    ci.cohort_month,
    ua.month_number,
    COUNT(*) as num_users
FROM
    user_activities ua
    JOIN cohort_items ci ON ua.user_id = ci.user_id
GROUP BY
    ci.cohort_month,
    ua.month_number
ORDER BY
    ci.cohort_month,
    ua.month_number

Let’s call this table cohort_retention_activities. We only count how many users on each cohort_month and month_number. The first five results of the query are shown below.

cohort_month month_number num_users
2019-01-01 0 15
2019-01-01 2 1
2019-01-01 8 1
2019-01-01 10 2
2019-01-01 12 1

Cohort Size

We’re almost done. The next step is to count how many users made their first purchase on each cohort_month. This is done by using the following query with a combination of cohort_items table:

WITH cohort_items as (
    SELECT
        user_id,
        FORMAT_DATE('%Y-%m-01', MIN(created_at)) AS cohort_month,
    FROM
        bigquery-public-data.thelook_ecommerce.orders
    GROUP BY
        user_id
    ORDER BY
        user_id
)
SELECT
    cohort_month,
    COUNT(*) as num_users
FROM
    cohort_items
GROUP BY
    cohort_month
ORDER BY
    cohort_month

We call this table cohort_size. The first five results of the query are shown below.

cohort_month num_users
2019-01-01 15
2019-02-01 40
2019-03-01 77
2019-04-01 112
2019-05-01 151

Cohort Retention Rate

Finally, the last step is putting it all together to get the proportion of active users (based on the cohort_size) that has completed their first purchase, second purchase, and so on. This is done by using the following query with a combination of all previous queries:

WITH cohort_items AS (
    SELECT
        user_id,
        FORMAT_DATE('%Y-%m-01', MIN(created_at)) AS cohort_month,
    FROM
        bigquery-public-data.thelook_ecommerce.orders
    GROUP BY
        user_id
    ORDER BY
        user_id
),

user_activities AS (
    SELECT
        orders.user_id,
        DATE_DIFF(DATE(orders.created_at), DATE(ci.cohort_month), MONTH) AS month_number
    FROM
        bigquery-public-data.thelook_ecommerce.orders orders
        JOIN cohort_items ci ON orders.user_id = ci.user_id
    GROUP BY
        orders.user_id,
        month_number
    ORDER BY
        orders.user_id,
        month_number
),

cohort_retention_activities AS (
    SELECT
        ci.cohort_month,
        ua.month_number,
        COUNT(ci.cohort_month) AS num_users
    FROM
        user_activities ua
        JOIN cohort_items ci ON ua.user_id = ci.user_id
    GROUP BY
        ci.cohort_month,
        ua.month_number
    ORDER BY
        ci.cohort_month,
        ua.month_number
),

cohort_size AS (
    SELECT
        cohort_month,
        COUNT(*) AS num_users
    FROM
        cohort_items
    GROUP BY
        cohort_month
    ORDER BY
        cohort_month
)

SELECT
    cra.cohort_month,
    cs.num_users AS total_users,
    cra.month_number,
    CAST(cra.num_users AS FLOAT64) / cs.num_users * 100 AS percentage
FROM
    cohort_retention_activities cra
    JOIN cohort_size cs ON cra.cohort_month = cs.cohort_month
ORDER BY
    cra.cohort_month,
    cra.month_number

The first five entries will look like this

cohort_month total_users month_number percentage
2019-01-01 15 0 100
2019-01-01 15 2 6.66667
2019-01-01 15 8 6.66667
2019-01-01 15 10 13.3333
2019-01-01 15 12 6.66667

Parsing and Transforming the Data

We need Pandas to parse and transform the data for visualization later. Use the following code to set the index and make it more efficient.

def parse_cohort_df(df):
    df = df.copy()
    df.cohort_month = pd.to_datetime(df.cohort_month)
    cohort_index = []
    for i in df.cohort_month.value_counts(sort=False):
        cohort_index.extend(list(range(i)))
    df['cohort_index'] = cohort_index
    df = df.set_index(['cohort_month', 'cohort_index'])
    cohort_size = df.groupby('cohort_month')['total_users'].first()
    label_index = df.index.levels[0].strftime("%b %d, %Y") + ' (n = ' + cohort_size.astype(str) + ')'
    df.index = df.index.set_levels([label_index, df.index.levels[1]])
    return df

The result will look like this:

cohort_month cohort_index total_users month_number percentage
Jan 01, 2019 (n = 15) 0 15 0 100
  1 15 2 6.66667
  2 15 8 6.66667
  3 15 10 13.3333
  4 15 12 6.66667

Then use this function to transform the parsed data above into wide format. This function will return 2 dataframes, one for the percentages, one for the total_users.

def transform_into_cohort_shape(df):
    return df.percentage.unstack(1), df.month_number.unstack(1)

The result of the first 5 months for percentages will look like this:

cohort_month\cohort_index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
Jan 01, 2019 (n = 15) 100 6.66667 6.66667 13.3333 6.66667 6.66667 6.66667 6.66667 13.3333 6.66667 6.66667                                                                                          
Feb 01, 2019 (n = 40) 100 2.5 5 5 2.5 2.5 2.5 2.5 2.5 2.5 7.5 2.5 7.5 5 2.5 5 2.5 2.5 2.5 2.5 2.5 5 2.5 2.5 2.5 2.5 5 2.5 2.5 2.5 2.5 5 2.5                                              
Mar 01, 2019 (n = 77) 100 2.5974 1.2987 1.2987 2.5974 1.2987 2.5974 2.5974 1.2987 1.2987 1.2987 3.8961 3.8961 1.2987 1.2987 3.8961 1.2987 3.8961 2.5974 3.8961 2.5974 2.5974 5.19481 1.2987 1.2987 1.2987 1.2987 1.2987 1.2987 2.5974 1.2987 5.19481 1.2987 3.8961 2.5974 1.2987 2.5974 1.2987 1.2987 1.2987 1.2987 2.5974 2.5974 2.5974 3.8961 2.5974 1.2987 2.5974                
Apr 01, 2019 (n = 112) 100 4.46429 1.78571 3.57143 1.78571 1.78571 1.78571 0.892857 0.892857 0.892857 4.46429 0.892857 0.892857 1.78571 2.67857 2.67857 2.67857 3.57143 1.78571 2.67857 2.67857 1.78571 2.67857 3.57143 3.57143 1.78571 1.78571 2.67857 1.78571 0.892857 2.67857 2.67857 0.892857 2.67857 1.78571 3.57143 2.67857 0.892857 1.78571 3.57143 2.67857 1.78571 2.67857 0.892857 2.67857 0.892857 0.892857 2.67857 4.46429 2.67857 1.78571 1.78571        
May 01, 2019 (n = 151) 100 1.98675 2.64901 0.662252 0.662252 1.3245 1.98675 1.3245 1.98675 2.64901 1.98675 0.662252 0.662252 1.98675 2.64901 0.662252 0.662252 1.98675 2.64901 2.64901 1.98675 1.98675 1.98675 0.662252 0.662252 3.31126 0.662252 2.64901 1.98675 1.98675 2.64901 0.662252 0.662252 1.98675 1.98675 1.98675 3.31126 1.3245 1.3245 0.662252 0.662252 1.3245 2.64901 1.3245 3.31126 2.64901 1.98675 1.3245 3.31126 0.662252 0.662252 4.63576 3.31126 1.3245 0.662252 1.98675

Based on the table above, we can see that the percentage of users who made the first purchase in January 2019 stops at month 10 with the same percentage in average. Another example in May 2019, the percentage of users who made the second purchase 1 month after the first purchase is 1.99%. The percentage of users who made the third purchase 2 months after the first purchase is 2.65%. And so on up until the 55th month, the last month in the dataset, which is Feb 2024 shown in the table below.

cohort_month 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
Oct 01, 2023 (n = 3022) 100 7.51158 8.5043 7.90867 6.05559                                                                                                      
Nov 01, 2023 (n = 3031) 100 11.1184 9.96371 6.5325                                                                                                        
Dec 01, 2023 (n = 3548) 100 12.5705 9.13191                                                                                                          
Jan 01, 2024 (n = 4015) 100 14.7198                                                                                                            
Feb 01, 2024 (n = 5468) 100                                                                                                              

To get a better picture, we remove the zeroth month as it is always 100 percent, and we can visualize the table with pandas styling using the following code:

cohort_percentage.iloc[:,1:].style.background_gradient(cmap='cool')
cohort_index 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
cohort_month                                                                                                              
Jan 01, 2019 (n = 15) 6.666667 6.666667 13.333333 6.666667 6.666667 6.666667 6.666667 13.333333 6.666667 6.666667 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Feb 01, 2019 (n = 40) 2.500000 5.000000 5.000000 2.500000 2.500000 2.500000 2.500000 2.500000 2.500000 7.500000 2.500000 7.500000 5.000000 2.500000 5.000000 2.500000 2.500000 2.500000 2.500000 2.500000 5.000000 2.500000 2.500000 2.500000 2.500000 5.000000 2.500000 2.500000 2.500000 2.500000 5.000000 2.500000 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Mar 01, 2019 (n = 77) 2.597403 1.298701 1.298701 2.597403 1.298701 2.597403 2.597403 1.298701 1.298701 1.298701 3.896104 3.896104 1.298701 1.298701 3.896104 1.298701 3.896104 2.597403 3.896104 2.597403 2.597403 5.194805 1.298701 1.298701 1.298701 1.298701 1.298701 1.298701 2.597403 1.298701 5.194805 1.298701 3.896104 2.597403 1.298701 2.597403 1.298701 1.298701 1.298701 1.298701 2.597403 2.597403 2.597403 3.896104 2.597403 1.298701 2.597403 nan nan nan nan nan nan nan nan
Apr 01, 2019 (n = 112) 4.464286 1.785714 3.571429 1.785714 1.785714 1.785714 0.892857 0.892857 0.892857 4.464286 0.892857 0.892857 1.785714 2.678571 2.678571 2.678571 3.571429 1.785714 2.678571 2.678571 1.785714 2.678571 3.571429 3.571429 1.785714 1.785714 2.678571 1.785714 0.892857 2.678571 2.678571 0.892857 2.678571 1.785714 3.571429 2.678571 0.892857 1.785714 3.571429 2.678571 1.785714 2.678571 0.892857 2.678571 0.892857 0.892857 2.678571 4.464286 2.678571 1.785714 1.785714 nan nan nan nan
May 01, 2019 (n = 151) 1.986755 2.649007 0.662252 0.662252 1.324503 1.986755 1.324503 1.986755 2.649007 1.986755 0.662252 0.662252 1.986755 2.649007 0.662252 0.662252 1.986755 2.649007 2.649007 1.986755 1.986755 1.986755 0.662252 0.662252 3.311258 0.662252 2.649007 1.986755 1.986755 2.649007 0.662252 0.662252 1.986755 1.986755 1.986755 3.311258 1.324503 1.324503 0.662252 0.662252 1.324503 2.649007 1.324503 3.311258 2.649007 1.986755 1.324503 3.311258 0.662252 0.662252 4.635762 3.311258 1.324503 0.662252 1.986755
Jun 01, 2019 (n = 185) 2.162162 2.702703 2.162162 0.540541 1.081081 1.621622 1.081081 1.081081 3.243243 1.081081 3.243243 1.081081 2.702703 1.081081 0.540541 1.081081 3.243243 1.081081 2.162162 1.081081 3.783784 1.621622 0.540541 2.702703 2.162162 1.621622 2.162162 2.162162 2.702703 1.621622 2.702703 2.162162 1.621622 0.540541 1.621622 1.621622 2.702703 3.243243 1.621622 1.621622 1.621622 1.621622 0.540541 1.081081 2.162162 1.081081 1.081081 0.540541 3.243243 2.162162 1.081081 2.702703 1.081081 3.243243 0.540541
Jul 01, 2019 (n = 213) 0.469484 1.408451 2.816901 1.877934 1.877934 1.408451 3.286385 2.347418 1.408451 1.408451 0.469484 2.816901 0.938967 1.408451 2.816901 0.938967 1.877934 1.408451 2.816901 1.877934 1.408451 1.877934 1.877934 1.877934 2.816901 2.347418 1.877934 3.286385 3.286385 2.816901 1.408451 1.877934 0.938967 2.816901 2.816901 3.286385 4.225352 1.408451 1.877934 1.408451 0.469484 0.938967 1.408451 5.164319 1.408451 0.938967 2.347418 2.347418 1.877934 0.469484 2.347418 2.816901 0.938967 nan nan
Aug 01, 2019 (n = 252) 1.587302 1.984127 1.587302 2.380952 1.984127 1.984127 2.380952 3.174603 1.190476 1.587302 4.365079 1.984127 0.396825 1.190476 1.984127 1.984127 3.174603 3.571429 1.587302 1.984127 2.380952 3.571429 2.380952 1.587302 1.984127 1.190476 3.174603 1.190476 1.190476 1.190476 0.793651 1.587302 0.396825 3.968254 0.793651 2.777778 1.190476 2.380952 1.190476 2.380952 2.380952 3.174603 0.793651 0.793651 1.587302 1.587302 0.396825 1.190476 0.396825 1.587302 0.396825 1.190476 0.396825 nan nan
Sep 01, 2019 (n = 260) 1.538462 1.538462 1.923077 0.769231 1.923077 1.538462 1.923077 1.923077 1.153846 1.153846 1.538462 2.307692 0.384615 0.384615 1.923077 3.076923 2.307692 1.923077 2.307692 0.769231 0.769231 0.384615 1.538462 2.307692 1.923077 3.846154 1.923077 1.538462 1.538462 1.923077 1.153846 1.538462 0.384615 1.923077 1.538462 2.692308 1.923077 1.538462 2.307692 2.307692 2.692308 1.538462 0.384615 1.153846 2.307692 0.769231 3.076923 1.153846 3.461538 1.538462 0.769231 0.769231 nan nan nan
Oct 01, 2019 (n = 288) 1.041667 1.041667 1.041667 1.388889 1.388889 1.736111 1.041667 1.736111 1.041667 1.388889 2.083333 1.736111 1.736111 1.736111 1.388889 1.736111 2.083333 1.041667 1.041667 0.694444 1.388889 1.388889 1.736111 0.694444 2.083333 0.694444 0.694444 1.388889 3.472222 0.694444 1.041667 2.430556 2.083333 1.388889 2.430556 1.736111 2.083333 2.083333 2.083333 1.736111 0.694444 2.777778 2.777778 2.430556 2.083333 2.083333 1.041667 2.430556 1.736111 2.430556 2.083333 2.083333 nan nan nan
Nov 01, 2019 (n = 317) 1.261830 1.577287 1.892744 2.523659 2.208202 1.892744 0.946372 1.577287 1.261830 0.630915 2.208202 1.892744 0.946372 2.839117 2.523659 0.946372 1.577287 1.261830 2.839117 2.839117 1.577287 1.892744 2.208202 1.261830 1.577287 2.208202 2.208202 2.523659 2.208202 1.577287 1.261830 0.946372 0.630915 2.208202 3.470032 1.577287 1.892744 0.946372 0.630915 1.577287 1.892744 0.315457 1.892744 1.577287 2.208202 1.577287 1.577287 2.839117 1.577287 1.261830 1.577287 nan nan nan nan
Dec 01, 2019 (n = 375) 1.066667 1.066667 2.400000 2.933333 4.000000 2.400000 1.600000 1.066667 1.600000 1.600000 1.600000 2.133333 1.866667 1.066667 0.800000 2.400000 1.600000 1.866667 1.333333 1.333333 1.600000 1.333333 2.666667 1.066667 2.133333 1.866667 2.133333 1.866667 1.600000 2.666667 1.333333 2.400000 2.933333 1.066667 1.066667 1.866667 1.333333 1.333333 1.333333 2.400000 1.333333 2.400000 1.333333 1.066667 1.333333 1.066667 2.133333 3.200000 1.333333 nan nan nan nan nan nan
Jan 01, 2020 (n = 418) 2.392344 1.674641 1.913876 0.956938 3.588517 2.153110 1.196172 1.913876 1.913876 2.631579 1.674641 1.913876 2.392344 1.435407 1.674641 3.349282 1.196172 2.870813 2.153110 2.153110 0.956938 3.349282 0.717703 1.435407 1.196172 2.870813 1.913876 2.392344 2.153110 2.631579 1.435407 2.153110 1.435407 1.674641 1.196172 2.631579 1.674641 1.435407 2.392344 1.674641 2.870813 1.674641 1.913876 1.913876 3.349282 1.913876 1.913876 0.717703 0.478469 nan nan nan nan nan nan
Feb 01, 2020 (n = 422) 2.369668 2.369668 1.184834 1.184834 1.895735 1.895735 1.184834 2.369668 1.658768 2.132701 1.895735 1.421801 1.421801 2.843602 2.132701 1.658768 2.132701 1.658768 1.895735 1.421801 0.947867 1.421801 1.658768 0.947867 2.132701 1.895735 1.895735 1.895735 1.421801 1.421801 2.369668 1.421801 2.132701 1.895735 1.658768 2.606635 1.895735 1.658768 1.421801 1.421801 0.710900 1.421801 0.710900 3.554502 1.658768 1.895735 2.369668 1.658768 nan nan nan nan nan nan nan
Mar 01, 2020 (n = 453) 0.883002 2.207506 1.766004 1.324503 2.428256 2.207506 1.986755 1.986755 0.441501 2.649007 2.207506 1.986755 1.324503 1.545254 2.649007 1.766004 2.428256 1.324503 1.766004 1.766004 1.324503 1.986755 2.207506 1.766004 1.324503 2.869757 2.428256 1.545254 1.545254 1.986755 1.766004 1.324503 1.545254 1.766004 1.986755 1.986755 1.766004 2.649007 1.545254 1.103753 1.545254 2.428256 1.103753 2.428256 1.986755 1.986755 1.324503 nan nan nan nan nan nan nan nan
Apr 01, 2020 (n = 492) 2.845528 2.032520 1.829268 0.813008 1.016260 2.235772 2.642276 1.829268 1.422764 1.829268 1.626016 1.626016 1.016260 2.642276 2.032520 1.422764 1.219512 2.235772 2.235772 2.439024 1.626016 1.422764 2.235772 1.626016 2.439024 2.032520 2.032520 1.422764 1.219512 1.626016 2.032520 2.439024 1.626016 1.626016 2.845528 3.252033 1.829268 1.626016 2.642276 2.642276 1.829268 1.626016 2.235772 1.626016 1.829268 1.626016 nan nan nan nan nan nan nan nan nan
May 01, 2020 (n = 545) 1.467890 2.568807 2.385321 1.834862 1.651376 2.935780 1.834862 1.651376 2.385321 2.385321 1.100917 2.018349 2.018349 3.119266 0.917431 2.018349 1.467890 1.834862 1.651376 2.935780 1.284404 1.834862 2.018349 1.651376 2.018349 1.834862 2.018349 2.201835 1.284404 2.752294 2.201835 2.018349 1.467890 2.201835 1.651376 1.467890 1.834862 1.651376 2.935780 1.651376 1.284404 2.568807 1.284404 1.467890 1.467890 nan nan nan nan nan nan nan nan nan nan
Jun 01, 2020 (n = 559) 1.431127 0.715564 1.610018 1.252236 2.146691 2.683363 2.683363 1.610018 1.610018 1.610018 3.398927 1.431127 1.073345 1.610018 1.431127 1.788909 2.683363 3.577818 2.146691 1.610018 1.252236 2.146691 0.715564 1.788909 2.146691 1.788909 3.220036 2.325581 3.041145 1.788909 0.894454 2.146691 2.325581 2.325581 1.788909 1.431127 1.431127 2.683363 2.504472 3.041145 1.788909 2.504472 2.325581 1.252236 nan nan nan nan nan nan nan nan nan nan nan
Jul 01, 2020 (n = 639) 1.408451 2.503912 1.408451 2.190923 2.347418 2.816901 1.564945 1.564945 1.721440 1.564945 2.034429 2.034429 1.721440 1.408451 1.564945 1.721440 0.938967 2.034429 1.564945 1.721440 2.190923 2.347418 2.347418 2.816901 2.347418 1.877934 2.034429 2.034429 1.721440 1.251956 2.190923 2.660407 1.721440 2.973396 1.251956 1.564945 1.564945 2.034429 1.408451 2.190923 0.938967 1.721440 0.625978 nan nan nan nan nan nan nan nan nan nan nan nan
Aug 01, 2020 (n = 653) 1.837672 2.143951 2.756508 2.450230 2.603369 2.603369 1.225115 2.297090 1.990812 1.990812 2.909648 1.684533 1.990812 2.450230 1.684533 2.909648 1.531394 1.684533 1.378254 1.990812 2.143951 1.378254 1.684533 2.909648 1.990812 2.603369 2.297090 1.990812 2.297090 1.225115 2.603369 1.684533 2.450230 2.297090 2.143951 1.990812 2.603369 1.990812 2.297090 1.990812 2.450230 2.297090 nan nan nan nan nan nan nan nan nan nan nan nan nan
Sep 01, 2020 (n = 689) 1.306241 1.161103 1.161103 1.741655 1.451379 1.886792 1.596517 2.322206 1.451379 1.306241 1.596517 1.306241 2.031930 2.467344 1.886792 2.031930 1.451379 2.177068 1.306241 1.886792 2.902758 2.322206 2.322206 1.451379 1.886792 1.741655 2.322206 3.047896 1.596517 2.757620 2.031930 2.467344 1.886792 1.886792 1.741655 1.451379 1.451379 1.306241 1.741655 2.031930 1.886792 nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Oct 01, 2020 (n = 719) 2.364395 1.668985 2.086231 1.668985 1.668985 1.668985 2.364395 1.808067 2.642559 1.529903 1.390821 2.503477 2.364395 2.225313 1.529903 1.668985 2.503477 1.808067 2.225313 1.947149 1.947149 2.920723 1.947149 2.503477 1.947149 2.364395 1.390821 1.808067 1.668985 2.364395 3.894298 1.947149 0.973574 1.112656 1.947149 2.642559 2.364395 2.086231 2.920723 1.529903 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Nov 01, 2020 (n = 724) 1.519337 2.348066 2.486188 1.795580 1.519337 1.657459 1.657459 1.795580 2.071823 1.795580 2.071823 1.795580 2.486188 1.795580 2.209945 2.348066 2.209945 2.071823 2.486188 1.381215 1.657459 1.657459 1.519337 2.209945 1.657459 3.038674 1.795580 1.519337 2.486188 1.104972 1.519337 1.381215 1.933702 2.624309 1.657459 1.933702 2.071823 3.038674 0.828729 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Dec 01, 2020 (n = 788) 2.664975 1.142132 1.522843 1.522843 2.284264 1.776650 1.903553 2.791878 2.791878 2.284264 3.045685 1.903553 2.284264 1.522843 1.776650 2.030457 2.538071 2.157360 1.395939 2.030457 1.395939 2.411168 1.776650 2.030457 3.045685 2.030457 1.903553 2.918782 2.411168 2.664975 1.776650 2.157360 1.649746 1.903553 3.426396 1.776650 2.030457 1.269036 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jan 01, 2021 (n = 834) 2.877698 2.757794 2.038369 2.398082 1.678657 2.278177 2.158273 1.678657 1.678657 2.038369 2.038369 1.798561 2.158273 2.877698 2.517986 1.438849 2.398082 2.877698 2.517986 1.798561 2.038369 1.798561 1.438849 1.199041 2.038369 1.318945 2.398082 1.558753 2.278177 1.918465 2.038369 1.558753 2.877698 1.558753 2.877698 2.158273 1.798561 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Feb 01, 2021 (n = 732) 1.775956 2.049180 1.502732 2.185792 1.639344 1.639344 2.185792 1.502732 1.366120 1.775956 2.322404 3.005464 2.185792 1.912568 1.092896 2.185792 2.049180 1.639344 2.049180 2.732240 2.185792 2.185792 2.732240 2.868852 1.639344 1.502732 2.322404 2.322404 3.005464 2.459016 1.639344 3.005464 2.459016 1.229508 2.049180 0.819672 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Mar 01, 2021 (n = 914) 2.625821 2.407002 2.625821 1.312910 1.859956 2.954048 1.641138 2.516411 2.407002 1.859956 2.078775 1.969365 2.735230 2.516411 1.750547 2.735230 2.297593 2.625821 1.969365 3.172867 2.625821 2.188184 2.078775 2.407002 1.531729 1.641138 2.188184 1.641138 2.954048 2.516411 1.641138 2.078775 1.750547 2.188184 0.765864 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Apr 01, 2021 (n = 898) 1.781737 1.670379 2.115813 2.449889 3.340757 1.447661 2.561247 1.893096 2.449889 1.781737 1.781737 3.118040 2.449889 2.338530 2.004454 1.224944 3.229399 2.783964 2.672606 1.670379 2.783964 2.783964 2.672606 2.672606 2.561247 2.449889 2.783964 2.672606 2.449889 2.783964 2.561247 2.115813 2.561247 1.559020 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
May 01, 2021 (n = 1034) 3.094778 2.224371 2.611219 1.740812 2.514507 2.224371 2.514507 1.934236 2.224371 1.740812 2.321083 2.321083 2.030948 2.611219 2.707930 2.514507 2.417795 3.191489 1.644101 2.417795 1.547389 2.321083 2.321083 1.740812 2.417795 2.030948 1.257253 2.224371 2.224371 2.417795 2.127660 1.934236 1.353965 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jun 01, 2021 (n = 937) 2.241195 2.774813 2.881537 2.881537 2.668090 3.094984 2.347919 1.921025 2.774813 2.027748 2.134472 2.347919 1.921025 2.134472 1.921025 2.347919 2.241195 2.347919 2.241195 2.347919 2.881537 2.347919 2.881537 2.347919 2.561366 1.707577 2.241195 2.561366 1.921025 2.241195 3.415155 1.494130 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jul 01, 2021 (n = 1006) 3.379722 1.988072 2.087475 3.081511 2.683897 1.988072 2.087475 3.180915 1.988072 2.286282 2.584493 2.783300 1.988072 2.783300 2.882704 2.882704 0.994036 2.186879 2.485089 2.584493 2.385686 2.683897 1.590457 2.683897 2.186879 2.385686 2.087475 1.888668 1.689861 2.485089 1.988072 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Aug 01, 2021 (n = 1094) 2.010969 2.833638 2.559415 2.925046 2.742230 1.828154 1.736746 2.468007 2.102377 2.193784 1.828154 2.650823 1.919561 2.468007 1.919561 2.376600 2.102377 2.650823 1.736746 2.925046 2.285192 2.376600 1.462523 2.193784 1.645338 2.193784 2.193784 2.650823 2.742230 1.188300 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Sep 01, 2021 (n = 1112) 2.428058 1.528777 2.158273 2.248201 2.607914 2.068345 3.147482 2.517986 1.348921 2.068345 2.068345 3.057554 2.697842 2.517986 3.057554 2.338129 2.248201 2.338129 2.697842 2.607914 2.877698 2.068345 2.428058 2.607914 2.607914 2.697842 3.327338 2.517986 1.978417 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Oct 01, 2021 (n = 1165) 2.231760 2.918455 2.231760 1.716738 3.347639 1.888412 3.605150 2.489270 3.004292 2.060086 2.575107 2.145923 2.489270 2.317597 2.660944 1.716738 2.489270 2.145923 1.974249 2.660944 2.145923 2.317597 1.802575 2.403433 2.060086 2.832618 2.832618 1.630901 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Nov 01, 2021 (n = 1199) 1.751460 2.585488 2.418682 2.919099 2.835696 2.585488 2.418682 3.586322 2.251877 2.251877 2.919099 2.251877 2.752294 2.251877 2.001668 2.502085 2.418682 2.668891 1.834862 2.919099 3.419516 2.502085 2.835696 2.752294 2.335279 3.419516 1.918265 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Dec 01, 2021 (n = 1257) 2.863962 2.307080 2.625298 2.863962 2.227526 3.102625 2.147971 3.182180 2.863962 2.307080 2.704853 2.307080 2.466189 1.909308 2.147971 2.307080 2.147971 2.466189 2.147971 2.545744 2.943516 3.182180 2.227526 3.261734 2.545744 1.670644 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jan 01, 2022 (n = 1253) 2.474062 2.394254 2.553871 2.633679 2.952913 2.474062 2.873105 2.952913 2.952913 2.394254 2.553871 2.474062 2.873105 3.351955 2.553871 2.793296 3.431764 2.474062 2.793296 2.793296 2.553871 2.952913 2.873105 2.075020 1.755786 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Feb 01, 2022 (n = 1273) 3.063629 2.199529 3.142184 2.356638 2.278083 2.120974 2.435192 2.592302 2.435192 2.985075 2.985075 2.513747 3.613511 2.906520 2.120974 2.827965 2.435192 3.377848 2.042419 3.142184 2.827965 2.670856 3.377848 1.571092 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Mar 01, 2022 (n = 1408) 3.196023 3.053977 1.988636 3.267045 3.196023 2.911932 2.556818 2.911932 2.272727 3.693182 2.982955 2.414773 2.556818 2.627841 2.769886 2.769886 3.764205 2.840909 3.480114 2.556818 2.911932 3.125000 1.207386 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Apr 01, 2022 (n = 1409) 2.838893 2.980837 2.484031 2.767921 3.690561 3.406671 3.051810 3.264727 2.484031 2.129170 2.484031 3.193754 3.051810 3.122782 3.335699 3.548616 3.690561 2.625976 2.200142 2.980837 3.903478 1.774308 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
May 01, 2022 (n = 1481) 2.768400 2.430790 2.700878 3.106009 2.498312 2.633356 3.038488 2.025658 3.038488 2.565834 2.903444 3.173531 3.376097 2.903444 2.700878 3.511141 2.970966 2.363268 3.241053 3.308575 2.160702 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jun 01, 2022 (n = 1472) 2.513587 3.125000 2.853261 2.785326 2.717391 3.668478 3.532609 3.872283 3.328804 2.921196 3.260870 3.125000 3.125000 3.057065 2.445652 2.785326 3.125000 3.600543 2.921196 2.105978 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jul 01, 2022 (n = 1624) 3.078818 3.078818 2.832512 3.017241 2.955665 3.263547 2.709360 2.401478 3.325123 2.832512 3.694581 2.894089 3.633005 2.647783 2.647783 3.078818 2.955665 3.448276 2.339901 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Aug 01, 2022 (n = 1647) 3.035823 2.792957 2.853673 3.217972 3.157256 2.914390 2.914390 3.642987 2.853673 3.157256 3.400121 3.096539 3.400121 2.853673 3.035823 3.764420 2.246509 2.489375 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Sep 01, 2022 (n = 1651) 2.786190 3.391884 2.907329 3.815869 3.391884 2.967898 3.634161 3.270745 4.118716 3.876439 2.907329 3.089037 3.149606 3.028468 4.118716 3.452453 1.877650 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Oct 01, 2022 (n = 1703) 3.640634 4.051674 3.347035 3.640634 3.934234 3.523194 3.523194 2.994715 3.992954 3.288315 3.699354 4.756312 3.464474 3.229595 3.523194 2.290076 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Nov 01, 2022 (n = 1752) 3.824201 4.337900 2.682648 3.652968 3.139269 5.308219 3.538813 3.310502 3.881279 3.767123 3.196347 3.938356 4.109589 3.652968 3.025114 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Dec 01, 2022 (n = 1932) 3.519669 3.157350 3.985507 3.312629 3.260870 3.312629 4.089027 3.830228 3.778468 3.467909 3.933747 3.157350 4.089027 2.432712 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jan 01, 2023 (n = 1931) 3.314345 4.091144 3.314345 4.867944 3.728638 4.194718 3.366132 4.039358 3.210772 4.505438 4.298291 3.521491 2.226825 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Feb 01, 2023 (n = 1883) 4.089219 4.460967 4.354753 3.717472 4.248540 4.142326 4.195433 3.823686 3.558152 4.354753 4.460967 2.973978 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Mar 01, 2023 (n = 2078) 4.619827 4.234841 3.897979 4.475457 4.090472 3.994225 3.657363 4.475457 4.764196 5.245428 3.079885 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Apr 01, 2023 (n = 2135) 5.807963 4.683841 4.824356 4.824356 5.245902 4.215457 5.386417 5.714286 3.887588 2.810304 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
May 01, 2023 (n = 2383) 4.448175 4.616030 5.119597 5.119597 4.993705 4.532102 5.413345 5.413345 3.063366 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jun 01, 2023 (n = 2392) 5.267559 5.727425 5.685619 5.183946 5.267559 5.351171 5.351171 3.302676 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jul 01, 2023 (n = 2574) 5.982906 6.060606 5.749806 5.944056 5.827506 5.710956 3.923854 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Aug 01, 2023 (n = 2622) 6.140351 6.712433 5.873379 6.674294 6.216629 5.225019 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Sep 01, 2023 (n = 2701) 6.997408 7.626805 7.700852 8.885598 4.961126 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Oct 01, 2023 (n = 3022) 7.511582 8.504302 7.908670 6.055592 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Nov 01, 2023 (n = 3031) 11.118443 9.963708 6.532498 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Dec 01, 2023 (n = 3548) 12.570462 9.131905 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Jan 01, 2024 (n = 4015) 14.719801 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
Feb 01, 2024 (n = 5468) nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan

From the visualized table above we can see that the magenta region, which shows higher percentage, tends to be in the lower side of the table. This means that customers from earlier cohort are more likely to stay active over time. This is a positive sign as it indicates good customer retention.

Conclusion

In this project, I have performed customer segmentation based on demographic, RFM analysis, and Cohort analysis using SQL and Pandas. The result shows that the majority of the customers are from China. The majority of the customers are also in the age range of 46–60 and 31–45 years old with both genders are female. The RFM analysis shows that the best customers are those who have the highest frequency and monetary value. The cohort analysis shows that the percentage of active users tends to be higher in the earlier cohort. This is a positive sign as it indicates good customer retention.

Updated: