Py学习  »  Python

手把手教你怎么用Python做电商用户群组分析 (Cohort Analysis)!

MarTechCareer • 4 年前 • 521 次点击  


这篇文章中,我们将用实例讲述如何使用python对电商零售数据进行客户群组分析 (Cohort Analysis)。

 

什么是客户细分?


这是一种将客户群划分成不同的组别的做法,可以通过年龄、性别、兴趣和消费习惯等维度将客户进行划分

 

将客户分组的主要差异化因素包括:

 

  • 人口统计因素(年龄、种族、宗教、性别、家庭规模、种族、收入、教育水平)

  • 地理位置

  • 心理(社会阶层、生活方式和个性特征)

  • 用户行为趋势(如支出、消费、使用和期望收益)

 

什么是群组分析 (Cohort Analysis)?


群组是随着时间的推移具有相似特征的一组用户。群组分析将用户分为相互排斥的组,并且随着时间的推移测量他们的行为。它可以提供有关产品和客户生命周期的信息。


1. 时间群组

时间群组是在特定时间范围内注册产品或服务的客户。分析这些群组显示客户的行为取决于他们开始使用公司产品或服务的时间。时间可以是每月或每季度,甚至每天。我们今天就主要针对时间群组来说一个详细的例子。


2. 行为群组

行为群组是过去购买产品或订阅服务的客户。它按客户注册的产品或服务类型对客户进行分组。注册基本级别服务的客户可能与注册高级服务的客户有不同的需求。了解不同群体的需求可以帮助公司为特定细分市场设计定制服务或产品。


3. 规模群组

规模群组是指购买公司产品或服务的不同规模的客户。这种分类可以基于获取后某个时间段内的消费金额,或者客户在某个时间段内花费了大部分订单金额的产品类型。现在,让我们看看群组分析的主要元素。

 

群组分析可以用来回答以下商业问题:

  • 获得的新群组是否比以前的用户更有价值(或更少)?

  • 网站所做的更改是否影响了您网站的新用户?

  • 获得的用户之间是否存在季节性差异?也许在黑色星期五等大型零售时刻获得的用户与其他时间获得的用户行为不同。

  • 用户留存率是多少?

  • 用户的长期价值是什么?

  • 用户什么时候开始流失?

 

数据实例:时间群组分析入门


今天我们会用到一个交易数据集,其中包含 01/12/2010 和 09/12/2011 之间发生在英国的注册在线零售公司的交易,并包含行业常用格式的真实客户交易信息。

 

数据快照(仅显示前五行)

 


数据含义


  • InvoiceNo:发票编号。一个唯一分配给每笔交易的 6 位整数。如果此代码以字母“c”开头,则表示取消。

  • StockCode:产品(项目)代码名义上,一个 5 位整数,唯一分配给每个不同的产品。

  • Description:描述。产品(项目)名称。

  • Quantity:数量。每次交易的每个产品(项目)的数量。

  • InvoiceDate:发票日期。发票日期和时间,生成每笔交易的日期和时间。

  • UnitPrice:单价。以英镑为单位的每单位产品价格。

  • CustomerID:客户编号。分配给每个客户的每人唯一的5位整数。

  • Country:国家名称。顾名思义,每个客户所在国家的名称

 

群组分析:留存率


由于我们将根据客户的交易记录进行群组分析,因此我们主要会用到这几列数据:

  • 发票数据

  • 客户ID

  • 价钱

 

为生成留存率群组图而执行的分步方法:

 

第1步 :从 InvoiceDate 列中提取月份

首先我们先创建一个函数,它的作用是把指定日期变成同年同月的第一天的形式。比如把它会把8/19/2021这个日期变成8/1/2021,之所以要做这个变化是因为我们在当前这个分析中,只需要把单位精确到月份就行,不需要细化到日。



接下来,我们创建了一个名为 InvoiceMonth 的列(下表最右列),InvoiceMonth顾名思义就是InvoiceDate所在的月份啦,那么就只要用我们刚刚建立的函数来提取月份就行啦!这些月份值就记录在InvoiceMonth这一列中。


当前图片只显示了数据的前5行,不是完整数据


第2步:为每一笔交易分配群组

我们已经知道,这组数据是一笔交易数据,因此每一行记录,都代表着一笔交易。InvoiceDate代表的是交易的日期(或是发票日期)。但我们需要把用户按照他们的注册日期的所在月份来划分群组,也就是说,今天7月注册所有用户是一组的、8月注册的所有用户是一组的。而7月注册的用户是有可能在8月的时候又进行了交易的。因此,只看交易日期的话,是不知道用户是从哪天注册的,所以呢,我们还得加一列CohortMonth来标注每个用户的注册时间是哪一个月。在这个例子中,之所以我们把注册时间叫做CohortMonth是因为,我们的目的就是要按照注册日期来把用户分组,我们划分的是时间群组。所以可以看到下表的最右边一列CohortMonth,就是根据用户的注册日期对用户进行了群组划分。


 

第 3 步:为每笔交易分配群组索引

群组索引(CohortIndex)是什么意思?说白了就是,离每组用户的注册时间距离1个月、2个月、3个月...以此类推的计数。如果你没看明白的话,别着急,下面我们会具体讲群组索引是怎么用的。

 

第 4 步:计算每个群组在注册后的每个月内产生交易的人数

特定时间间隔后活跃客户与客户总数的百分比称为留存率。现在我们将计算每个群组在注册后的每个月内产生交易的人数。具体做法就是统计一下每一个Cohort在每一个CohortIndex下的用户ID数。CohortIndex就是指注册后的第几个月产生交易。比如,去年12月注册的这一组群组,在CohortIndex=2,也就是注册后的第二个月内,有xx个用户仍在购买,也就意味着这个群组在注册两个月后有xx个用户仍然活跃或者留存着。下面就是实现这一步的代码:


 


第5步:留存率计算

获得上述信息后,我们通过将数据按 CohortMonth 和 CohortIndex 进行分组,并通过应用数据透视函数聚合在 CustomerID 列上,得到了同期群分析矩阵。以下是获得的群组计数:

 


上表应该怎么读?

让我们拿CohortMonth为2010-12-01的这一个群组(就是表上的第三行)举例:这是一群在2010年12月注册的用户群。当CohortIndex=1,也就是说在注册后的第一个月内,这群用户中有948为用户产生了第一笔交易。当CohortIndex=2,也就是在注册后的第二个月内,在948名已经在第一个月产生交易的用户中,还有362位用户在第二个月继续产生了交易。也就是说,他们在第二个月保持活跃。


对于 CohortIndex 2,这表明 948 名客户中有 362 名客户在 CohortMonth 2010-12-01 期间进行了第一笔交易,并且他们也在下个月的第二个月进行了交易。对于更高的 CohortIndices,依此类推。


第 6 步:可视化上述保留率

以热力图的形式绘制上述矩阵,并使用 strftime 函数将日期转换为年-月格式

 


从上面的同期群留存率热图中,我们可以看到,2010-12-01注册的用户的平均留存率约为 38%,最高留存率出现在 11 个月后 (50%)。对于所有其他 CohortMonths,平均保留率约为 18-25%。只有这个百分比的用户在给定的 CohortIndex 范围内会再次进行交易。

 

通过这样的,我们就可以回答以下问题:


  • 用于提高客户转化率的策略是否奏效?

  • 我应该更多地关注保留旧客户而不是获取新客户吗?

  • 制定策略,通过提供更具吸引力的折扣或进行更有效的营销等来提高客户留存率。


如果你也想亲身体验如何用python等工具整合数据、搭建模型,进行群组分析并得出分析结论,那么就千万不要错过MarTechApe携手来自Apple、Walmart、Airbnb、Verizon、Wayfair等知名公司的资深职场人开设的《营销分析专项》课!



《营销分析专项系列课》由MarTechApe联合美国的一线营销分析和营销技术专家们共同研发推出,由以下美国名企管理层执教:
  • 知名独角兽公司Airbnb硅谷总部,营销科技经理
  • 苹果公司硅谷总部(前Ebay资深数据分析师),营销数据科学家
  • 美国最大家具电商平台Wayfair,营销数据科学经理
  • 美国电信巨头Verizon,营销效果经理
  • 沃尔玛Walmart电商(前GroupM营销分析经理),数据科学经理

这门专项系列课由5个模块组成,涵盖了5种应用最广泛的营销和商业分析方法:

课程大纲

《营销分析专项》


Airbnb

硅谷总部营销科技经理——《营销归因》

1. 什么是追踪?详细介绍不同的追踪方法:

    URL Tracking

    Pixel Tracking

    Deep Linking

3. 什么是营销归因?企业为什么有必要做营销归因?

4. 单触点归因模型的不同种类与做法

5. 多点归因模型的不同种类与做法

6. 用户生命周期总价值(Customer Life Time Value)

7. 营销归因中涉及到的各类高阶分析:

    预测LTV

    用户细分(User Segmentation)

    同类群组分析(Cohort Analysis)

    增量测试(Lift Test)

    跨设备追踪(Cross Device Tracking)

    全渠道分析(Full Funnel Analysis)


沃尔玛电商Walmart Ecommerce

美国数据科学经理——《营销组合模型》

1. 营销组合模型(Marketing Mix Modeling)是什么,它为什么可以有效提高营销绩效?

2. 营销组合模型可以解释哪些业务指标?衡量哪些变量对业务指标的影响?

3. 如何评价一个营销组合模型的好坏?

4. 如何通过模型判断广告效果和营销收益?模型中的重要参数:Decay、Lag、Alpha都是什么?

5. 如何通过模型结果计算与比较媒介渠道效果?

6. 模型结果的解读:

    模型分解

    变量贡献

    媒介有效性和媒介效率

7. 通过模型结果进一步获得商业洞察

8. 行业里流行的另一种解决方案——领先指标模型

9. 营销组合模型的典型面试问题

10. 营销分析师与营销分析经理的技能要求和典型一天


苹果公司Apple

硅谷总部营销数据科学家

1. 什么是媒介测试与学习(Media Test & Learn)?为什么我们需要在广告营销领域使用这种方法?

2. 在实际工作中会做哪些关于广告的实验?有哪些测试的对象?

3. 如何设计一个实验,实验设计的6个步骤,在A/B测试设计中的注意事项

4. 检验实验数据的可靠性和完整性

5. 如何分析实验结果

6. 如何根据样本来估计整体均值或比例的置信区间

7. 如何针对某一指标/metrics来判断实验组和对照组的区别在统计上显著

8. 如果想同时测试多个指标,应该注意哪些事项?

9. 什么是PSA,为什么我们需要PSA,PSA的劣势

10. 什么是Ghost Ads?PSA和Ghost Ads的区别

11. 营销战役的ROI与增量

12. 选择偏差

13. 因果影响分析

14. A/B测试的局限

15. A/B测试的延伸:Universal Control Group与Multi-Armed Bandit


美国最大家具电商Wayfair

波士顿营销数据科学经理——《增量模型》

1.什么是因果与因果推断?

2.有哪些因果研究方法?

3.增量在营销中指的是什么?什么是营销产生的收入(Incremental Revenue)?

4.增量模型将用户分成哪些类型?如何比较不同营销策略的效果?

5.什么是Heterogeneous Treatment Effects?

6.增量模型中的随机实验

7.增量模型与机器学习;增量模型要解决的挑战

8.增量模型的进阶技术

9.用一个案例来理解增量模型的完整流程

10.用Python来实现增量模型


美国电信巨头Verizon

纽约营销效果经理——《营销中的随机森林》

1. 什么是决策树?决策树在营销中的案例分析

2. 最常见的聚类分析:K-means与Hierarchical Clustering在营销中的应用。在R语言中实践两种不同的聚类分析方法与结果解读

3. 随机森林算法原理

4. 如何解读随机森林的结果,如何判断随机森林模型的好坏

5. 用一个案例来理解随机森林的完整流程

6. 在R语言环境中实现随机森林模型

7. 随机森林分类模型与随机森林回归模型

8. 其他机器学习算法在营销中的应用

9. 机器学习在营销分析岗位面试中的真题解析



每课备有精心设计的课后作业和练习,及时巩固课程内容

一门课程唯有通过作业才能完全掌握。《营销分析专项系列课程》每周都有老师精心设计的作业和练习,类型包括:
  • 案例分析题

  • 编程题

  • 简答题

  • 思考题

精心设计的作业练习强调了课程重要知识点,在完成作业和练习的过程中,帮助学员巩固对课程的掌握程度。

沉浸式学习体验,让网络课程更接近线下学习。防止课程囤积,助教督促完课

1). 班主任
负责为所有学员规划学习进程,布置作业与截止日期。
2). 助教团
助教团的助教老师们会nice地提醒大家课程进度,并进行线上答疑。
3). 作业和练习
每周一次作业,将课程所学进行巩固。花费时间15-30分钟。课件中附有数据和课外阅读供学员练习和扩展知识。
4). 专项大证书
当所有课程全部完成后,学员进行期末测试,获得70分(满分100分)以上的学员,就可以拿到Marketing Analytics营销分析这个专项的大证书:


如何报名?
原价:¥1540
团购价:¥1299!
*我们提供标准Invoice,可用于企业报销

官方购买通道

(长按识别下图二维码,进入课程页面)



如果你曾购买过本专项中任意一门课程,请咨询小助手获得购买方式(如果你买的课程不在这五门之列,请勿扰)


小助手

 


来个“分享、点赞、在看”👇
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/118776