一、漏斗分析模型应用场景举例

漏斗分析是一套流程式数据分析,它能够科学反映用户行为状态以及从起点到终点各阶段用户转化率情况的重要分析模型。

漏斗分析是互联网行业常用的数据分析模型,数据分析师们经常将漏斗模型运用于流量监控、用户转化等场景中,以此来辅助运营的决策。作为数据行业的初学者,你可能听过很多次漏斗分析模型,但是却不知道漏斗分析模型如何应用于业务分析。

1.什么是漏斗分析

漏斗分析可以直观地呈现用户行为步骤以及各步骤之间的转化率,分析各个步骤之间的转化率,可以为运营提供辅助决策的意见;减少“漏掉”的用户数量,可以提升业务规模,提高业务成交量。以电商转化为例进行说明,用户从浏览商品到支付订单有一个转化路径,可以把这个转化路径看成一个漏斗,因为每一个步骤都会漏掉一批用户,据不完全统计支付订单的用户不足4%。如果想要提升支付订单的用户比例,那么毫无疑问需要减少每个步骤漏掉的用户,分析用户在每一关键步骤漏掉的原因,针对每一个原因逐一对产品进行改进,从而提升用户转化率。

2.漏斗分析的核心步骤

漏斗分析的四大关键要素分别是研究对象、时间、节点以及指标。

研究对象即我们分析的维度,对于电商来说常用的维度有人、货、场、订单等;时间即事件从何时开始到何时结束,也就是我们应用漏斗模型进行研究的时间段;节点即从事件开始到事件结束所经历的各个流程,每一步流程都是事件的关键节点,包括起点、终点和过程性节点,并且涵盖这些节点的命名、标识;指标则是对整个事件流程进行分析的工具,也是对漏斗的描述与刻画,它是从数据的角度对漏斗模型进行描述,可以全面解读漏斗模型,有助于发现业务问题,指导业务流程优化。

对应着漏斗分析的四大要素,我们将漏斗分析的核心步骤总结如下:

1.确定研究对象,选定分析维度,即选定数据统计的角度,电商常用人、货、场、订单等。

2.确定事件的开始和结束时间,即想要把漏斗模型应用于业务的哪个时间段。

3.拆解用户路径,明确关键节点,即明确用户在该业务中的每一个步骤节点。

4.指定关键指标,全面刻画业务,指导业务优化,即通过数据指标诠释业务现状和监控业务发展。

3.淘宝逆向物流案例

对于什么是漏斗分析,漏斗分析的流程你肯定已经了如指掌了,但是漏斗分析方法论在实际业务中如何用就得通过实际案例来说明了。我们会以淘宝逆向上门取件换货业务为例,使用漏斗分析的方法分析业务问题并给出一定的解决方案!

3.1 业务背景介绍淘宝逆向包括的三种不同形态的业务

对于消费者来说,包括上门取件退货和上门取件换货业务;而对于商家来说则是拦截件业务。消费者端的上门取件退货业务已经发展成熟,而上门取件换货业务则刚刚开始,所以需要对改模块的业务进行系统地分析以发现业务问题,优化现有业务,提升换货成功率以及上门取件换货渗透率!上门取件换货业务路径较长,涉及到两段物流,其业务路径的核心指标有两个,第一个是换货成功率,即成功完结的订单量与买家寄出量的比值;第二个是菜鸟裹裹渗透率,也叫上门取件换货渗透率,换货业务中选择上门取件的寄出量与买家寄出量的比值。

3.2 业务指标体系建立对于一块新业务来说,第一个步骤就是建立一套完整的指标体系以反映业务现状和监控业务长期发展趋势。

对于淘宝逆向上门取件换货业务来说,指标体系的建立也是根据业务流程进行拆解,提炼核心指标监控业务发展和变化。上门取件换货业务的指标体系包括从换货发起到订单完结各个环节的核心指标,同时也包括了整个业务的核心监控指标,例如,换货成功率及上门取件换货渗透率。具体的指标体系如下图所示。

3.3 业务现状概括及业务问题探索有了指标体系,我们就能看到业务漏斗中每一步的数据,并且发现业务现有的业务问题。

对于上门取件换货业务来说,主要存在两个核心问题。

问题1:换货成功率虽然高达94.5%,但仍有提升的空间换货业务的成功率高达94.5%,但是在整个转化路径中还是有5.5%的用户漏掉,这部分用户或许经过流程优化、产品调整等可以挽回。

问题2:上门取件换货渗透率与同类业务相比仍有一定差距同类业务上门取件退货业务的渗透率高达55.86%,而上门取件换货业务渗透率仅有45.78%,两者差距高达10.08%

3.4 漏斗分析定位上门取件换货业务问题面对现有的两个业务问题,我们需要通过漏斗分析定位影响换货成功率以及换货上门取件渗透率的关键环节和因素,以做出相应改进措施,提高换货成功率和换货上门取件渗透率。

首先,我们以订单维度进行分析,绘制了用户换货路径全漏斗。这个漏斗既包括了换货路径的主线流程,也包括了商家和买家在换货路径上的支线路径。漏斗的主线流程和支线流程环环相扣,前面的步骤会影响后续的步骤,上个步骤的结果会影响下个步骤的表现。通过这个用户换货路径漏斗,我们清晰地看到各个重要节点之间的关联关系,更容易理清影响到换货成功率和换货上门取件渗透率的因素。

其次,我们将换货成功率和换货上门取件渗透率这两个关键指标拆解到用户路径漏斗当中。根据换货成功率的定义,如果“商家拒绝收货”以及“买家拒绝收货”的订单量能转换为“成功完结的订单量”的话,那么就能提升换货成功率;而根据换货上门取件渗透率的定义,如果“买家取消”以及“超时未寄出”的订单量能够使用上门取件的方式寄出的话,那么换货上门取件渗透率就能得到提升。到此为止,我们定位到了影响两个关键指标的因素。因此,后续分析我们将着手研究“商家拒绝收货”以及“买家拒绝收货”的原因以及“买家取消”以及“超时未寄出”的原因,以此来找到提升换货成功率和换货上门取件渗透率的切入点。

3.5 基于经验及假设,验证影响两个关键指标的具体原因-影响换货成功率的因素商家拒绝发货的单量是换货成功率的影响因素,找出商家拒绝收货的具体原因并采取对应的措施可以提升换货成功率。商家拒绝发货的主要原因是货物破损、商标不全、换货物品非全新品,也有部分原因是快递单号错误。对于货品原因,我们建议推出验货服务;而对于快递单号错误问题,我们建议推出单号校验服务。买家拒绝收货也是影响换货成功率的因素之一,于是我们分析了拒绝收货的买家发生复购的比率,发现复购率高达54.31%,由此我们推测买家相比于换货更喜欢退货重买。

影响换货上门取件渗透率的因素取消换货和超时未寄出是影响换货上门取件渗透率的主要因素。我们对买家取消换货的原因进行深入探讨,发现取消换货的用户发生复购的比率依然高达68.92%,也说明买家相比于换货,消费者更喜欢退货重买;其次,我们发现取消换货的订单运费险覆盖率只有26.79%,由此我们推测运费险覆盖不足也是买家取消换货的原因之一。

3.6 根据数据分析结反馈意见及建议

为了提升换货成功率和换货上门取件渗透率,我们通过漏斗分析定位了影响这两个关键指标的因素并且分析了具体原因,最终根据具体原因提出改进的意见和建议。

商品损坏、商标不全、非新品等商品问题以及物流单号错误造成商家拒绝收货,从而影响了换货成功率。于是我们建议推出末端快递员验货服务以及平台提供单号检验服务以减少商家拒绝收货的单量,进而提升换货成功率。

买家相比于换货更喜欢退货重买,具体表现是买家取消换货以及拒绝收货后选择复购,为此我们建议推出一款类似于退货重买的换货服务,即双向物流极速换货服务,买家申请换货的同时商家即刻发货。

买家超时未寄出的主要原因是运费险覆盖率低,由此我们建议提高运费险的覆盖率,同时发放上门取件优惠券给到换货用户并通过短信提醒用户及时寄件。

4.总结漏斗分析是数据分析中最常用的方法

本文介绍了漏斗分析的定义、漏斗分析的核心步骤以及通过换货上门取件业务为例逐步展示漏斗分析如何在业务中应用。值得注意的是,漏斗分析不仅需要理清漏斗的主线流程,而且需要将主线流程涉及到的分支流程也一并梳理,因为每一个时间节点、每一个分支步骤都可能是影响到下一步的结果;其次,根据漏斗路径制定关键的监控指标并定位影响关键指标的具体原因是漏斗分析的核心,因为只有找出这些原因才能找到业务优化的落脚点;最后,在寻找影响核心监控指标的因素时候,大部分情况是基于业务经验以及假设验证的,这就很难避免得到的结论与假设不符,需要从多个角度、不同维度多方假设验证才能找到落脚点。

二、几种漏斗编码绘制方法

1、pyecharts

pyecharts有漏斗图的模板(点击链接),套用即可。

代码

from pyecharts import options as opts
from pyecharts.charts import Funneldata = [13543, 11413, 7909, 1366, 918, 151]
phase = ['总访客数量  ', '活跃访客数量', '注册用户数量', '预定用户数量', '支付用户数量', '复购用户数量']c = (Funnel().add("阶段", [list(z) for z in zip(phase, data)]).set_global_opts(title_opts=opts.TitleOpts(title="漏斗图")).render("funnel.html"))



虽然绘制方便,但是美观程度一般。

2、matplotlib

使用matplotlib绘制的思路是,绘制两个横向柱状图,其中一个设置成背景色遮住另一个的部分柱长,再绘制多边形填充两个柱子之间的间隔。

代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.patches import Polygon  # Polygon()可以用来传入按顺序组织的多边形顶点,从而生成出多边形
from matplotlib.collections import PatchCollectionplt.style.use('seaborn-dark')  # 设置主题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号visitor_num = 135043
data = [135043, 113413, 74909, 10366, 9018, 4151]
phase = ['总访客数量  ', '活跃访客数量', '注册用户数量', '预定用户数量', '支付用户数量', '复购用户数量']
data1 = [visitor_num/2 - i/2 for i in data]
data2 = [i+j for i,j in zip(data, data1)]
color_list = [ '#5c1d1d', '#892c2c','#994a4a', '#c56161', '#d48989', '#e2b0b0']  # 柱子颜色fig,ax = plt.subplots(figsize=(16, 9),facecolor='#f4f4f4')
ax.barh(phase[::-1], data2[::-1], color = color_list, height=0.7)  # 柱宽设置为0.7
ax.barh(phase[::-1], data1[::-1],  color = '#f4f4f4', height=0.7)  # 设置成背景同色
ax.axis('off')polygons = []
for i in range(len(data)):# 阶段ax.text(0,  # 坐标i,  # 高度phase[::-1][i],  # 文本color='black', alpha=0.8, size=16, ha="right")# 数量ax.text(data2[0] / 2 ,  i, str(data[::-1][i]) +'(' +str(round(data[::-1][i] / data[0] * 100, 1)) + '%)', color='black', alpha=0.8, size=18, ha="center")if i < 5:# 比例ax.text(data2[0] / 2 ,  4.4 - i, str(round(data[i+1] / data[i], 3) * 100) + '%', color='black', alpha=0.8, size=16, ha="center")# 绘制多边形polygons.append(Polygon(xy=np.array([(data1[i+1], 4+0.35-i),   # 因为柱状图的宽度设置成了0.7,所以一半便是0.35(data2[i+1], 4+0.35-i), (data2[i], 5-0.35-i), (data1[i], 5-0.35-i)])))# 使用add_collection与PatchCollection来向Axes上添加多边形
ax.add_collection(PatchCollection(polygons, facecolor='#e2b0b0',alpha=0.8));plt.show()



看起来马马虎虎,但代码繁琐

3、ploty

ploty有现成的库,较为美观,漏斗图的模板([点击链接])。

Plotly 是一款用来做数据分析和可视化的在线平台,功能非常强大,可以在线绘制很多图形比如条形图、散点图、饼图、直方图等等。而且还是支持在线编辑,以及多种语言python、javascript、matlab、R等许多API。它在python中使用也很简单,直接用pip install plotly就可以了。使用Plotly可以画出很多媲美Tableau的高质量图:

基础漏斗图

import plotly.express as px
data = dict(number=[39, 27.4, 20.6, 11, 2],stage=["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"])
fig = px.funnel(data, x='number', y='stage')
fig.show()


堆积漏斗图

import plotly.express as px
import pandas as pd
stages = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"]
df_mtl = pd.DataFrame(dict(number=[39, 27.4, 20.6, 11, 3], stage=stages))
df_mtl['office'] = 'Montreal'
df_toronto = pd.DataFrame(dict(number=[52, 36, 18, 14, 5], stage=stages))
df_toronto['office'] = 'Toronto'
df = pd.concat([df_mtl, df_toronto], axis=0)
fig = px.funnel(df, x='number', y='stage', color='office')
fig.show()


带有各项指标的漏斗图

from plotly import graph_objects as gofig = go.Figure(go.Funnel(y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"],x = [39, 27.4, 20.6, 11, 2]))fig.show()


鼠标悬浮在图上可以看到当前阶段的各项占比

漏斗图自定义颜色

from plotly import graph_objects as gofig = go.Figure(go.Funnel(y = ["Website visit", "Downloads", "Potential customers", "Requested price", "Finalized"],x = [39, 27.4, 20.6, 11, 2],textposition = "inside",textinfo = "value+percent initial",opacity = 0.65, marker = {"color": ["deepskyblue", "lightsalmon", "tan", "teal", "silver"],"line": {"width": [4, 2, 2, 3, 1, 1], "color": ["wheat", "wheat", "blue", "wheat", "wheat"]}},connector = {"line": {"color": "royalblue", "dash": "dot", "width": 3}}))fig.show()



带有各项指标的堆积漏斗图

from plotly import graph_objects as gofig = go.Figure()fig.add_trace(go.Funnel(name = 'Montreal',y = ["Website visit", "Downloads", "Potential customers", "Requested price"],x = [120, 60, 30, 20],textinfo = "value+percent initial"))fig.add_trace(go.Funnel(name = 'Toronto',orientation = "h",y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"],x = [100, 60, 40, 30, 20],textposition = "inside",textinfo = "value+percent previous"))fig.add_trace(go.Funnel(name = 'Vancouver',orientation = "h",y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent", "Finalized"],x = [90, 70, 50, 30, 10, 5],textposition = "outside",textinfo = "value+percent total"))fig.show()



比较漂亮,代码也比较简单清晰

三、总结

数据分析离不开数据可视化。我们最常用的就是pandas,matplotlib,pyecharts,plotly当然还有Tableau,具体怎么应用,可根据需求和实际情况进行选择

Python-玩转数据-漏斗图绘制相关推荐

  1. 用python玩转数据Python便捷数据获取与预处理 quiz

    用python玩转数据第四章测试 Python便捷数据获取与预处理 quiz 1.pandas模块中的read_csv()函数在日常使用较多,它除了可以读取csv格式的文件并将结果转换成一个DataF ...

  2. 慕课《用Python玩转数据》之B站弹幕数据分析

    慕课<用Python玩转数据>之B站弹幕数据分析 1.源代码 # -*- coding: utf-8 -*- """ Created on Wed May 1 ...

  3. python好学吗mooc中文网-2020年大学mooc用Python玩转数据作业答案

    2020年大学mooc用Python玩转数据作业答案 更多相关问题 一台电脑先涨价着一%,后降价2一%,这台电脑一现价同原价相比是()A.一样的B.降低了C.提高了直接写出9数 3÷地下%=6×3下% ...

  4. 2020python考试题库_大学mooc2020用Python玩转数据期末考试公众号答案

    大学mooc2020用Python玩转数据期末考试公众号答案 更多相关问题 如图5-21所示,电路由对称三相电源供电.已知,R=XL=XC=44Ω,求. 根据以下资料,回答题:夏天公司2013年5月应 ...

  5. 南京工业大学python考试期末题库_大学慕课用Python玩转数据期末考试查题公众号答案...

    大学慕课用Python玩转数据期末考试查题公众号答案 更多相关问题 雪松的树形为 (5.0分) - Do you think I can borrow your bike for a few hour ...

  6. 用python玩转数据第一周答案_用Python玩转数据_答案

    用Python玩转数据_答案 答案: 更多相关问题 求由参数方程所确定的函数y=y(x)的二阶导数 已知数列的通项公式,则取最小值时=,此时=. (本小题满分10分)已知是等差数列,其中](1)求的通 ...

  7. 新农慕课python项目答案_2020中国大学慕课用Python玩转数据答案搜题公众号

    2020中国大学慕课用Python玩转数据答案搜题公众号 更多相关问题 低碳钥Q235钢板对接时,焊条应选用().A.E7015B.E6015C.E5515D.E4303 不属于无线宽带接入技术的() ...

  8. 大一python实验二答案_大学慕课2020年用Python玩转数据题目答案

    大学慕课2020年用Python玩转数据题目答案 更多相关问题 [单选题]在Word编辑状态下,连续进行了三次插入操作,当单击两次"撤消" 命令后,则(31). A. 第一次插入的 ...

  9. python测验7答案_中国大学MOOC的APP(慕课)2021用Python玩转数据章节测验答案

    中国大学MOOC的APP(慕课)2021用Python玩转数据章节测验答案 更多相关问题 如图是一个液晶显示器厂去年四个季度产值统计图,看图填空.(1)这是______统计图.(2)产值最少的是第__ ...

最新文章

  1. kdd cup 2019
  2. 【骚气的动效】无限循环往下往复淡入淡出运动,通常用于向下箭头,提示用户可以往下滚动或者点击展开
  3. 接口请求两次_事故分享之接口请求顺序错乱
  4. redis setnx实现分布式锁
  5. Python 的字符串内建函数
  6. Java switch case
  7. 游戏开发之--开源软件1--cocos2d-x(c++)|openbor
  8. Python字符串2
  9. 全面理解ThreadLocal
  10. 学习笔记(1):JDBC连接池
  11. 开源KVM管理工具和平台
  12. 自然语言处理NLP开源软件工具包
  13. html动态生成tr标签,JS动态添加tr元素
  14. running_mean和running_var
  15. [解题报告]Ural 1011 Conductors
  16. python自然语言处理学习笔记一
  17. 红石外汇 RedstoneFX|每日汇评:日元在央行温和数据发布后,等待美国关键通胀数据
  18. 降维算法-LDA线性判别分析实例
  19. 票据识别android代码,Android 百度AI开放平台-文字识别-财务票据文字识别
  20. Java反射机制的原理与使用(反编译)

热门文章

  1. 【DeFi学堂】空手套白狼的利器-闪电贷原理及应用案例
  2. 王者服务器维护到什么时候2021,王者荣耀怎么解除健康系统时间限制2021 王者荣耀怎么解除禁赛限制...
  3. distinct和group by,效率比较
  4. 实验3:CUP的译码ID阶段实现
  5. 超级跑跑服务器维修,《超级跑跑》服务器互通升级预告
  6. 一个不错的笑話哦⋯⋯很有意思的双关语
  7. 与思考和励志的名言警句有哪些
  8. python列表元素求和_对Python列表的前k个元素求和?
  9. 千峰JAVA逆战班Day35
  10. R语言使用OptimalCutpoints包的optimal.cutpoints函数对单变量进行ROC分析、计算约登值、寻找最佳阈值、使用plot函数可视化ROC曲线、PROC曲线并在曲线中添加最佳阈