【matplotlib 实战】--漏斗图
漏斗图,形如“漏斗”,用于展示数据的逐渐减少或过滤过程。
它的起始总是最大,并在各个环节依次减少,每个环节用一个梯形来表示,整体形如漏斗。
一般来说,所有梯形的高度应是一致的,这会有助人们辨别数值间的差异。
需要注意的是,漏斗图的各个环节,有逻辑上的顺序关系。
同时,漏斗图的所有环节的流量都应该使用同一个度量。
通过漏斗图,可以较直观的看出流程中各部分的占比、发现流程中的问题,进而做出决策。
1. 主要元素
漏斗图的主要元素包括:
- 分类:漏斗图中的不同层级或步骤。每个分类代表一个特定的过程、筛选或转化。
- 倒梯形:表示在每个阶段中的数据数量或数量的百分比。通常,随着阶段的推进,数据量会逐渐减少。
- 数据流:表示数据在不同阶段之间的流动路径。它显示了数据从一个阶段到另一个阶段的转移和过滤过程。
- 转化率:表示在每个阶段中数据的转化率或转化的百分比。它反映了数据在不同阶段之间的损失或过滤程度。
2. 适用的场景
漏斗图适用的分析场景包括:
- 销售转化分析:跟踪销售过程中的潜在客户数量,并展示他们在不同阶段的转化率,从而帮助分析销售流程中的瓶颈和改进机会。
- 市场营销分析:展示市场活动中的潜在客户数量,并显示他们在不同营销阶段的转化率,从而评估市场策略的有效性和改进方向。
- 用户体验分析:追踪用户在产品或服务使用过程中的转化率,帮助分析用户体验中的瓶颈和提升点,从而优化产品或服务设计。
- 网站流量分析:展示网站访问者在不同页面或功能模块之间的转化率,帮助分析用户行为和改进网站设计。
3. 不适用的场景
然而,漏斗图并不适用于所有分析场景。以下是一些不适合使用漏斗图的情况:
- 数据无序或重复:如果数据没有明确的阶段或无法按照特定的流程进行过滤或转化,漏斗图可能不适用。
- 数据缺失或不完整:如果数据在不同阶段之间存在缺失或不完整,漏斗图可能无法准确反映数据流动和转化情况。
- 多个并行路径:如果数据在不同阶段之间存在多个并行路径,并且无法简单地表示为单一的线性流程,漏斗图可能无法有效展示数据流动。
4. 分析实战
本次用漏斗图分析各个学历的毕业生人数,从小学学历到博士学历。
4.1. 数据来源
数据来源国家统计局公开的数据,整理好的数据可从下面的地址下载:
https://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年义务教育的比例很高。
初中到高中,人数几乎减半,而本科考研,硕士考博的人数比例更是锐减。
【matplotlib 实战】--漏斗图的更多相关文章
- python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- 【Highcharts】 绘制饼图和漏斗图
1.outModel类设计 设计outModel类首先研究下Highcharts中series的data数据格式,发现饼图和漏斗图都可以使用这样格式的数据 series: [{ name: 'Uniq ...
- arcpy.mapping实战-专题图制图自动化
arcpy.mapping实战-专题图制图自动化 by 李远祥 最初对arcpy.mapping感兴趣是因为一次大规模的专题地图调整的需要,由于某某单位利用ArcEngine编写的专题图出图系统,出现 ...
- Matplotlib学习---用matplotlib画雷达图(radar chart)
雷达图常用于对多项指标的全面分析.例如:HR想要比较两个应聘者的综合素质,用雷达图分别画出来,就可以进行直观的比较. 用Matplotlib画雷达图需要使用极坐标体系,可点击此链接,查看对极坐标体系的 ...
- python使用matplotlib绘制折线图教程
Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...
- [实战] SSH 图形化转发
[实战] SSH 图形化转发 一.介绍 Unix Like操作系统不是只能进行服务器的架设而已,在美编.排版.制图.多媒体应用上也是有其需要的.这些需求都需要用到图形介面(Graphical User ...
- ECharts学习总结(二)-----图表组件漏斗图(funnel)
今天在学习ECharts时,想要在ECharts图表的原生态Demo中抠出漏斗图,却不知如何下手,经过一番研究,特总结如下: 首先我们需要这样做 1.拷贝出两个js文件:esl.js 和echarts ...
- python matplotlib imshow热图坐标替换/映射
今天遇到了这样一个问题,使用matplotlib绘制热图数组中横纵坐标自然是图片的像素排列顺序, 但是这样带来的问题就是画出来的x,y轴中坐标点的数据任然是x,y在数组中的下标, 实际中我们可能期望坐 ...
- 小白学Python(9)——pyecharts 绘制漏斗图 Funnel
根据pyecharts的介绍一直没有研究明白def和return的用法,无法显示完整的漏斗图,还请各位指点. 根据上文绘制bar的方法,我更改了代码,做出了漏斗图,不过和demo不一样,而且数据也会随 ...
- Python pyecharts绘制漏斗图
一.pyecharts绘制漏斗图方法简介 funnel.add()方法简介add(name, attr, value, funnel_sort="ascending", funne ...
随机推荐
- Task Execution and Scheduling In SpringBoot
开天辟地 Task Execution and Scheduling In the absence of an Executor bean in the context, Spring Boot au ...
- 最简单的人脸检测(免费调用百度AI开放平台接口)
远程调用百度AI开放平台的web服务,快速完成人脸识别 欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos ...
- 【调制解调】PM 调相
说明 学习数字信号处理算法时整理的学习笔记.同系列文章目录可见 <DSP 学习之路>目录,代码已上传到 Github - ModulationAndDemodulation.本篇介绍 PM ...
- 轻松理解Java中的public、private、static和final
一.概念 1.public和private 两个都是访问权限修饰符,用于控制外界对类内部成员的访问. public:表明对象成员是完全共有的,外界可以随意访问.用public修饰的数据成员.成员函数是 ...
- python(django启动报错,之编码问题)UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte
- 与AI对话 -- 20230215 -- linux 启动参数与控制台
linux 启动参数 console=ttyS0,115200n8 console=tty0 说明 console=ttyS0,115200n8:指定系统使用 ttyS0(ttyS1.ttyS2 以此 ...
- 2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。 其中的每一个数字出现的频率都相同。
2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量. 其中的每一个数字出现的频率都相同. 答案2023-07-29: 大体步骤如下: 1.初始化变量base为固定值10 ...
- 图像阈值_有cv2.threshold,cv2.adaptiveThreshold 等。
1.简单阈值 使用的函数:cv2.threshold (src, thresh, maxval, type) 注释: 与名字一样,这种方法非常简单.但像素值高于阈值时,我们给这个像素赋予一个新值(可能 ...
- 如何破解wifi密码?
前期准备: kali 系统 外置无线网卡 破解过程: 首先,需要登录kali系统,可以是虚拟机. 在虚拟机中设置点击 虚拟机-可移动设备-无线网卡的名称,将无线网卡绑定到kali虚拟机上. 在kali ...
- Stable Diffusion基础:ControlNet之人体姿势控制
在AI绘画中精确控制图片是一件比较困难的事情,不过随着 ControlNet 的诞生,这一问题得到了很大的缓解. 今天我就给大家分享一个使用Stable Diffusion WebUI + OpenP ...