Python实现漏斗图的绘制

说明:代码运行环境为 Win10+Python3+jupyter notebook

本文主要用到的是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

    绘制的图形如下所示:

——更新于2019年1月30日晚。

 

参考:

http://pyecharts.org/#/zh-cn/charts_base

https://jingyan.baidu.com/album/25648fc17b83669191fd00b3.html?picindex=1

《网站分析实战》——王彦平、吴盛峰

  • 9
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 可以使用 Python 中的 Matplotlib 库来绘制漏斗。以下是一个简单的例子: ```python import matplotlib.pyplot as plt # 数据 labels = ['Step 1', 'Step 2', 'Step 3', 'Step 4', 'Step 5'] values = [100, 70, 50, 30, 10] # 绘制漏斗 fig, ax = plt.subplots(figsize=(8, 6)) ax.barh(labels, values, height=0.5, color='blue') # 设置样式、标题等 ax.invert_yaxis() ax.set_xlabel('Count') ax.set_title('Funnel Chart') plt.show() ``` 运行上述代码将会绘制一个简单的漏斗,其中 `labels` 和 `values` 分别表示每个步骤的标签和值,`ax.barh` 用于绘制水平条形,`ax.invert_yaxis` 用于将 y 轴反转,这样就可以得到漏斗的形状。你可以根据需要进一步调整样式和布局。 ### 回答2: Python可以使用多种库来绘制漏斗,其中较为常用的是matplotlib库和plotly库。下面我将分别说明这两种方案。 1. 使用matplotlib库绘制漏斗: matplotlib是Python中的一个绘库,提供了丰富的绘功能。下面是使用matplotlib绘制漏斗的简单示例代码: ```python import matplotlib.pyplot as plt # 数据 labels = ['Step 1', 'Step 2', 'Step 3', 'Step 4'] values = [100, 80, 50, 20] # 绘制漏斗 plt.figure(figsize=(6, 4)) plt.pie(values, labels=labels, startangle=90, counterclock=False, wedgeprops=dict(width=0.4)) # 设置标题和标签 plt.title('Funnel Chart') plt.axis('equal') # 显示形 plt.show() ``` 以上代码中,首先定义了漏斗的数据,包括标签和对应的数值。然后通过`plt.pie()`函数绘制,通过`wedgeprops=dict(width=0.4)`设置饼的宽度,从而形成漏斗的效果。最后设置标题和标签,并调用`plt.show()`显示形即可。 2. 使用plotly库绘制漏斗: plotly是一个交互式的绘库,可以生成美观的可交互式表。使用plotly绘制漏斗需要先安装plotly库,并生成一个账户,然后按如下示例代码进行操作: ```python import plotly.graph_objects as go # 数据 labels = ['Step 1', 'Step 2', 'Step 3', 'Step 4'] values = [100, 80, 50, 20] # 绘制漏斗 fig = go.Figure(go.Funnel( y = labels, x = values, textinfo = "value+percent initial" )) # 设置布局和标题 fig.update_layout( title="Funnel Chart", autosize=True ) # 显示形 fig.show() ``` 以上代码中,首先导入`plotly.graph_objects`模块,并定义漏斗的数据。然后通过`go.Figure()`和`go.Funnel()`创建漏斗对象,并传入数据。接下来通过`fig.update_layout()`设置布局和标题。最后调用`fig.show()`显示形。 综上所述,以上是使用matplotlib和plotly两种库来绘制漏斗的示例代码和操作方法。根据实际需求选择合适的方法来进行绘制。 ### 回答3: Python绘制漏斗的其中一种方法是使用matplotlib库。下面是一个简单的例子: 首先,我们需要导入所需的库: ```python import matplotlib.pyplot as plt ``` 然后,我们可以创建一个漏斗的数据列表,例如: ```python data = [5000, 4000, 3000, 2000, 1000] ``` 接下来,我们可以创建一个空的形对象,并设置漏斗的大小和颜色: ```python fig, ax = plt.subplots(figsize=(6, 9)) ax.set_facecolor('white') ``` 然后,我们可以使用barh函数绘制每个阶段的漏斗形: ```python ax.barh(range(len(data)), data, color='steelblue') ``` 接着,我们可以设置漏斗的标签以及其他细节,例如: ```python ax.set_yticks(range(len(data))) ax.set_yticklabels(['阶段5', '阶段4', '阶段3', '阶段2', '阶段1']) ax.set_xticks([]) ax.invert_yaxis() ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) ax.spines['bottom'].set_visible(False) ax.spines['left'].set_visible(False) ``` 最后,我们可以保存形并显示漏斗结果: ```python plt.savefig('funnel.png', dpi=300, bbox_inches='tight') plt.show() ``` 这就是使用Python绘制漏斗的基本步骤。你可以根据需要自定义细节,例如修改颜色、添加标题和标签等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值