sql + tableau+PowerBI:电商数据分析(Olist)

一、分析背景

这是巴西Olist数据集,该数据集包含1个文件,将近10万行。

数据链接:

https://www.kaggle.com/jainaashish/orders-merged

分析该数据可以探究其销售情况,用户流量以及产品的分布,也可以对商户进行评分,多维度分析销售,找出商户影响销售的情况以及客户不满意的原因,以完善服务。

二、理解数据

相关数据说明:

1、product_id:商品ID
2、seller_id:商家ID
3、order_id:订单ID
4、order_purchase_timestamp:下单时间
5、customer_unique_id:用户ID
6、customer_state:客户所在的州
7、review_score:评价得分,客户在满意度调查中给出的注释范围为1到5
8、review_creation_date:发出满意度调查日期
9、payment_type:付款方式
10、payment_installments:客户选择的分期付款数量
11、payment_value:交易金额
12、order_item_id:序号,用于标识同一订单中包含的商品数量
13、seller_state:卖家所在州
14、product_category_name:类别名称

三、分析框架

对整体、用户、商户、产品、销售五个方面进行分析。分析工具为SQL,可视化工具为Tableau和PowerBI

四、数据分析 

1、数据清洗

1.1 检查整体数据

-- 查看数据有多少
SELECT COUNT(*) FROM ecom

1.2 时间戳转换成具体日期

-- 日期格式转化
CREATE VIEW o_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 ecom

1.3 整体情况分析

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

代码运行结果:总交易金额15,170,437.55元,用户数93,358位,客单价162.50元,总订单数96,478笔,,商家数2,959位,SPU有74个,SKU有31111个


 

2、用户行为分析

2.1 用户流量

2.1.1 日活跃

SELECT d 日期,
count(DISTINCT customer_unique_id) DAU
FROM o_time
GROUP BY d
ORDER BY d

 可以看出,DAU是稳步递增的,且在17年7月-18年1月之间有个爆炸式增长。经查询可知那日为 “黑色星期五” ,相当于中国双十一,此活动效果很好很明显

2.1.2 月活跃

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

可以看出,“ 黑色星期五 ” 之前MAU整体快速增长,次日过后就慢慢趋于平稳,甚至在短时间内有下降,也反映了此活动效果很好

2.1.3 时段活跃

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

可以看出,从21:00到5:00活跃用户呈下降趋势,说明此时间段多数用户在休息,5:00到11:00活跃用户快速上升,在中间时段,活跃用户趋势平稳。运营人员可以根据不同时间段的活跃用户数来采取相应的措施

2.2 RFM

2.2.1 构建RFM模型

构建RFM用户分类:

-- 构造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 ecom 
) 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 ecom GROUP BY customer_unique_id) as a) F 
from ecom 
GROUP BY customer_unique_id
 
-- 构造M值
CREATE VIEW Monetary AS
SELECT 
customer_unique_id, 
CASE 
WHEN payment_value > (SELECT AVG(payment_value) FROM ecom) THEN 1 ELSE 0 
END as M
FROM ecom 
GROUP BY customer_unique_id, payment_value

-- 构造M值
CREATE VIEW Monetary AS
SELECT 
 customer_unique_id,
 payment_value>(SELECT AVG(payment_value) FROM ecom) as M
FROM ecom
GROUP BY  customer_unique_id,m
 
-- 构造RFM分层
CREATE VIEW RFM AS
SELECT
Recency.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 
INNER JOIN Frequency
ON Recency.customer_unique_id = Frequency.customer_unique_id
INNER JOIN Monetary 
ON Recency.customer_unique_id = Monetary.customer_unique_id

2.2.2 用户数量和占比

-- 各类型用户数量和占比情况
SELECT 用户类型, 
COUNT(*) 用户数量, 
COUNT(*)/(select count(*) from rfm) 占比
FROM rfm 
GROUP BY 用户类型
ORDER BY 用户类型

这里从8种用户类型挑选了4种进行分析,可以看出,一般用户占比72%,而重要用户占比28%。结合RFM,说明用户流失比较严重,应该紧急采取相应挽留措施

2.2.3 用户品类偏好

由于数据量大,挑选的前1000条数据来分析

重要价值用户:

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

重要挽留用户:

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

一般价值用户:

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

 

一般挽留用户: 

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

几张图可以看出,每种类型的客户都有相应的偏好,平台在维持客户时,可以根据客户类别推送商品类别信息,从而得心应手。另外可以看出cama_mesa_和beleza_saude等品类商品受到4大客户类别的喜爱,商家可以对该类商品进行促销推广

2.3 用户地区分布

select 
customer_state as 客户所在
,count(distinct customer_unique_id) as 地区人数
from ecom
group by customer_state

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

2.4 用户支付

2.4.1 支付方式

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

我们可以看出,75.8%的用户选择用信用卡的方式来支付,19.89%的用户选择boleto的方式,而剩余两种方式合起来也不过4.31%。说明这两种方式在该平台是主流的支付方式

2.4.2 分期付款期数

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

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

3、商户分析

3.1 商品地区分布

-- 商户地区分布
select 
 seller_state
 ,count(distinct seller_id) as 商户人数
from ecom
GROUP BY seller_state

可以看出,商户来自SP州的超半数,说明该地区商业发达,这与用户地区分布的分析结果吻合 

3.2 商户交易额

select 
 价格区间
 ,count(1) as 交易数量
 ,count(1)/(select count(distinct seller_id)from ecom) as 占比
from (select 
 seller_id
 ,sum(payment_value) as sum_pa
 ,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 ecom
GROUP BY seller_id
order by sum_pa) a
group by 价格区间

 可以看出,近半数的商户交易额在1000以内,1000至5000以内的商户占29%,5000至1万和1万以上的商户分别各占10%左右,大于10000的只占11%。说明平台的商户仍以小商户为主

3.3 商户评分

select 
 评分区间
 ,count(1) as 评分人数
 ,count(1)/(select count(distinct seller_id)from ecom) as 占比
from (select 
		seller_id
		,avg(review_score) as avg_
		,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 ecom
	  GROUP BY seller_id
	  order by avg_) a
group by 评分区间

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

4、产品分析

4.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 ecom
GROUP BY product_category_name

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

4.2 帕累托分析

select
 case when product_category_name !='' then product_category_name
 else 'lost_name' end 商品品类
 ,sum(payment_value) as 交易总额
 ,sum(sum(payment_value)) over(order by sum(payment_value) desc) as _reven
from ecom
GROUP BY product_category_name

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

5、销售分析

5.1 GMV

-- 1.年度GMV
select 
 y 年份,
 sum(payment_value) 年度GMV 
from ecom a1
LEFT JOIN o_time a2 ON a1.customer_unique_id = a2.customer_unique_id
group by y
order by y

-- 2.月度GMV
select 
 y 年份,
 m 月份,
 sum(payment_value) 月度GMV 
from ecom b1
LEFT JOIN o_time b2 ON b1.customer_unique_id = b2.customer_unique_id
group by y,m
order by y,m

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

5.2 ARPU

-- 3.日ARPU
select 
d 日期,
 round((sum(c1.payment_value)/count(DISTINCT c1.customer_unique_id)),2) 日ARPU 
from ecom c1
LEFT JOIN o_time c2 ON c1.customer_unique_id = c2.customer_unique_id
group by d
order by d

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

五、总结建议

一、平台运营建议:平台前期正在快速成长,现在发展遇到瓶颈,个别指标有回落情况出现

1、我们要评估国内市场流量是否进入竞争阶段,是,需考虑发展海外市场,用户运营也要同步进行,以便于减少用户流失;否,则可能与平台自身运营有关或竞争对手抢占市场导致,需对内调整运营策略,优化用户体验,减少流失,对外跟进竞争对手动态,拓展站外流量


2、保证用户规模增长的同时,一方面有效利用用户活跃时段进行运营,提高各环节的转化率,另一方面做好用户运营,培养优质用户


3、根据用户支付方式和分期偏好:建议平台合理设定免息门槛和分期利息


4、利用 “黑色星期五” 的优势, 创新销售策略和活动玩法


二、用户、商家和产品运营建议:结合用户特点和商品喜好采取相关有效运营措施

1、消费次数较少,有较大的提升空间。对于老用户进行针对性消息推送并提供消费抵用券等优惠,降低二次消费门槛,提升复购率。同时可以推出vip会员服务,为用户提供消费折扣,引导用户长期消费,增强粘性


2、挑选用户均喜爱的产品,也可以根据客户类型挑选出各类用户偏好的产品,分别推送


3、用户和商家地域性明显,集中在SP地区,建议可以扩大运营规模,根据不同地区的消费特点,增加其他地区的业务投入,加大宣传和折扣的力度,引入更多的商家和用户


4、商品以价格偏低为主,种类相对单一,可以适当的引入价格中等或偏高的商品,丰富商品的种类促进购买

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
电商数据分析系统是一个基于大数据技术的系统,旨在帮助电商企业更好地了解用户需求、提高销售效率、优化供应链等方面。Hadoop作为大数据技术的代表,可以提供高效、可扩展、可靠的数据处理和存储能力,因此被广泛应用于电商数据分析系统中。 下面是基于Hadoop的电商数据分析系统的设计: 1. 数据采集 数据采集是整个系统的基础,电商数据分析系统需要采集来自多个渠道的数据,包括用户行为数据、订单数据、商品数据等等。这些数据可以通过API、爬虫等方式进行采集,并存储在Hadoop分布式文件系统(HDFS)中。 2. 数据处理 在Hadoop中,数据处理主要通过MapReduce程序实现。对于电商数据分析系统,可以通过MapReduce程序进行数据清洗、数据预处理、数据聚合等工作。例如,可以通过MapReduce程序对用户行为数据进行聚合,得出用户的购买习惯、浏览习惯等等。 3. 数据存储 Hadoop提供了HDFS和HBase两种数据存储方式。在电商数据分析系统中,可以将清洗后的数据存储在HBase中,以便更快的查询和分析。同时,HDFS也可以用来存储原始数据和处理后的数据。 4. 数据分析 数据分析电商数据分析系统的核心,通过分析数据可以得出用户需求、销售趋势等信息。对于电商数据分析系统,可以使用Hive或Pig等工具进行数据分析。例如,可以通过Hive对订单数据进行分析,了解销售额、销售额占比、订单数等信息。 5. 数据可视化 数据可视化是将数据分析结果呈现给用户的方式,可以使用数据可视化工具如TableauPowerBI等进行可视化。通过数据可视化,可以更直观地了解数据分析结果,并更好地进行决策。 总之,基于Hadoop的电商数据分析系统,可以帮助电商企业更好地把握市场动态,提高销售效率,并优化供应链等方面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值