olist巴西电商数据分析项目 sql+tableau

一、分析背景

巴西Olist是当地电商平台,本数据集包含2016年9月-2018年8月的数据,本文将通过对平台的整体情况、用户、商家、产品、销售五个方面分析平台的经营状况,目的是为了发现平台可能存在的问题,分析可能的原因并给出建议。

数据链接:https://www.kaggle.com/jainaashish/orders-merged

数据字段说明:

1、product_id:商品ID
2、seller_id:商家ID
3、order_id:订单ID
4、customer_id:订单对应的用户ID。订单数据集的键,每个订单都有一个唯一的customer_id。
5、order_status:订单状态
6、order_purchase_timestamp:下单时间
7、order_approved_at:付款审批时间
8、order_delivered_carrier_date:订单过账日期
9、order_delivered_customer_date:客户实际订单交货日期
10、order_estimated_delivery_date:订单预计交货日期
11、customer_unique_id:用户ID
12、customer_zip_code_prefix:客户邮政编码前5位
13、customer_city:客户所在城市
14、customer_state:客户所在的州
15、review_id:评论ID
16、review_score:评价得分,客户在满意度调查中给出的注释范围为1到5。
17、review_comment_title:评论标题
18、review_comment_message:评论内容
19、review_creation_date:发出满意度调查日期
20、review_answer_timestamp:客户满意度回复日期
21、payment_sequential:付款顺序,客户可以使用多种付款方式付款。
22、payment_type:付款方式
23、payment_installments:客户选择的分期付款数量
24、payment_value:交易金额
25、order_item_id:序号,用于标识同一订单中包含的商品数量。
26、price:商品价格
27、freight_value:运费,物品运费价值物品(如果订单包含多个物品,则运费价值将在物品之间分配)
28、seller_zip_code_prefix:卖家邮政编码前5位
29、seller_city:卖家所在城市
30、seller_state:卖家所在州
31、product_category_name:类别名称
32、product_name_lenght:产品名称长度
33、product_description_lenght:产品说明长度
34、product_photos_qty:产品照片数量
35、product_weight_g:产品重量单位g
36、product_length_cm:产品长度单位cm
37、product_height_cm:产品高度单位cm
38、product_width_cm:产品宽度单位cm


二、分析框架

olist巴西电商数据分析项目 sql+tableau_第1张图片

 

通过整体情况、用户、商家、产品、销售五个方面分析,使用工具为sql和可视化工具tableau。

三、分析及可视化

1、数据清洗

#查看数据有多少
SELECT COUNT(*) FROM orders_merged
#去除重复的数据行
SELECT DISTINCT * FROM orders_merged
#建立视图将日期转化为年、月、日、小时的格式,方便后续分析使用
CREATE VIEW order_time AS
SELECT order_id, 
 customer_unique_id,
 year(order_purchase_timestamp) AS y,
 month(order_purchase_timestamp) AS m,
 date(order_purchase_timestamp) AS d,
 hour(order_purchase_timestamp) AS h 
FROM orders_merged

2、整体情况分析

#总交易金额
SELECT SUM(payment_value) AS 总交易金额 FROM orders_merged
#总订单量
SELECT count(order_id) AS 总订单量 FROM orders_merged
#客单价
SELECT sum(payment_value)/count(DISTINCT customer_unique_id) AS 客单价 FROM orders_merged
#用户数
SELECT count(DISTINCT customer_unique_id) AS 用户数 FROM orders_merged
#商家数
SELECT count(DISTINCT seller_id) AS 商家数 FROM orders_merged
#SPU
SELECT count(DISTINCT product_category_name) AS SPU FROM orders_merged 
#SKU
SELECT count(DISTINCT product_id) AS SKU FROM orders_merged

  运行代码分别得到结果为总交易金额11,079,647.08元,总订单数70,478笔,客单价161元,用户数68,693位,商家数2,731位,SPU73个,SKU22,938个。

3、用户分析

3.1 用户流量分析

(1)日活跃用户数

 SELECT d ,
 count(DISTINCT customer_unique_id) as DAU 
 from  order_time 
 GROUP BY d 
 order by d

olist巴西电商数据分析项目 sql+tableau_第2张图片

 从图中可以看出,DAU的趋势是逐渐递增的,并且在2017年11月24日当天DAU增长至1132,较前一日增长327%,经查询可知,11月24日为“黑色星期五”,该日欧美国家会进行打折促销活动,可以看出活动效果很好。

(2)月活跃用户数

SELECT y, 
m, 
count(DISTINCT customer_unique_id) as MAU 
FROM order_time 
GROUP BY y,m 
ORDER BY y, m

 olist巴西电商数据分析项目 sql+tableau_第3张图片

从图中可以看出,2017年11月前,MAU呈现整体快速增长的趋势,2017年11月后MAU逐渐趋向平稳,也说明2017年11月24日的活动效果显著。

(3)各时段活跃用户数

SELECT h, 
count(DISTINCT customer_unique_id) as 时段活跃用户数 
FROM order_time 
GROUP BY h 
ORDER BY h

 olist巴西电商数据分析项目 sql+tableau_第4张图片

 从图中可以看出,晚上10点至上午5点,活跃用户数逐渐降低,因为该时间段大多数人都在休息。从上午5点至上午10点,活跃用户数快速上升。从上午10点至晚上10点,活跃用户数基本平稳。运营人员可以根据活跃用户的不同时间段,采取相应的促销措施。

3.2 RFM分析

(1)构建RFM 用户分类

根据RFM分类模型定义,将客户分成8大类别

olist巴西电商数据分析项目 sql+tableau_第5张图片

具体代码如下:

#构造R值
CREATE VIEW Recency AS
SELECT 
  customer_unique_id, 
  CASE 
    WHEN DATEDIFF(CURDATE(),MAX(order_purchase_timestamp)) > AVG(DATEDIFF(order_purchase_timestamp,previous_purchase_timestamp)) 
    THEN 1 
    ELSE 0 
  END AS R 
FROM (
  SELECT 
    customer_unique_id, 
    order_purchase_timestamp, 
    LAG(order_purchase_timestamp) OVER (PARTITION BY customer_unique_id ORDER BY order_purchase_timestamp) as previous_purchase_timestamp 
  FROM orders_merged 
) a 
GROUP BY customer_unique_id

#构造F值
CREATE VIEW Frequency AS
SELECT customer_unique_id, count(1) > (SELECT AVG(cons) FROM(SELECT customer_unique_id, count(*) as cons FROM orders_merged GROUP BY customer_unique_id) as a) AS F 
from orders_merged 
GROUP BY customer_unique_id

#构造M值
CREATE VIEW Monetary AS
SELECT 
customer_unique_id, 
CASE 
WHEN payment_value > (SELECT AVG(payment_value) FROM orders_merged) THEN 1 ELSE 0 
END as M
FROM orders_merged 
GROUP BY customer_unique_id, payment_value

#构建RMF模型
CREATE VIEW RFM AS
SELECT r.customer_unique_id, 
(CASE
WHEN R=1 AND F=1 AND M=1 THEN '重要价值用户'
WHEN R=1 AND F=0 AND M=1 THEN '重要发展用户'
WHEN R=0 AND F=1 AND M=1 THEN '重要保持用户'
WHEN R=0 AND F=0 AND M=1 THEN '重要挽留用户'
WHEN R=1 AND F=1 AND M=0 THEN '一般价值用户'
WHEN R=1 AND F=0 AND M=0 THEN '一般发展用户'
WHEN R=0 AND F=1 AND M=0 THEN '一般保持用户'
WHEN R=0 AND F=0 AND M=0 THEN '一般挽留用户'
ELSE '其他' END) AS 用户类型
FROM Recency as r
JOIN Frequency as f
ON r.customer_unique_id = f.customer_unique_id
JOIN Monetary as m
ON f.customer_unique_id = m.customer_unique_id

 (2)各类型用户数量和占比情况

SELECT 用户类型, 
COUNT(*) AS 用户数量, 
COUNT(*)/(select count(*) from rfm) AS 占比
FROM rfm 
GROUP BY 用户类型
ORDER BY 用户类型

 olist巴西电商数据分析项目 sql+tableau_第6张图片

从图中可以看出,一般挽留客户和重要挽留客户的消费金额占全体用户的95.39%,一般价值客户和重要价值客户的消费金额占全体用户的4.61%。结合RFM客户分类图,表明用户流失比较严重,应当急于采取挽留措施。

(3)查看各类型用户品类偏好

a.重要价值用户

SELECT 
 用户类型,
 product_category_name 商品品类,
 sum(b.payment_value) 消费金额,
 rank() over(order by sum(b.payment_value) desc ) 排名
FROM orders_merged b
LEFT JOIN rfm c ON b.customer_unique_id = c.customer_unique_id
where 用户类型='重要价值用户'
GROUP BY product_category_name

 olist巴西电商数据分析项目 sql+tableau_第7张图片

b. 重要挽留客户

SELECT 
 用户类型,
 product_category_name 商品品类,
 sum(b.payment_value) 消费金额,
 rank() over(order by sum(b.payment_value) desc ) 排名
FROM orders_merged b
LEFT JOIN rfm c ON b.customer_unique_id = c.customer_unique_id
where 用户类型='重要挽留用户'
GROUP BY product_category_name

 olist巴西电商数据分析项目 sql+tableau_第8张图片

c. 一般价值客户

SELECT 
 用户类型,
 product_category_name 商品品类,
 sum(b.payment_value) 消费金额,
 rank() over(order by sum(b.payment_value) desc ) 排名
FROM orders_merged b
LEFT JOIN rfm c ON b.customer_unique_id = c.customer_unique_id
where 用户类型='一般价值用户'
GROUP BY product_category_name

olist巴西电商数据分析项目 sql+tableau_第9张图片  

d. 一般挽留客户

SELECT 
 用户类型,
 product_category_name 商品品类,
 sum(b.payment_value) 消费金额,
 rank() over(order by sum(b.payment_value) desc ) 排名
FROM orders_merged b
LEFT JOIN rfm c ON b.customer_unique_id = c.customer_unique_id
where 用户类型='一般挽留用户'
GROUP BY product_category_name

olist巴西电商数据分析项目 sql+tableau_第10张图片

 其余四类以此类推,由于金额占比较小不做呈现,从上面4张图可以看出,每种类别的客户都有相应自己的偏好,平台在做客户维护时,可以根据对应客户类别进项推送商品类别信息,从而有的放矢。另外可以看出,cama_mesa_banho和relogios_presentes品类商品受到4大客户类别的喜爱,商家可以对该类商品进行促销推广。

3.3 用户地区分布

select 
customer_state
,count(distinct customer_unique_id) as 地区人数
from orders_merged
group by customer_state

 olist巴西电商数据分析项目 sql+tableau_第11张图片

从图中可以看出,有近42%的用户来自SP州,可能是该地区经济发达,人口密度大,平台在后续运营过程中在该地区的宣传和维护投入的同时,也应该根据不同地区特点,开发不同地区。

 3.4 用户支付分析

(1)支付方式占比

select
 payment_type
 ,count(1) as 支付人数
 ,count(1)/(select count(1) from orders_merged) as  占比
 from orders_merged
group by payment_type

 olist巴西电商数据分析项目 sql+tableau_第12张图片

 从图中可以看出,75.7%的用户选择用信用卡的方式来支付,19.97%的用户选择boleto的方式,说明这两种方式在该平台是主流的支付方式。

(2)分期付款期数占比

 select
 payment_installments
 ,count(1) as 分期人数
 ,count(1)/(select count(1) from orders_merged) as 占比
from orders_merged
group by payment_installments

 olist巴西电商数据分析项目 sql+tableau_第13张图片

从图中可以看出近半数的用户不选择分期,而选择分期付款的用户大部分选择分2、3期的方式来进行。另外分期数从2期到10期的合计占比也将近总人数的一半,说明平台也推荐分期付款,且大多数人选择10期以内。

 4、商户分析

4.1 商户地区分布

select 
 seller_state
 ,count(distinct seller_id) as 商户人数
from orders_merged
GROUP BY seller_state

 olist巴西电商数据分析项目 sql+tableau_第14张图片

从图中可以看出,有近60%的商户来自SP州,说明该地区商业发达,这与用户地区分布的分析结果相符。 

4.2 商户交易额占比情况

select 
 价格区间
 ,count(1) as 交易数量
 ,count(1)/(select count(distinct seller_id)from orders_merged) as 交易占比
from (select 
 seller_id
 ,sum(payment_value) as sum_pay
 ,case when sum(payment_value)<=1000 then '(0,1000]'
       when sum(payment_value)>1000 and sum(payment_value)<=5000 then '(1000,5000]'
	   when sum(payment_value)>5000 and sum(payment_value)<=10000 then '(5000,10000]'
	   else '(10000,∞]' end as '价格区间'
from orders_merged
GROUP BY seller_id
order by sum_pay) a
group by 价格区间

olist巴西电商数据分析项目 sql+tableau_第15张图片

从图中可以看出,52%的商户的交易额在1000以内,1000至5000以内的商户占29%,5000至1万和1万以上的商户分别各占10%左右,说明平台的商户仍是以小商户为主。 

4.3 商户评分占比情况

select 
 评分区间
 ,count(1) as 评分人数
 ,count(1)/(select count(distinct seller_id)from orders_merged) as 评分占比
from (select 
		seller_id
		,avg(review_score) as avg_r
		,case when avg(review_score)>=1 and avg(review_score)<2 then '[1,2)'
              when avg(review_score)>=2 and avg(review_score)<3 then '[2,3)'
			  when avg(review_score)>=3 and avg(review_score)<4 then '[3,4)'
			  else '[4,5]' end as '评分区间'
	  from orders_merged
	  GROUP BY seller_id
	  order by avg_r) a
group by 评分区间

 olist巴西电商数据分析项目 sql+tableau_第16张图片

从图中可以看出,超过75%的商户平均评分为4分以上,平均分3分以下的商户仅占5%左右,说明平台的商户服务较好,商品品质不错。 

5、产品分析

5.1 商品交易额、交易量、单价

select
 case when product_category_name !='' then product_category_name
 else 'lost_name' end 商品品类
 ,sum(payment_value) 交易额
 ,sum(order_item_id)  交易量
 ,sum(payment_value)/sum(order_item_id)  单价
from orders_merged
GROUP BY product_category_name

 olist巴西电商数据分析项目 sql+tableau_第17张图片

从图中可以看出,平台各个品类商品的交易额和交易量的趋势基本相同,说明平台的商品价格相对比较接近,且交易额和交易量排在前列的基本都是价格较低的产品,只有少数用户购买了高价商品,说明平台还是以平价策略为主。平台的商品品类58%在100至200之间,属于平价商品,可以看出此平台的商品价格定位属于中等偏下。所以,吸引商品价格较低的商户如文具类、幼儿玩具类、日用品类等商户入驻,是平台拉新重点。在资源充足的情况下,在考虑培养高价格商品商户。

5.2 帕累托分析

select
 case when product_category_name !='' then product_category_name
 else 'lost_name' end 商品品类
 ,sum(payment_value) as revenue
 ,sum(sum(payment_value)) over(order by sum(payment_value) desc) as cumulative_revenue
from orders_merged
GROUP BY product_category_name

 olist巴西电商数据分析项目 sql+tableau_第18张图片

 从上图可以看出,销售额前20%的商品占据了总销售额的绝大部分,二八定律依然有效。因此维护好该类商品的商户依然是平台的重点,但同时根据长尾定律,增加足够多商品品类同样能带来不俗收益,因此平台在后期也可以该类增加平台商品品类。

6、销售分析

6.1 GMV(年度、月度)

#1.年度GMV
select 
 y AS 年份,
 sum(payment_value) AS 年度GMV 
from orders_merged o1
LEFT JOIN order_time o2 ON o1.customer_unique_id = o2.customer_unique_id
group by y
order by y
 
#2.月度GMV
select 
 y AS 年份,
 m AS 月份,
 sum(payment_value) AS 月度GMV 
from orders_merged o1
LEFT JOIN order_time o2 ON o1.customer_unique_id = o2.customer_unique_id
group by y,m
order by y,m

olist巴西电商数据分析项目 sql+tableau_第19张图片
 

olist巴西电商数据分析项目 sql+tableau_第20张图片

 从整体的GMV上可以看出,该平台的交易额是增长的。将数据继续按月份向下挖掘可以看出,2018年6、7、8月GMV已经出现下降趋势,平台应该分析原因引起重视。

6.2 ARPU(月度、日)

#3.月ARPU
select 
 y AS 年份,
 m AS 月份,
 round((sum(o1.payment_value)/count(DISTINCT o1.customer_unique_id)),2) 月ARPU 
from orders_merged o1
LEFT JOIN order_time o2 ON o1.customer_unique_id = o2.customer_unique_id
group by y,m
order by y,m

#4.日ARPU
select 
d 日期,
 round((sum(o1.payment_value)/count(DISTINCT o1.customer_unique_id)),2) 日ARPU 
from orders_merged o1
LEFT JOIN order_time o2 ON o1.customer_unique_id = o2.customer_unique_id
group by d
order by d

 olist巴西电商数据分析项目 sql+tableau_第21张图片

olist巴西电商数据分析项目 sql+tableau_第22张图片

 从上面两图可以看出,平台的ARPU在相对较长的一段时间里比较平稳,但平台也需要重视ARPU长期没有有效突破,且2018年开始出现下降趋势。 

7、总结

一、平台运营建议:平台前期属于快速成长期,但目前发展已经遇到瓶颈,个别指标甚至出现回落。

1.针对用户规模:需评估国内市场流量是否见顶进入竞争阶段,如果是,可以考虑发展海外市场,同时做好用户运营,减少用户流失;如果否,则可能与平台自身运营不佳有关或竞争对手抢占市场导致,一方面需要对内调整运营策略,优化用户体验,减少流失,对外及时跟进竞争对手动态,持续拓展站外流量。
2.针对成交额:在保证用户规模健康增长的同时,一方面有效利用10-22点的用户活跃时段进行运营,提高各环节的转化率,另一方面做好用户运营,培养优质用户,提高用户平均收入。
3.根据用户支付的方式和分期偏好:建议平台可以合理设定免息门槛和分期利息。
4.继续利用“黑色星期五”的节日优势, 创新销售策略和活动玩法。


二、用户、商家和产品运营建议:结合用户共同特点和商品喜好采取运营措施。

1.平台用户的消费次数都较少,有较大的提升空间。对于已经有消费行为的老用户进行针对性消息推送并提供消费返还抵用券等优惠,降低二次消费门槛,提升复购率。同时可以推出vip会员服务,为用户提供消费折扣,引导用户长期消费,增强粘性。
2.在挑选用户均喜爱的产品的同时,也可以根据不同客户类型挑选出各类型用户偏好的产品,分别推送,有的放矢。
3.平台的用户和商家地域性明显,主要集中在SP地区,建议平台可以选择扩大运营的规模,根据不同地区的消费特点,增加SP以为的其他地区的业务投入,加大宣传折扣力度,引入更多的商家和用户。
4.商品以价格偏低为主,种类相对比较单一,可以实适当的引入价格中等或偏高的商品,丰富商品的种类促进购买。
 

你可能感兴趣的:(sql)