数据来源
理解数据
InvoiceNo:发票编号 ;每笔交易分配唯一的6位整数,而退货订单的代码以字母'c'开头
StockCode:产品编号;每个不同的产品分配唯一的5位整数
Description:产品描述;对每件产品的简略描述
Quantity:产品数量;每笔交易的每件产品的数量
InvoiceDate:交易日期;每笔交易发生的日期和时间
UnitPrice:单价(英镑);单位产品价格
CustomerID:顾客ID;每个客户分配唯一的5位整数
Country:国家;每个客户所在国家/地区的名称
提出问题
基于RFM模型提出一下问题:
1.客户维度:各类客户的占比为多少,是否正常?
2.时间维度:各类客户分别都在哪些月份购买产品?
3.区域维度:各类客户分别集中在哪些州/国/地区?
4.产品维度:各类客户集中购买的产品分别是哪些?
数据清洗
用python对数据进行清洗(此处省略)
构建模型
1.将利用python清洗的数据导出为csv表:gift_retail_online,将表导入MySQL中。
2.创建分析所需的新表
即:
地区表:online_country_state
价格区间表:online_price_range
客户分类表:online_customer_group
建表过程
①选出国家再人工进行查询得到online_country_state(地区表)
SELECT DISTINCT 国家 AS 国家 FROM gift_retail_online
将国家选出来,由于地区数据需要查询,所以导出国家再进行人工查询其中文名称、所属洲及在其所属洲的位置,部分表截图如下:
②创建临时表price再转化为新表online_price_range(价格区间表)
CREATE VIEW price AS
SELECT 产品编号,
(CASE WHEN 单价=0 THEN '赠品'
WHEN 单价<1 THEN '<1'
WHEN 单价<10 THEN '1-10'
WHEN 单价<50 THEN "10-50"
WHEN 单价<300 THEN "50-300"
WHEN 单价<1000 THEN "300-1000"
WHEN 单价<3000 THEN "1000-3000"
ELSE ">3000" END) AS 价格区间
FROM (SELECT * FROM gift_retail_online WHERE 单价>=0) AS a
3. 由于需要对客户分类
根据RFM模型,创建R_value、F_value、M_value三张临时表,再由三张临时表创建出临时客户分类表,再转化为新表online_customer_group(客户分类表)
*由于这里需要知道R、F、M各自的四分位数才可以给出区间随后进行打分&