文章目录

  • 0 前言
  • **1 背景介绍**
  • **2 数据处理**
    • 数据说明
    • 数据获取及查看
  • 3 数据可视化分析
  • 4 结论
  • 5 最后

0 前言

这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

大数据毕设 Python消费数据分析与可视化

学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

选题指导, 项目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md

1 背景介绍

目前金融消费常用模型中传统使用的是用户的信息数据,如年龄,收入,职业等。这些数据同信用相关度高,可以反映用户的能力和意愿。但除了这些强相关的数据外,用户的行为数据也是反映用户消费能力,兴趣偏好的一大方面,是传统数据的有效补充。同时,通过用户行为数据分析,可以为产品运营提供策略帮助,提升产品生命周期。

本文通过对CDNow网站的用户购买明细数据进行分析,从产品和用户角度分析了产品销售情况,并对用户进行分层,根据用户的消费行为分析用户的消费生命周期和产品购买周期,并以此对产品营销提出建议,为策略实施提供依据。

2 数据处理

数据说明

数据来源于CDNow网站的用户购买明细数据,其中有用户ID,购买日期,购买数量,购买金额四个字段,共23413条数据明细。

数据获取及查看

执行如下源代码:

得到如下结果:

由结果可见,这些特征量均为23413条,没有缺失值,数据比较规范。

同时可见用户平均每笔订单购买2.4个商品,标准差在2.2,稍稍具有波动性。中位数在2个商品,75分位数在3个商品,说明绝大部分订单的购买量都不多。最大值在41个,数字比较高。购买金额的情况差不多,大部分订单都集中在小额。

由数据可见,上述的购买日期为int64类型,需要将其转换为时间类型,同时按月份作为消费时间窗口,新建一个列标签month,方便后续分析。

3 数据可视化分析

单变量探索性分析

首先分析一下每月的产品销量。

由图中可见,前1个月的销量非常高,数据较为异常。而后期的销量则趋于平稳。

再来看一下每月的销售额。

可以看到,销售额一样呈现前一个月销售额多,后期平稳下降的趋势。分析原因,有两种假设,一是早期的用户中有异常值,二是各类促销营销。

同时可以从用户角度进行数据观察,分析每位用户的购买数量和购买金额区间。

由上图可以看出大多数用户集中在量小价低的区间,绝大多数用户购买数量都在200以下,购买金额都在3000以下。

接着观察用户首次消费和最后一次消费的时间。

由此可见,第一次消费时间集中在前3个月,最后一次消费时间每个月都有,但主要集中在第一个月,后续数据缓慢下降。第一个月流失的客户达51%。由此上述的第一个月销售数量和销售金额偏高得到解释,为第一个月新客户激增,之后客户大部分流失,之后趋于稳定。

产品复购率和回购率计算

复购率的定义是在某时间窗口内消费两次及以上的用户在总消费用户的占比。回购率是某一个时间窗口内消费的用户,在下一个时间窗口仍旧消费的占比。这里以月为时间窗口。

(1)复购率的计算

首先建立数据透视表,按照消费的订单数进行标记,没有消费填充0,建立起每位用户在每月的消费订单数的透视表。

结果如下:

为方便计算复购率,需要将数据转换一下,消费两次及以上记为1,消费一次记为0,没有消费记为NaN,此时复购率便是标记为1的数量除以消费总次数。

对每个月的复购率用图表进行表示。

可以看到产品复购率基本维持在20%~26%之间。

(2)计算回购率

建立透视表,其实还可以继续沿用之前的透视表,这里由于处于学习阶段,所以使用购买金额重新建立了每位用户在每月的消费金额的透视表。

同时定义回购函数,如下所示。

为方便计算回购率,进行数据转换,得到如下结果。

以图表形式表现每个月的回购率。

可以看到回购率基本维持在25%~35%之间,波动性较强,后期主要是老用户给予支持。第一个月新用户的回购率为15%,与老用户相比有一定差异。

将回购率和复购率综合分析,可以得出,新客的整体质量低于老客,老客的忠诚度(回购率)表现较好,消费频次稍次,这是CDNow网站的用户消费特征。

用户分层及用户生命周期分析

(1)用户分层

按照用户的消费行为,可以将用户划分为:新用户(new)、活跃用户(active)、不活跃用户(unactive)、回流用户(return)、未注册用户(unreg)。其中新用户的定义是第一次消费。活跃用户即老客户,在某一个时间窗口内有过消费。不活跃用户则是时间窗口内没有消费过的老客。回流用户是在上一个窗口中没有消费,而在当前时间窗口内有过消费。以上的时间窗口都是按月统计。

用户类别判断函数代码如下:

执行结果如下:

将未注册用户unreg用NaN替代,并按月份进行类别统计,可以得到如下简单的面积图。

只看紫色回流和红色活跃这两个分层,用户数比较稳定。这两个分层相加,就是消费用户占比(后期没新客)。

按月份进行回流客户比例图表绘制,得到如下结果。


可以看到回流用户后期维持在5%~8%左右。

同样的,对活跃客户进行统计,得到如下结果。可见后期活跃用户占比在5%左右。

(2)用户生命周期分析

首先定义用户第一次消费时间和最后一次消费时间,并求解平均数。

由上述结果可见用户平均生命周期为144天。

用直方图对用户生命周期进行统计表现,同时去除生命周期为0天的客户。

由上述结果可见,图形呈现双峰趋势,虽然仍旧有不少用户生命周期靠拢在0天。部分质量差的用户,虽然消费了两次,但是仍旧无法持续,在用户首次消费30天内应该尽量引导;少部分用户集中在50天~300天,属于普通型的生命周期;高质量用户的生命周期,集中在400天以后,这已经属于忠诚用户。

消费两次以上的用户生命周期是290天,远高于总体。从策略看,用户首次消费后应该花费更多的引导其进行多次消费,提供生命周期,这会带来2倍的增量。

再来计算留存率,留存率也是消费分析领域的经典应用。它指用户在第一次消费后,有多少比率进行第二次消费。和回流率的区别是留存倾向于计算第一次消费,并且有多个时间窗口。

新建一透视表,增加一列为:用户第一次消费时间。同时新增一列为消费间隔date_diff,对应用户每次消费时间与第一次消费时间之差。执行结果如下。

将时间差值分桶。这里分成0~3天内,3~7天内,7~15天等,代表用户当前消费时间距第一次消费属于哪个时间段。

建立数据透视表,用pivot_table数据透视,获得的结果是用户在第一次消费之后,在后续各时间段内的消费总额。执行结果如下。

接着进行数据替换,目标是计算出用户的平均购买周期。

定义一个计算间隔的函数diff,输入的是group,将用户上下两次消费时间相减将能求出消费间隔了。shift函数是一个偏移函数,和excel上的offset差不多。

用mean函数即可求出用户的平均消费间隔时间是68天。想要召回用户,在60天左右的消费间隔是比较好的。

用直方图绘制用户的平均购买周期图。

图形呈现典型的长尾分布,大部分用户的消费间隔确实比较短。因此不妨将时间召回点设为消费后立即赠送优惠券,消费后10天询问用户CD怎么样,消费后30天提醒优惠券到期,消费后60天短信推送。以此促进消费,提高用户消费生命周期。

4 结论

本文通过对CDNow网站的用户购买明细数据进行数据分析,从产品和用户角度分析了产品销售情况,并对用户进行分层,根据用户的消费行为分析用户的消费生命周期和产品购买周期,并以此对产品营销提出相应的建议。

5 最后