漏斗模型是一种常见的数据分析模型,用来反映用户在流程里的关键行为以及从起点到终点各阶段转化和流失情况。我们尝试通过自拟一组简单数据利用python的pyechart库对数据进行分析处理绘图。
pyecharts - A Python Echarts Plotting Library built with love.
import pandas as pd
import pyecharts.options as opts # 配置图表的各种属性和选项
from pyecharts.charts import Funnel
file_path = r"D:/CSDN\漏斗图\\funnel.xlsx"
# file_path = r"D:\CSDN/kaggle\\data//funnel.xlsx"
# 加入前缀r,表示原始字符串,避免\的转义,/\//\\可以随意使用
df = pd.read_excel(file_path)
# openpyxl专门用于处理.xlsx 文件
# xlrd专门处理.xls文件
# 提前安装好软件包后,可以直接用pd.read_excel读取
print(df.info())
print(df)
print(df["类型"], type(df["类型"]))
print(df["数量"][0], type(df["转化率(%)"][0]))
# 系列数据项data_pair:格式为 [(key1, value1), (key2, value2)]
key = df["类型"].tolist()
value = df["转化率(%)"].tolist() # 不用tolist得到的数据也符合数据格式,但是画出的图形不是梯形
data = [(key[i], value[i]) for i in range(len(df["类型"]))]
print(data)
# 创建漏斗图实例
funnel = Funnel()
# 添加数据
funnel.add(
series_name="销售", # 图表中的系列名称
data_pair=data, # 末尾的逗号可选
# sort_="ascending"
)
# 配置全局选项
funnel.set_global_opts(
title_opts=opts.TitleOpts(title="漏斗图", subtitle="funnel"), # 标题、副标题
# legend_opts=opts.LegendOpts(
# pos_left="left", # 图例在左侧
# pos_top="middle", # 图例的垂直位置
# orient="vertical", # 图例竖向排列
# padding=10) # 图例与边界的间距
)
# 配置系列选项
funnel.set_series_opts()
# 图像渲染
funnel.render("funnel_chart.html")
运行代码后在当前的代码文件夹下寻找并打开渲染的漏斗图网页:
同时,还有一些没有解决的难点:
- 当漏斗值较大,超过100(例如改用数量列),漏斗的梯形将会奇怪的变成矩形块,失去逐层递减的效果;
- 图例的无序性有待改进;