Python matplotlib实战之漏斗图绘制

 更新时间:2023年08月28日 11:42:02   作者:databook  
漏斗图,形如“漏斗”,用于展示数据的逐渐减少或过滤过程,这篇文章主要为大家介绍了如何使用Matplotlib绘制漏斗图,需要的小伙伴可以参考下

漏斗图,形如“漏斗”,用于展示数据的逐渐减少或过滤过程。

它的起始总是最大,并在各个环节依次减少,每个环节用一个梯形来表示,整体形如漏斗。

一般来说,所有梯形的高度应是一致的,这会有助人们辨别数值间的差异。

需要注意的是,漏斗图的各个环节,有逻辑上的顺序关系。

同时,漏斗图的所有环节的流量都应该使用同一个度量。

通过漏斗图,可以较直观的看出流程中各部分的占比、发现流程中的问题,进而做出决策。

1. 主要元素

漏斗图的主要元素包括:

  • 分类:漏斗图中的不同层级或步骤。每个分类代表一个特定的过程、筛选或转化。
  • 倒梯形:表示在每个阶段中的数据数量或数量的百分比。通常,随着阶段的推进,数据量会逐渐减少。
  • 数据流:表示数据在不同阶段之间的流动路径。它显示了数据从一个阶段到另一个阶段的转移和过滤过程。
  • 转化率:表示在每个阶段中数据的转化率或转化的百分比。它反映了数据在不同阶段之间的损失或过滤程度。

2. 适用的场景

漏斗图适用的分析场景包括:

  • 销售转化分析:跟踪销售过程中的潜在客户数量,并展示他们在不同阶段的转化率,从而帮助分析销售流程中的瓶颈和改进机会。
  • 市场营销分析:展示市场活动中的潜在客户数量,并显示他们在不同营销阶段的转化率,从而评估市场策略的有效性和改进方向。
  • 用户体验分析:追踪用户在产品或服务使用过程中的转化率,帮助分析用户体验中的瓶颈和提升点,从而优化产品或服务设计。
  • 网站流量分析:展示网站访问者在不同页面或功能模块之间的转化率,帮助分析用户行为和改进网站设计。

3. 不适用的场景

然而,漏斗图并不适用于所有分析场景。以下是一些不适合使用漏斗图的情况:

  • 数据无序或重复:如果数据没有明确的阶段或无法按照特定的流程进行过滤或转化,漏斗图可能不适用。
  • 数据缺失或不完整:如果数据在不同阶段之间存在缺失或不完整,漏斗图可能无法准确反映数据流动和转化情况。
  • 多个并行路径:如果数据在不同阶段之间存在多个并行路径,并且无法简单地表示为单一的线性流程,漏斗图可能无法有效展示数据流动。

4. 分析实战

本次用漏斗图分析各个学历的毕业生人数,从小学学历到博士学历。

4.1. 数据来源

数据来源国家统计局公开的数据,整理好的数据可从下面的地址下载:databook.top/nation/A0M

使用其中的文件:A0M0203.csv(各级各类学历教育毕业生数)

fp = "d:/share/data/A0M0203.csv"
df = pd.read_csv(fp)
df

4.2. 数据清理

漏斗图不需要时间序列数据,所以,只提取2021年的数据中从小学到博士的6种学历的毕业生人数。

data = df[df["sj"] == 2021]
#A0M020312: 普通小学毕业生数(万人)
#A0M02030T: 初中阶段教育毕业生数(万人)	
#A0M02030J: 普通高中毕业生数(万人)
#A0M020306: 普通本科毕业生数(万人)	
#A0M020304: 硕士毕业生数(万人)	
#A0M020303: 博士毕业生数(万人)
data = data[
    data["zb"].isin(
        [
            "A0M020312",
            "A0M02030T",
            "A0M02030J",
            "A0M020306",
            "A0M020304",
            "A0M020303",
        ]
    )
]
data = data.sort_values("value", ascending=False)
data

4.3. 分析结果可视化

with plt.style.context("dark_background"):
    fig = plt.figure()
    ax = fig.add_axes([0.1, 0.1, 1, 1])
    colors = plt.cm.Set2.colors
    cnt = len(data)
    y = [[1 + i * 3, 3.8 + i * 3] for i in range(cnt)]
    y_ticks = [2 + i * 3 for i in range(cnt)]
    start_x1 = 5
    start_x2 = -5
    for i in range(cnt):
        ax.fill_betweenx(
            y=y[i],
            x1=[start_x1, data.iloc[i, 4]],
            x2=[start_x2, -1 * data.iloc[i, 4]],
            color=colors[i],
        )
        start_x1 = data.iloc[i, 4]
        start_x2 = -1 * data.iloc[i, 4]
    ax.set_xticks([], [])
    ax.set_yticks(y_ticks, data["zbCN"])
    for y, value in zip(y_ticks, data["value"]):
        ax.text(
            10,
            y,
            value,
            fontsize=16,
            fontweight="bold",
            color="white",
            ha="center",
        )
    ax.grid(False)
    ax.set_title("2021年各学历毕业人数")

从图中可以看出,完成9年义务教育的比例很高。

初中到高中,人数几乎减半,而本科考研,硕士考博的人数比例更是锐减

到此这篇关于Python matplotlib实战之漏斗图绘制的文章就介绍到这了,更多相关matplotlib漏斗图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解程序意外中断自动重启shell脚本(以Python为例)

    详解程序意外中断自动重启shell脚本(以Python为例)

    这篇文章主要介绍了详解程序意外中断自动重启shell脚本(以Python为例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 使用Python生成随机密码的示例分享

    使用Python生成随机密码的示例分享

    这篇文章主要介绍了使用Python生成随机密码的示例分享,比如发生一些安全问题时为用户先设置随机密码然后供用户修改的情况下可以用到,需要的朋友可以参考下
    2016-02-02
  • python寻找list中最大值、最小值并返回其所在位置的方法

    python寻找list中最大值、最小值并返回其所在位置的方法

    今天小编就为大家分享一篇python寻找list中最大值、最小值并返回其所在位置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 有趣的Python图片制作之如何用QQ好友头像拼接出里昂

    有趣的Python图片制作之如何用QQ好友头像拼接出里昂

    这篇文章主要介绍了有趣的Python图片制作之如何用QQ好友头像拼接出里昂,本文通过截图实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • 详解安装mitmproxy以及遇到的坑和简单用法

    详解安装mitmproxy以及遇到的坑和简单用法

    mitmproxy 是一款工具,也可以说是 python 的一个包,在命令行操作的工具。这篇文章主要介绍了详解安装mitmproxy以及遇到的坑和简单用法,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 如何使用Python 打印各种三角形

    如何使用Python 打印各种三角形

    这篇文章主要介绍了如何使用Python 打印各种三角形,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • 使用Python实现VPN搭建的流程步骤

    使用Python实现VPN搭建的流程步骤

    VPN(虚拟私人网络)是一种有效的解决方案,可以帮助我们在网络上匿名浏览,保护数据传输的安全性,虽然市面上有许多商业VPN服务,但你也可以通过Python自己搭建一个简单的VPN,本文将介绍如何用Python建立自己的VPN,需要的朋友可以参考下
    2024-06-06
  • Django3基于WebSocket实现WebShell的详细过程

    Django3基于WebSocket实现WebShell的详细过程

    最近工作中需要开发前端操作远程虚拟机的功能,简称WebShell,普通应用大部分用的都是wsgi.py配合nginx部署线上服务. 这次主要使用asgi.py,具体实现过程跟随小编一起看看吧
    2021-08-08
  • python小球落地问题及解决(递归函数)

    python小球落地问题及解决(递归函数)

    这篇文章主要介绍了python小球落地问题及解决(递归函数),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python 3实战爬虫之爬取京东图书的图片详解

    Python 3实战爬虫之爬取京东图书的图片详解

    最近在学习python3,下面这篇文章主要给大家介绍了关于Python3实战爬虫之爬取京东图书图片的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-10-10

最新评论