python 漏斗图
转载 https://blog.****.net/qq_41080850/article/details/83933017
本文主要用到的是pyecharts包,所以要保证电脑上已经安装了pyecharts包。
漏斗图简介:
漏斗图常用于用户行为的转化率分析,例如用漏斗图分析用户购买流程中各个环节的转化率。但是单一的漏斗图反映的数据过于单一,无法比较,也就失去了分析的意义。对于用户购买流程,我们可以通过把流程优化前后的漏斗图放在一起,进行比较分析,得出相关结论。本文仅涉及漏斗图的绘制,不讨论具体分析。
导入数据并对数据做相应处理:
-
from pyecharts import Funnel # 从pyecharts包中导出创建漏斗图的函数
-
import pandas as pd
-
import numpy as np
-
# 导入创建漏斗图所需要的数据
-
data = pd.read_excel('funnel.xls','Sheet1')
-
data
data的表结构如下图所示:
-
# 根据给定数据求出单一环节转化率:
-
temp1 = np.array(data['人数'][1:])
-
temp2 = np.array(data['人数'][0:-1])
-
single_convs = temp1 / temp2
-
single_convs = list(single_convs)
-
single_convs.insert(0,1)
-
single_convs = [round(x,4) for x in single_convs] # 利用round函数将转化率保留四位小数
-
data['单一环节转化率'] = single_convs
-
# 根据给定数据求出总体转化率:
-
temp3 = np.array(data['人数'])
-
temp4= np.ones(len(data['人数'])) * data['人数'][0]
-
total_convs = (temp3 / temp4).tolist()
-
total_convs = [round(x,4) for x in total_convs]
-
data['总体转化率'] = total_convs
-
data
加入单一环节转化率和总体转化率后,data的表结构如下所示:
绘制漏斗图:
示例一:
-
attrs = data['环节'].tolist()
-
attr_value = (np.array(data['总体转化率'])* 100).tolist()
-
funnel1 = Funnel("总体转化漏斗图一",width=800, height=400, title_pos='center')
-
funnel1.add(name="商品交易行环节", # 指定图例名称
-
attr=attrs, # 指定属性名称
-
value = attr_value, # 指定属性所对应的值
-
is_label_show=True, # 指定标签是否显示
-
label_formatter='{c}%', # 指定标签显示的格式
-
label_pos="inside", # 指定标签的位置
-
legend_orient='vertical', # 指定图例的方向
-
legend_pos='left', # 指定图例的位置
-
is_legend_show=True) # 指定图例是否显示
-
funnel1.render()
-
funnel1
绘制的图形如下所示:
示例二:
-
funnel2 = Funnel("总体转化漏斗图二",width=800, height=400, title_pos='center')
-
funnel2.add(name="商品交易环节", # 指定图例名称
-
attr=attrs, # 指定属性名称
-
value = attr_value, # 指定属性所对应的值
-
is_label_show=True, # 指定标签是否显示
-
label_formatter='{b}{c}%', # 指定标签显示的格式
-
label_pos="outside", # 指定标签的位置
-
is_legend_show=False) # 指定图例不显示图例
-
funnel2.render()
-
funnel2
绘制的图形如下所示: