文章目录
前言
上一节我们实现了数据的处理工作,接下来根据处理之后的数据进行客户交易行为的分析
客户交易行为分析
本部分主要包括以下四个步骤:
时间维度的分析:对交易时间进行分析,探索交易随时间的分布规律
交易属性的分析:对交易金额和次数进行分析,探索不同客户的交易属性
文本数据预处理:为了便于后续分析,对交易附言的文本进行预处理
文本数据的分析:对预处理后的文本进行分析,例如绘制词云分布图和提取关键词等
时间维度的分析
交易次数随时间的可视化分析
使用value_counts()函数统计data中每天的交易次数,接着使用Pandas绘图机制,调用plot()函数绘制每天的交易次数随时间的折线分布图,并设置分布图的标题,x轴y轴标签。
从图中可以看出大致在2030附近的交易次数比较多。
交易金额随时间的可视化分析
使用groupby()函数统计data中每天的交易总金额(每笔交易金额取绝对值),接着使用Pandas绘图机制,调用 plot()函数绘制每天的交易总金额随时间的折线分布图
交易金额有正有负,代表资金流入流出。取绝对值代表交易金额有流动。
从折线分布图中可以看出:交易的发生时间主要集中在2030年左右的交易金额比较大。
交易有效时段设置
从前面的交易数量分布折线图中,我们可以看出客户的交易主要集中在2030附近,其它时间分布较少。为了使交易数据更为集中,需要选择做一个时间限定,选取2025到2030之间的数据进行分析
设置有效时间后查看图形的变化如下图所示:
时间重新设置为2027至2028之间会比较明显的看出图形的特点,这段时间的交易金额都差不多,处于一种波动状态。
每天24小时交易次数的分布
之前的图形观察了总交易次数随时间的宏观变化情况,对交易的有效时间段也进行了限定。接下来从每天的交易时段上进行分析,通过绘制柱状图的方法,统计交易数据中发生时间分布在每天24小时内的各时间段交易次数。
交易属性的分析
客户交易次数的可视化分析
从每个客户出发,可视化分析不同客户的交易分布
使用value_counts()函数统计data每个客户的交易次数,接着调用kdeplot()函数画出客户交易次数的核密度图,并且设置×轴标签为交易次数,y轴标签为频率。
客户的交易次数从0-140不等,主要分布在100-110之间。在此后的指标构建中,我们要根据客户的交易记录构建指标。如果在此平台交易次数来判断用户是否为休眠客户、活跃用户等。
客户平均交易金额的可视化分析
使用groupby()函数对data中的user_id进行分组,统计每个客户的平均交易金额,接着调用kdeplot()函数画出客户交易次数的核密度图。
从图中可以看出客户平均交易金额在6到35之间。
客户交易流入流出的可视化分析
接下来从交易次数和交易金额两个维度上对不同流向的交易做对比,以此来探索客户的行为和消费习惯。首先对金额流出型和金额流入型做定义,将payment字段取值大于零的交易记录定义为金额流出,取值小于零的交易记录定义为金额流入,对取值为0的交易记录不进行定义。接下来分别计算两种金额流动方向下的交易次数,并通过可视化的方法进行展示和分析。
从图中可以得出结论:客户整体的流入流出均在20到100之间
客户交易流入流出金额的可视化分析
上一步对金额流出型和金额流入型的交易做定义,将payment字段取值大于零的交易记录定义为金额流出,取值小于零的交易记录定义为仓额流入,对取值为0的交易记录不进行定义。接下来分别计算两种金额流动方向下的客户交易平均金额,并通过可视化的方法进行展示和分析。
先从data中选取出金额流入流出的交易记录,分别保存在变量input_payment和output_payment 中。再对变量input_payment和output_payment分别进行分组,计算每个客户的流入流出平均金额,分别保存在变量input_payment_mount和output_payment_mount中。再使用distplot()函数分别绘制客户流入和流出平均金额的直方分布图,分别保存在子图ax1和ax2中,最后绘制出图像。
流入为负值,流入为正,所以图中横轴0的位置不同。
流入流出分布基本一致,流出的金额跨度略大一点,流入-18到0,流出是0-20
文本数据预处理
文本数据预处理就是交易附言本文预处理,可以从时间和交易行为两个维度对客户进行分析之后,接下来还可以挖掘交易附言文本中的信息,探索文本内容的主题,以此找寻客户标签构建的方向。
由于分词时占用计算资源较大,在实现过程中对数据进行了采样,使用sample()函数,设立随机种子取出20000行进行计算。
文本数据的分析
使用tf-idf模型来进行文本数分析,tf-idf值越大说明这个词越重要,也可以说这个词是关键词。接下使用tf-idf算法提取出整个数据中交易附言部分出现的关键词。中文处理库jieba可以满足需求,关键词提取所使用逆文档频率(idf)文本语料库可以自定义设置,在这里使用jieba库中默认的新闻语料库。
词云对象wordcloud 创建好之后,使用generate()函数,传入绘制词云的文本数据即可绘制词云。传入的文本数据为字符串格式,将每条交易附言进行了拼接,保存在变量describe_document中,可以理解为客户交易附言组成的一个文档。
交易附言词云绘制
绘制词云图代码如下图所示,为了减少运算的时间,在绘制词云图时也进行采样,随机取出20000行进行计算。将data[ 'describe_cutted']进行拼接,保存在变量describe_document中,创建词云对象wordcloud,背景颜色为white,设置粗黑简体,背景图案为变量mask1,放大规模为2,不允许词语重复,随机种子设置为30。最后根据创建的词云对象wordcloud,使用generate()函数生成词云图。
词云图如下图所示:
可以看出,词云图中的信用卡,支付吧,网银,分期付款等词语的出现频率较高,在词云图中比较明显,一眼可以看出哪个词的出现较多。
交易附言关键词提取
使用jieba.analyse.extract_tags()函数提取describe_document 中的前50个关键词,并返回关键词权重值,保存在变量tags 中,然后提取出关键词。
从关键词提取可以看出每个词以及它的词语的比重,和上面的词云图结果相似,网银,支付宝,分期付款,信用卡,微信等的关键词比重较高,所以可以得出在词云图中的图形较大。
总结
至此,用户的客户交易行为分析已经完成,下一步将进行客户体系标签的计算