英国在线零售商数据分析
前言:
数据分析的一般流程,首先确定问题,再带着问题进行下面的分析步骤
分析流程.png0、分析问题
一份数据可以分析很多维度,为了分析的效率,首先需要明确此次分析的目的(问题)及深度,避免陷入盲目无尽的分析
-
订单维度:笔单价和连带率是多少?订单金额与订单内商品件数的关系如何?
-
客户维度:客单价是多少?客户消费金额与消费件数的关系如何?
1.理解数据
理解业务指标
我们的问题中有许多业务指标,首先需要理解这些指标的含义
-
订单维度:
-
笔单价
指每笔交易记录(一张水单)对应的平均交易金额,一般以消费金额除以消费笔数来计量
商品总额/总笔数
-
连带率
指顾客每次购物购买了几件商品
商品总数量/总笔数
-
订单金额
订单单价*订单内商品件数
-
订单内商品数
同一笔订单的所有商品件数
-
-
客户维度:
-
客单价
销售额/客户数
-
客户消费金额
按客户分组的总金额
-
消费件数
按客户分组统计的总件数
-
再理解原始数据,数据共541,909条记录,8个字段
原始数据.png这些字段的含义分别是发票编号、产品货号、描述、件数、发票时间、单价、订单来源国家
数据探索
查看数据集的情况,可以看到 Description约有1.5k个值缺失,CustomerID字段有13.7w个值缺失
数据集情况# 增加一个总金额字段
data['sumPrice'] = data['Quantity'].astype(float) * data['UnitPrice'].astype(float)
看一下数值数据的概况
数值数据
可以看到商品数量和单价居然有负值,查看一下这些异常值
异常数据可以看到发票号是C开头的,得知这是cancel取消的意思,也就是说这些订单被取消了
最大被取消的一单有8万件商品,共有10624条这样的数量为负的记录,后续需要将这些数据做数据清洗
2.数据清洗
-
空值
-
异常值
前面数据探索发现Description字段和CustomerID字段有部分数据缺失,无法填充值,所以做删除处理
#删除用户ID字段有缺失的记录
data = data[-data['CustomerID'].isnull()]
异常数据包括数量字段为负值以及单价为负的情况,由于缺失的数据相对于总的记录来说较小,所以这里直接丢弃这部分记录。
# 清洗掉数量为负或者单价<=0的记录
df_success = data[data['sumPrice']>0]</pre>
清洗完的数据有397,884条记录。
3. 数据建模
订单维度
-
笔单价
笔单价=商品总额/总笔数
,每条记录为一笔交易
# 商品总额/总笔数
price_per_order = sum(df_success['sumPrice'])/df_success.shape[0]</pre>
得到**笔单价22.40元每单**
-
连带率
指顾客每次购物购买了几件商品,所以
连带率=销售件数/交易次数
APR = df_success.shape[0]/(df_success['InvoiceNo'].nunique())
连带率约为21.47,连带率非常好!顾客平均每次购买21样商品,这应该是个超市批发数据
-
订单金额
每一个InvoiceNo对应一个订单,平均每张订单金额为:
price_per_order = sum(df_success['sumPrice'])/(df_success['InvoiceNo'].nunique())
平均每张订单金额为480.87元
-
订单内商品数
同一笔订单的所有商品件数
n = sum(df_success['Quantity'])/(df_success['InvoiceNo'].nunique())</pre>
平均每个订单278.86件商品。
客户维度:
-
客单价
销售额/客户数
price_per_cust = sum(df_success['sumPrice'])/(df_success['CustomerID'].nunique())</pre>
平均每位顾客消费2054.27元
-
客户消费金额
按客户分组的总金额
-
消费件数
按客户分组统计的总件数
对于客户消费金额和消费件数,使用数据透视表计算每位顾客的消费金额和件数
# 使用数据透视表计算每位顾客金额和件数
cust_pivot=pd.pivot_table(df_success,index = 'CustomerID', values = ['sumPrice', 'Quantity'],aggfunc=np.sum)</pre>
按客户分组透视
可以看到排名第一的大客户14646订购数量高达19万件
商品维度
- 按商品货号分组,计算每种商品的售出数量和销售金额
4.数据可视化
-
绘制客户的总购买数量及总购买金额(按总购买金额排序,这里仅展示前20名)
顾客.png
可以看到花钱最多的14646顾客,购买数量及购买金额都是最多的,而购买金额排2、3、位的顾客,购买金额和购买数量比值较大,购买的是一些高价值商品
-
绘制商品的总售出量和总售出金额
商品.png
可以看出货号为23843的商品卖的钱最多,而23166的销量与23843几乎持平,销售总金额仅有一半,说明它的单价较低,但客户需求量较高,要保证库存
5. 进一步分析
-
客户贡献度
-
商品贡献度
-
商品关联销售
-
商品销售趋势
......