前言
毫不夸张的说在中国除了婴幼儿及七八十以上的老年人,都有过网购经历。电商公司就如雨后春笋般迅速发展。了解用户的网购行为,有助于商家定品类,定营销方案等。利用数据分析与挖掘,争取做到比顾客自己还了解TA自己。
文章目录
- 前言
- 一、背景
- Ⅰ 数据来源
- Ⅱ 数据背景
- Ⅲ 分析目的
- 二、探索性分析
- Ⅰ 数据导入
- Ⅱ 数据类型
- Ⅲ 描述性统计
- 1、缺失值处理
- 2、异常值处理
- 3、重复值处理
- 三、数据分析
- Ⅰ 商品销售规律
- a、时间
- b、日期
- c、商品品类
- d、国家
- Ⅱ 用户行为习惯
- a、购买排行
- b、退货排行
- Ⅲ 数据挖掘
- RFM模型
一、背景
Ⅰ 数据来源
该数据集来自The UCI Machine Learning Repository,为了更贴合我的分析目的,我自己在这个基础进行了一些修改。对不需要的数据进行了删除,添加了一些需要的数据。
Ⅱ 数据背景
该数据集是英国某电商在2010-12-01到2011-12-09的全部在线销售数据,采用的是我进行整改后的数据,包含541904个样本和九个特征值,分别是发票编号,商品品类,购买日期,购买时间,数量,单价,总价,客户编号,国家。发票编号前面有c的订单为退货,数据为负的也代表退货。
Ⅲ 分析目的
二、探索性分析
Ⅰ 数据导入
一、创建数据表
CREATE TABLE `users` (`InvoiceNo` varchar(30) DEFAULT NULL,`GOODS` varchar(30) DEFAULT NULL,`Dates` date DEFAULT NULL,`Times` time DEFAULT NULL,`Quantity` int(11) DEFAULT NULL,`UnitPrice` float DEFAULT NULL,`Total` float DEFAULT NULL,`CustomerID` varchar(30) DEFAULT NULL,`Country` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
二、插入数据
LOAD DATA INFILE 'D:UsersBehavior.csv'
INTO TABLE users
CHARACTER SET utf8
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'
LINES TERMINATED BY '\n'
ignore 1 lines;
Ⅱ 数据类型
DESCRIBE users;
-- 或者 DESC users;
-- 或者 SHOW COLUMNS FROM users;
Ⅲ 描述性统计
a.购买
SELECT MIN(DISTINCT Quantity)AS 最小值,MAX(DISTINCT Quantity)AS 最大值,AVG(Quantity)AS 平均值 FROM users WHERE Quantity>0 UNION
SELECT MIN(DISTINCT total),MAX(DISTINCT total),AVG(total)FROM users WHERE total>0 UNION
SELECT MIN(DISTINCT unitprice),MAX(DISTINCT unitprice),AVG(unitprice) FROM users;
b.退货
SELECT MIN(DISTINCT Quantity)AS 最大值,MAX(DISTINCT Quantity)AS 最小值,AVG(Quantity)AS 平均值 FROM users WHERE Quantity<0 UNION
SELECT MIN(DISTINCT total),MAX(DISTINCT total),AVG(total)FROM users WHERE total<0;
## Ⅳ 数据预处理
1、缺失值处理
不存在缺失值,不需要进行额外处理
2、异常值处理
a、价格,看是否有负数
SELECT unitprice FROM users WHERE unitprice<0;
只有两个为负数的价格,直接删除。
DELETE FROM users WHERE unitprice<0;
b、时间,看有没有超过时间范围的
SELECT MIN(dates),MAX(dates) FROM users;
时间范围正确,数据较干净。
3、重复值处理
由于在这次数据中,一张发票编号可能对应多种商品,所以允许重复值的存在。没有设立“主键”。
三、数据分析
Ⅰ 商品销售规律
a、时间
1)哪个时间段购买最多,哪个最少。
SELECT times,COUNT(InvoiceNo)FROM users WHERE Quantity>0 GROUP BY times ORDER BY COUNT(invoiceno)DESC;
结果显示,在下午十二点到四点左右是订单最多的时候,早上六七点和晚上六七点是订单最少的时候,可根据这个时间规律合理安排客服人员,快速处理订单。
2)哪个时间段退货最多,哪个最少。
SELECT times,COUNT(InvoiceNo)FROM users WHERE Quantity<0 GROUP BY times ORDER BY COUNT(invoiceno)DESC;
结果显示,在上午十二点到下午两点左右是退货订单最多的时候,早上六点到八点和晚上六七点是退货订单最少的时候,可根据这个时间规律合理安排客服人员,快速处理订单。
综合来说就是上午应该让处理退货能力强的客服值班,争取让退货订单少一点;下午则促成订单能力强客服值班,最大可能促成多的订单。
b、日期
1)购买
SELECT dates,SUM(Quantity)AS 日购买量,SUM(total)AS 日购买金额 FROM users WHERE Quantity>0 GROUP BY dates ORDER BY SUM(quantity)DESC;
观察结果发现,在第三第四季度销量遥遥领先,推测可能是在两个季度促销力度较大,也有可能是商品属性决定。
2)退货
SELECT dates,SUM(Quantity)AS 日购买量,SUM(total)AS 日购买金额 FROM users WHERE Quantity<0 GROUP BY dates ORDER BY SUM(quantity);
基本上退货与售出数量成正比关系,但是前面数据存在几个异常数据。重点观察这几个数据找出原因,看是偶然原因,还是必然。找到造成其异常的本质,从根源解决问题。
c、商品品类
1)购买订单
SELECT goods,SUM(Quantity)FROM users WHERE Quantity>0 GROUP BY goods ORDER BY SUM(Quantity)DESC;
A类卖出最多,在对库存进行管理的时候,A类产品可多进一些,根据售卖规律找到库存临界点,一到那个点就赶快进货。
2)退货订单
SELECT goods,SUM(Quantity)FROM users WHERE Quantity<0 GROUP BY goods ORDER BY SUM(Quantity);
B类产品退货最多,但是只从数据其他品类也相差不大,联系实际售出则会发现B、E的退货率较高,可进行订单跟踪为什么会有这么高的退货率。是商品质量不行,还是市场不受欢迎等原因。
d、国家
1)售出
SELECT country,SUM(Quantity),SUM(total)FROM users WHERE Quantity>0 GROUP BY Country ORDER BY SUM(total)DESC;
排名前十和后十,差距较明显,呈现一个两极趋势,可研究前十的剩余市场价值,及后十为什么销售只有这么一点,为什么只有这么一点销售额,比如广告营销不到位、本身市场已经饱和。
Ⅱ 用户行为习惯
a、购买排行
SELECT customerid,country,SUM(Quantity),SUM(total)FROM users WHERE Quantity>0 GROUP BY customerid ORDER BY SUM(total)DESC;
符合二八定律,即20%的客户贡献了80%的销售额。采用多项会员优惠措施维护好老客户,赠券等开发新客户。
b、退货排行
SELECT customerid,country,SUM(Quantity),SUM(total)FROM users WHERE Quantity<0 GROUP BY customerid ORDER BY SUM(total);
对比来看,购买多的客户也可能退货多,重点关注这些客户为什么退货,做好售后服务,增强黏性。
Ⅲ 数据挖掘
RFM模型
1)利用SPSS中针对营销行为的直销模块完成RFM分析,将数据库中的users表导入到SPSS中。
2)选择【直销】【选择方法】,在【直销】对话框中,单击【帮助标识我的最佳联系人(RFM分析)】,然后单击【继续】按钮。【RFM分析:数据格式】对话框中选择【交易数据】。在【交易数据RFM分析】的【变量】选项卡中,将变量移动到对应的位置,如图所示。
3)在【输出】选项卡中,勾选全部选项。然后点击【确认】。随后生成了如下的数据文件。
输出结果中“RFM分箱计数”图,显示了分箱分布。每个条形都表示被赋予每个组合RFM得分的客户数。希望获得相当均匀的分布,即所有(或大多数)条形的高度大致相同,但其实也会产生一定程度的偏差。从分箱结果来看,分箱的频数分布相对均匀。
观察值处理摘要。对2305个客户进行分析,没有缺失值。
RFM交叉表。是将“RFM分箱计数”图,以表格的形式展示出来。
RFM热图,用颜色深浅表示交易金额的大小。可以发现,随着最后一次交易间隔的得分和交易总次数的得分的分值越大,颜色越深,即右侧的颜色比左侧深,上方的颜色比下方深,说明客户最近一次交易时间间隔越近,交易次数越多,其平均交易金额越多。
“RFM分布直方图”。显示了最近一次交易时间、交易总次数和交易金额的频率分布,以此来判断各自的客户人群分布的情况,横轴的排列顺序较小的值在左边,较大的在右边,频率和货币两项的横坐标是对数刻度。
“RFM散点图”,是最近一次交易时间、交易总次数和交易金额之间的散点图。通过散点图可以清晰、直观地看到三个分析指标两两之间的关系。可以看出,交易总次数和交易金额存在一定程度上的正相关性,而最近一次交易时间和另外两个分析指标之间的存在较为明显的正相关性,但相关性较弱。
对评分进行描述统计。结果如下表所示。更多关注的是均值。
将每个客户的R_S,F_S,M_S与均值比较,如果低于均值就定义为“低”,如果高于均值就定义为“高”。
在【转换】菜单中的【重新编码为不同变量】,分别将最后一次交易间隔的得分,交易总次数的得分,交易总金额的得分的值按“高”与“低”确定新的变量,“高”用2表示,“低”用1表示。
【转换】菜单中的【计算变量】:
(1)单击“转换”菜单,选择“计算变量”,弹出“计算变量”对话框,在“目标变量”下的方框中输入“客户分类”,在右侧的“数字表达式”下的方框中输入“1”,先生成“客户分类=1”的数据。
(2)单击左下方的“如果”,弹出“计算变量:if个案”对话框,选择“在个案满足条件时包括”项。
(3)在右侧的表达式中输入“R_S分类=2&F_S分类=2&M_S分类=2”,就是上面表格的三个分类定义,输入完成之后,单击继续按钮,返回,单击“确定”按钮,这样满足条件的个案,它的“客户分类”就是1了,然后重复上面的步骤,知道8个分类全部完成。
在【数据】菜单中的【定义变量属性】中,将1-8分别定义为8种客户类型。
图形图表构造器
重点挽留客户及潜在客户、一般保持客户、一般价值客户占比达到70%。说明与客户之间黏性不足,可开发的客户价值还很高,需要加大运营力度提高销售额。