分享

数据分析之利用python对巴西电商数据进行多维度分析

问题导读:
1、python如何探索数据?
2、数据清洗有哪些内容可做?
3、如何进行数据分析及可视化?
4、如何构建用户画像?




写作背景:从kaggle上找了一份巴西电商数据集,结合python+MYSQL+tableau等分析工具,从多个维度对网站的各项指标进行分析,发现网站现存的问题并对网站提出优化建议。

文章结构如下:
2020-03-17_201455.jpg
1、获取/理解数据
1.1获取数据

从kaggle上下载数据集,并读入python
[mw_shl_code=python,true]import pandas as pd
df = pd.read_csv('Orders_merged.csv')
df.head()[/mw_shl_code]
2020-03-17_201531.jpg
2020-03-17_201553.jpg
数据共有96478行,38列

1.2理解数据

数据来源: 这是在Olist商店下订单的巴西电子商务公共数据集。 该数据集包含2016年至2018年在巴西多个市场上制作的10万张订单的信息。 它允许从多个维度查看订单:从订单状态,价格,付款和货运绩效到客户位置,产品属性以及最终由客户撰写的评论。这是真实的商业数据,已被匿名化。

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

字段说明(共38个字段):

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

2、构建分析框架

2020-03-17_201643.jpg

3、数据清洗

3.1选取子集(根据搭建的框架选取需要的字段,作为新的数据表)
[mw_shl_code=python,true]commerce_data = df[['product_id','seller_id','order_id','order_item_id','customer_unique_id','order_purchase_timestamp','order_delivered_customer_date',
                    'order_estimated_delivery_date','customer_city','customer_state','seller_city','seller_state','review_score','review_creation_date',
                    'review_answer_timestamp','payment_type','payment_installments','payment_value','product_category_name']]

commerce_data.shape[/mw_shl_code]
2020-03-17_201730.jpg
3.2数据去重
[mw_shl_code=python,true]commerce_data = commerce_data.drop_duplicates()
commerce_data.info()[/mw_shl_code]
2020-03-17_201801.jpg
发现数据并没有重复值

3.3 缺失值处理
根据去重结果,product_category_name缺失数据相对其他缺失数据较多,但是与整体数据相比较少,可直接选择删除缺失值。
[mw_shl_code=python,true]commerce_data = commerce_data.dropna(how='any')
commerce_data.info()[/mw_shl_code]

2020-03-17_201831.jpg

处理完的数据共有95113条

3.4按用户下单日期对数据集排序
[mw_shl_code=python,true]commerce_data = commerce_data.sort_values(by='order_purchase_timestamp')
commerce_data.head()[/mw_shl_code]

2020-03-17_201904.jpg

3.5查看数据有无异常
[mw_shl_code=python,true]commerce_data.describe()[/mw_shl_code]

2020-03-17_201931.jpg
根据数据定义,用户付款期数最小也是1,即一次性付清不分期,付款金额应该大于0,接下来处理异常值。

3.6找异常值
[mw_shl_code=python,true]commerce_data[commerce_data['payment_value']==0]
commerce_data[commerce_data['payment_installments']==0][/mw_shl_code]
2020-03-17_202002.jpg

发现异常数据只有五条,根据索引直接进行删除

3.7删除异常值,并查看数据结果
[mw_shl_code=python,true]commerce_data = commerce_data.drop([45144,17040,51223,4725,82744])
commerce_data.describe()[/mw_shl_code]

2020-03-17_202029.jpg

异常值已删除,数据都正常了

2020-03-17_202058.jpg

处理完的数据共有95108条,将处理完的数据存入MYSQL

3.8导出清洗后的数据
[mw_shl_code=python,true]from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://root:root@localhost:3306/kkb?charset=utf8")
commerce_data.to_sql('commerce_data_clean',engine,if_exists='append')[/mw_shl_code]


至此数据清洗完成

4、分析及可视化

因为数据是从2016-10-03到2018-08-29,因此我们选取2017一整个年度的数据进行分析,通过tableau与MYSQL建立连接,将数据导入tableau
2020-03-17_202137.jpg

4.1网站整体表现
4.1.1 总体指标
2020-03-17_202206.jpg
4.1.2 2017.1-2017.12整体销售表现

销量和销售额整体呈上升趋势,11月是网购高峰期,1月是低谷
2017年销量及销售额整体呈上升趋势,11月销量和销售额达到顶峰,且远高于其他月份,1月销售额最低,3,5月达到了阶段性的小高峰;总的来说,后半年的表现远好于前半年。

2020-03-17_202242.jpg

11月24日网站销售额暴涨,订单量破千
11月24日网站订单量暴增,结合上图可知11月的销售额高很大程度是24日这天造成的,经查询2017年11月24日非当地节日,也未有重大庆祝事件,可能是网站出现了爆款情况,具体原因暂未知。

2020-03-17_202316.jpg

4.2销售类指标
4.2.1产品层面

22%的品类贡献80%的销售额,ABC分类法则优化产品结构
柱状图为各品类销售额,折线图为累计销售额占比,可以看到前22%的品类贡献了80%的销售额,符合二八原理;同时按照70%,20%,10%的销售额比重把产品分为ABC三类,然后把重点的管理资源放在A,把较少的资源分配给C或者砍掉部分C商品,以达到资源管理的最优状态。

2020-03-17_202438.jpg
产品不够丰富,无法满足用户选择需求
很多品类的子类数很少,可能导致产品不够丰富,无法满足用户的选择需求;结合上面的帕累托图,对于一些子类数很少的C类产品可以直接砍掉,同时丰富A、B类产品的子类数,提升网站收入。

2020-03-17_202415.jpg
产品销量集中,头部效应明显
头部效应明显,销量呈严重的两极分化;极大部分的子类产品销量基本趋近于0,TOP10子类产品销量遥遥领先。
2020-03-17_202544.jpg

2020-03-17_202609.jpg
4.2.2下单时间

下单时间集中在9:00-23:00
除了睡觉时间,巴西用户几乎随时网购,并未受上班时间的影响

2020-03-17_202642.jpg
巴西用户热衷周内网购,周末订单下降明显
周内的订单表现优于周末,周六订单量最低,环比周五下降近30%,降幅较大;周内订单平稳波动,环比增速不超过6%。

2020-03-17_202714.jpg
4.2.3客单价

客单价161.5雷亚尔,约234人民币(根据2020/3/14的汇率)
客单价(平均一个客人购买商品的金额)=销售总额/消费总人数

2020-03-17_202829.jpg
4.2.4订单交付情况

订单平均交付时长近13天,巴西网购的平均交付时间过长
订单平均交付时长=总收货时长/总订单数

2020-03-17_202855.jpg

订单延期交付率5.64%
订单延期交付率=延期的订单数/总订单数
2020-03-17_202920.jpg

延期交付订单的平均延期时长为0.66天
延期订单的平均延期时长=总延期时长/延期的订单数
2020-03-17_202945.jpg

4.2.5付款方式

巴西用户网购付款首选信用卡,占比高达74.96%
巴西用户首选信用卡付款,其次为线下交易方式boleto,占比21.07%,代币券voucher和借记卡debit_card分别占比3.05%和0.93%。

2020-03-17_203011.jpg

4.3会员类指标

平均下单数为1.03
平均下单数=总订单数/总客户数

2020-03-17_203035.jpg

巴西电子商务复购率为2.75%,复购率有待提高
复购率=复购用户数/总下单用户数
(因为tableau计算复购率比较麻烦,因此直接在MYSQL中计算)

2020-03-17_203101.jpg

4.4风控类指标

用户对网购满意度较高,好评率高达80%
评价5分占比最高,为58.86%,4分占比20.12%,总占比近80%,用户满意度较高;但1分和2分合计占比12%左右,网站还有一定的提高空间。以(1-2分:差评,3分:中评,4-5分:好评)为评价标准,则网站好评率高达80%。

2020-03-17_203132.jpg

上午10时至14时,晚上21时至第二天凌晨1时是用户评论的高峰期

2020-03-17_203207.jpg

4.5回归分析

探究收货时长与用户评分的关系
将相关数据导入R,求出两变量的相关系数

2020-03-17_203236.jpg

根据相关系数分类,收货时长和用户评分近似中等程度相关,将评分作为因变量、收货时长为自变量做线性回归

2020-03-17_203303.jpg

建立回归方程:score=-0.039*day+4.656

根据回归结果来看,自变量是显著的(因为p值<0.05),但是拟合优度只有8.9%,模型拟合效果不好,自变量对因变量的解释程度不到9%;说明除了收货时长以外,还有其他因素影响评分,需要进一步挖掘。

4.6用户画像

近50%的客户只贡献了80%的收入,网站需增加大客户数量
根据二八原则,当一个企业80%的收入来自20%的客户总数时,这个企业客户群体是健康且趋于稳固的;而网站近50%的客户只贡献了80%的收入,说明大客户太少,急需增加大客户数量。
2020-03-17_203342.jpg

运用RFM分出8种客户价值类型
2020-03-17_203411.jpg
网站重要价值客户占比过低,客户流失率近30%
下图左侧为各类客户贡献的销售额占比,右侧为各类客户数量占比;可以看到,重要价值客户占比仅1.17%,流失客户近30%,重要挽留客户占比也近30%,网站的情况不容乐观;其中重要挽留客户贡献的销售额最多,占比44.51%,其次是重要深耕客户,贡献达32.93%,将近80%的销售额都是由这两类客户贡献的;网站急需拓展重要价值用户,同时刺激重要挽留客户消费

2020-03-17_203448.jpg

5、结论建议
5.1结论

1、网站整体表现

  •     网站17年总销售额6,685,980,总销量45,638,总品类数72,总子类数15,811
  •     17年1月-12月,网站销量和销售额整体呈上升趋势,11月是网购高峰期,1月是低谷

2、销售类指标

  •     22%的品类贡献了80%的销售额,ABC分类法则优化产品结构
  •     很多品类的子类数很少,可能导致产品不够丰富,无法满足用户选择需求
  •     产品销量集中,头部效应明显,TOP10子类产品销量遥遥领先
  •     下单时间集中在9:00-23:00,巴西用户几乎随时网购,并未受上班时间的影响
  •     巴西用户热衷周内网购,周末订单下降明显
  •     客单价161.5雷亚尔,约234人民币(根据2020/3/14的汇率)
  •     订单平均交付时长近13天,巴西网购的平均交付时间过长;订单延期交付率5.64%;延期交付订单的平均延期时长为0.66天
  •     巴西用户网购付款首选信用卡,占比高达74.96%

3、会员类指标

  •     平均下单数为1.03
  •     巴西电子商务复购率为2.75%,复购率有待提高

4、风控类指标

  •     用户对网购满意度较高,好评率高达80%,差评占比12%左右,网站还有一定的提高空间
  •     上午10时至14时,晚上21时至第二天凌晨1时是用户评论的高峰期

5、回归分析

  •     收货时长与用户评分呈负相关关系,负相关系数为-0.2987,回归方程:score=-0.039*day+4.656,模型拟合效果不好,自变量对因变量的解释程度不到9%,说明除了收货时长以外,还有其他因素影响评分,需要进一步挖掘

6、用户画像

  •     近50%的客户只贡献了80%的收入,网站需增加大客户数量
  •     网站重要价值客户占比过低,客户流失率近30%

5.2建议

1、砍掉一些子类数很少的C类产品,同时丰富A、B类产品的子类数,以满足用户选择需求

2、对需求旺盛的品类保持并进一步丰富,同时对畅销的头部产品进行分析,发掘用户需求特性,对商城的产品进行结构性优化。

3、周末搞一些促销活动,提振周末销量。

4、通过产品组合,满减等措施提高客单价。

5、与用户使用较多的付款方式对应的第三方支付机构洽谈,或自己申请开展支付业务,提高支付速度,简化用户网购流程,降低用户网购门槛,同时缩短网购交付时长。

7、提高复购率,用户对网站整体评分较高,对产品较为认可;可在用户第一次购物时给予积分、优惠券等奖励,同时推出会员卡储值消费,提高用户粘性。

9、拓展重要价值客户,同时刺激重要挽留客户消费(可搞促销、满减活动);针对新客户,分析其来源渠道、购物习惯、喜好等,增加新增占比;针对流失客户,分析客户流失原因,降低流失率。

作者:xiaocai1python
来源:https://blog.csdn.net/xiaocai1python/article/details/104781511
最新经典文章,欢迎关注公众号


本帖被以下淘专辑推荐:

已有(4)人评论

跳转到指定楼层
YTP520YTP 发表于 2020-3-18 17:33:25
66666666666666
回复

使用道具 举报

YTP520YTP 发表于 2020-3-20 09:09:01
数据分析之利用python对巴西电商数据进行多维度分析
回复

使用道具 举报

语亦情非 发表于 2020-3-27 17:04:38
学习学一学学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条