用户消费行为分析

来源:互联网 发布:高考志愿填报软件 编辑:程序博客网 时间:2024/06/01 09:31

数据:CDNow网站的用户购买明细

目的:根据CDNow网站的用户购买明细,分析用户的消费行为

分析思路
原始数据并未提供分析目的要求的行为数据,需通过已知的数据构建指标。目的是为了分析用户的消费行为,故采用维度分析法,从特定的角度和层面分析数据

分析内容
一、销量和消费金额分析
二、消费的时间节点
三、复购率回购率分析
四、用户分层
五、用户生命周期和消费周期


先看一下原始数据的基本信息(右键‘在新标签中打开图片’可查看大图)

这里写图片描述

可以看出,总共有69658行,4列数据,没有空值。数据类型为数值型,数据挺干净的,后面按照分析的需求再进行数据处理。接下来我们开始分析这些数据


一、 销量和消费金额分析

先看一下 销量和消费金额 的基本统计量

这里写图片描述

可以看出,销量order_products 的均值是2.41,标准差为2.33,稍具波动性。75%四分位数为3,说明大量用户单次购买不超过3件。购买金额order_amount同理,大部分小单,这也符合消费类数据的基本认知,长尾型分布,大部分用户贡献的价值都不高

接下来以用户分组,看下一下销量和消费金额 的基本统计量

这里写图片描述

结合直方图看一下

这里写图片描述

从用户角度看,平均每个用户购买7件商品,客单价为106,大部分是小额小量用户。销量order_products 和 消费金额order_amount 的平均数和75%四分位数接近,说明存在少量高额高量消费用户,这是我们需要重点维护的

以月份作为统计窗口也是数据分析中经常用到的,以月份分组,观察 销量和消费金额

这里写图片描述

反映时间趋势一般用折线图

这里写图片描述

可以看出,销量在1997年1-4月较高,随后趋于平稳,消费金额亦是如此,可能与促销有关系


二、消费的时间节点

我们再看一下消费节点数据,用户的初次消费和最后消费时间

这里写图片描述

可以看出,用户首次消费集中在1997年前三个月,具体原因不好说,因为原始数据可能本身就不完整,只提取了部分用户的数据。最后消费时间也主要集中在前三个月,后续也有稳定的消费,后续有稳定消费的用户,可以被广泛地定义为老客


三、复购率,回购率分析

先了解下复购率的定义,复购率是在某时间窗口内消费两次及以上的用户在总消费用户中占比。这里的时间窗口是1个月,使用数据透视表

这里写图片描述

计算复购率,用折线图表示

这里写图片描述

可以看出,前期复购率较低为10%左右,可能是因为有大量的新客产生,后期趋于稳定在20%左右。接下来看一下回购率

与复购率不同,回购率是某一个时间窗口内消费的用户,在下一个时间窗口仍旧消费的占比。时间窗口依然是1个月,使用数据透视表。代码稍微复杂,需要用到函数判断

这里写图片描述

函数代码,判断上月是否有消费

def purchase_return(x):    l = []    for i in range(17):        if x[i] ==1:            if x[i+1]==1:                l.append(1)            if x[i+1]==0:                l.append(0)        else:            l.append(np.NaN)    l.append(np.NaN)     return l

生成回购率折线图

这里写图片描述

可以看出,前期回购率约为15%,后面达到35%并且趋于稳定。可能因为前期进入新客较多,后期为老客,看得出老客忠诚率大于新客

综合复购率和回购率来看,老客的质量还是蛮高的,忠诚度还行。回购率达到35%,复购率也达到20%


四、用户分层

所谓用户分层,是在一定的时间窗口内,将用户分成不同的类别,以消费作为判断依据。一般将用户分为新客,不活跃用户,活跃用户,回流用户。用户分成的意义在于区别不同价值的用户,是精细化运营的要求

这里新客指的是时间窗口内首次消费的用户,不活跃用户指时间窗口内未消费的老客,活跃用户指的是本时间窗口内有消费,上一个时间窗口也有消费的用户。回流用户是在上一个窗口中没有消费,而在当前时间窗口内有过消费的老客。这里的时间窗口一般是一个月

具体计算依然需要用到透视表,并且辅助以复杂的函数判断

函数代码,判断用户类型

def active_status(x):    l = []    for i in range(18):        if x[i]==0:            if len(l)>0:                if l[i-1] =='unreg':                    l.append('unreg')                else:                    l.append('unactive')            else:                l.append('unreg')        else:             if len(l)==0:                l.append('new')            else:                if l[i-1] =='unactive':                    l.append('return')                elif l[i-1] =='unreg':                    l.append('new')                else:                    l.append('active')    return l

具体用户的分类,通过透视表表现出来

这里写图片描述

接下来计算下每种用户类型的数量

这里写图片描述

面积图能够直观展现各元素的占比情况,下面看下每种用户类型的占比

这里写图片描述

可以看出,前期新客占比较大。后期不活跃用户占据大头,但这个不是我们分析的重点,活跃用户和回流用户才是高价值的消费用户,新客可以忽略不计了。后期活跃用户和回流用户的占比趋于稳定,还是算是一个比较健康的情况

我们再具体看一下活跃用户和回流用户在每个月的占比情况

这里写图片描述

可以看出,活跃用户占比在后期稳定3%-5%,有下降趋势。回流用户占比在后期稳定5% - 8%,有下降趋势。活跃用户和回流用户属于真正意义上的消费用户,相较四六开


五、用户生命周期和消费周期

用户运营的目的是尽可能延长用户的生命周期,在生命周期内获取更多的价值。这就需要我们对用户的生命周期进行分析。另外,把握用户的消费周期,掌握用户大概的消费规律,有助于指定更好的运营策略,引导用户更多地消费

先以用户分组,看一下用户的生命周期,计算公式为 最后消费时间 减去 初次消费时间。这里筛选掉了只有一次消费的用户

这里写图片描述

这里写图片描述

下面是生命周期直方图

这里写图片描述

可以看出,平均生命周期为216天。直方图上看呈双峰趋势,有大量用户在前期虽然消费超过两次,但没有持续,应该在消费后1个月加以引导。消费周期大于400天的,属于忠诚用户了,要重点维护,制定个性化的运营策略

分析完用户的生命周期,接下来看一下用户的消费周期,消费周期也就是两次消费间隔时间

Python 代码实现也比较简单。先求出用户每次消费距离第一次消费的时间

这里写图片描述

然后将用户分组,用shift函数,算出用户本次消费与上次消费的时间差,得出基本统计量

这里写图片描述

看一下时间差的直方图

这里写图片描述

可以看出,用户的平均消费间隔时间是68天,可以在用户消费60天左右的时间后,通过短信邮件等方式,对用户进行营销。当然,具体的消费时间间隔,可以根据用户类型进行选择

最后,我们来看一下用户每次消费离第一次消费,按实际业务中,以3天,周,月,季度年,计算不同周期内的销售额,目的是了解用户不同周期内的消费能力。具体还是用透视表来展示

这里写图片描述

看一下不同周期的平均消费能力

这里写图片描述

可以看出,距首次消费后0-3天内的消费金额最少为约36天,180-365天的消费金额最大为约92天。但后者的计算周期更长,相对而言,首次消费后一周的时间内消费总额都是不错的,应该在用户首次购买后1周内进行二次营销


结语:本文从用户消费行为的五个重要方面进行了分析,相对全面地概括了用户的消费行为。本文采用的是比较经典的维度分析法,通过不同维度组合观察数据,得到有效的分析结论。本文技术实现使用的是Python,对于量级数据处理较方便。最后,与业务的高度结合,才是数据分析最有效的姿势