Python数据分析:用户消费行为(持续更新)
红酒品鉴和用户消费行为分析是我学习Python数据分析入门的两个案例,记录一下。
网络上关于这两个案例的介绍非常多,但是我在学习过程中,发现有很多文章的逻辑不是很清晰,代码也调试不同。
所以,还是想把自己的调试代码写出来。
参考博文:
http://www.360doc.com/content/17/0717/17/16619343_672115832.shtml
准备
1. 数据分析的目标
2. 数据集
3. 在进行数据分析之前,进行数据清洗。即:处理缺失值,数据类型转化,按照需要将数据整理好。
开始
本数据集共有 6 万条左右数据,数据为 CDNow 网站 1997年1月至1998年6月的用户行为数据,共计 4 列字段,分别是:
- user_id: 用户ID
- order_dt: 购买日期
- order_products: 购买产品数
- order_amount: 购买金额
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
columns = ['user_id','order_dt','order_products','order_amount']
# 用户id 购买日期 购买产品数 购买金额
df=pd.read_csv('G:\\Data Scientist Learning\\CDNOW_master.txt',names=columns,sep='\s+') #载入数据
print(df.head())
接下来:
df.info() #检查数据是否存在空值
数据读出无误时要检查数据中是否存在空值,并检查数据的数据类型。发现数据中并不存在空值,很干净的数据。那接下来既然我们需要每月这个数据,就要给order_dt这一列的数据进行适当的转换一下,转化成通常的时间格式:Y(年)m(月)D(日)。
下面那句代码的意思是:在df里新增加一列列名是month,取出这一列的日期order_dt然后掉取这一列的值把值转换成以月为单位的,例如6月1号到30号统统属于6月。
这时候可以对数据进行简单初步分析,用df.describe()。
对以上数据进行分析:
- 均值:产品购买数量均值在2.4;
- 中位数:中位数是2;
- 四分位数:其3/4位数是3
- 最小值和最大值分别为:1和3
- 人均消费CD金额为:35.89元;中位数为:25.98元
说明:用户购买量大部分都不多,少部分购买量大的,最高购买量是99,其中存在一定的极致干扰。用户的订单金额比较稳定,人均购买CD金额在35,中位数在25元,存在极致干扰,很多销售行业都是类似这种分布,小额比较多,大额的较少,收入来源很大一部分是来自大额。也即是二八定律。
按月分析数据趋势
在这里用到了一个groupby,一个在数据分析中非常好用的函数,这一节是要按月分析用户行为,用groupby对用户按照月分分组。
分组完成之后得到一个新的dataframe叫group_month,然后直接取出组里的order_amount并求和可得到每个月份的销售总额,并且画出折线图
从上面三个图可以看出数据没有什么问题,用户购买总额跟用户购买次数以及用户购买量走势是大致相同的,但是从四月份开始销量严重下滑,具体是原因是什么,我们可以再来看一下每个月的消费人数:
每月的消费人数小于每月的消费次数,但是区别不大。前三个月每月的消费人数在8000—10000之间,后续月份,平均消费人数在2000不到。一样是前期消费人数多,后期平稳下降的趋势。
用户个体消费数据分析:
之前的都是看趋势,现在看个体的消费水平如何。主要分析的对象是:
- 用户消