京公网安备 11010802034615号
经营许可证编号:京B2-20210330
以下的文章内容来源于张彦存老师的专栏,如果您想阅读专栏《Python 数据可视化 18 讲(PyEcharts、Matplotlib、Seaborn)》,点击下方链接
https://edu.cda.cn/goods/show/3842?targetId=6751&preview=0
帕累托分析(Pareto Analysis)源于经济学家维尔弗雷多·帕累托提出的"二八法则",其核心原理是通过识别导致80%结果的20%关键因素,帮助决策者聚焦资源解决主要矛盾。

具体实施步骤包含:
在管理和质量控制领域,帕累托分析(Pareto Analysis)是一种决策工具,用于识别少数重要因素对总体影响的程度。除此之外还可以有如下应用:

使用前需安装,代码运行的pyecharts版本是2.0.5
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts==2.0.5
首先,我们需要导入Pyecharts中的Bar和Line图表类,以及options类,用于实现对各个图标的配置,此外如果代码需要在jupyter notebook中展示图形还需要从globals中导入CurrentConfig, NotebookType做执行环境的配置,对于新版本的jupyter notebook统一设置为NotebookType.JUPYTER_LAB。
from pyecharts.charts import Bar, Line
from pyecharts import options as opts
# from pyecharts.globals import CurrentConfig, NotebookType
# CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
# 定义原始数据
categories = ["产品质量问题", "送货延迟", "客户服务不满", "价格不公", "其他"]
counts = [40, 30, 20, 5, 5]
技术细节说明:
total_counts = sum(counts) # 计算总量
cumulative_percents = [sum(counts[:i+1])/total_counts for i in range(len(counts))] # 累进计算
计算过程解析:
(1) 柱状图初始化
bar = (
Bar()
.add_xaxis(categories)
.add_yaxis("投诉次数", counts)
.set_global_opts(
title_opts=opts.TitleOpts(title="帕累托分析图"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross")
)
)
bar.render_notebook()

关键技术点:
(2) 折线图构建
line = (
Line()
.add_xaxis(categories)
.add_yaxis(
"累计百分比",
cumulative_percents,
linestyle_opts=opts.LineStyleOpts(color="red", width=4),
label_opts=opts.LabelOpts(is_show=True, color="red")
)
)
line.render_notebook()

视觉优化设计:
帕累托图需将以上两张图组合在一起,可以使用overlap实现
bar.overlap(line) # 图层叠加
bar.render_notebook()

可以看到图形很奇怪,因为折线图对应的数据与柱形图对应的数据量纲相差很大。那如何优化?
bar = (
Bar()
.add_xaxis(categories)
.add_yaxis("投诉次数", counts, yaxis_index=0) # 设置使用哪个y轴左边的是第一个0 右边的是第二个1
# 优化点1 添加副y轴
.extend_axis(
yaxis=opts.AxisOpts(
type_="value",
name="累计百分比",
min_=0.3,
max_=1.1,
interval=0.2
)
)
.set_global_opts(
title_opts=opts.TitleOpts(title="帕累托分析图"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross")
)
)
line = (
Line()
.add_xaxis(categories)
.add_yaxis(
"累计百分比",
cumulative_percents,
yaxis_index=1, # 设置使用哪个y轴左边的是第一个0 右边的是第二个1
linestyle_opts=opts.LineStyleOpts(color="red", width=4),
label_opts=opts.LabelOpts(is_show=True, color="red")
)
)
bar.overlap(line)
# 调整图层渲染顺序不然折线图被柱形图遮挡
bar.options["series"][1]["z"] = 1 # 折线图层
bar.options["series"][0]["z"] = 0 # 柱状图层
bar.render_notebook()

深度优化说明:
# bar.load_javascript() # 最新版jupyter notebook需要这样
bar.render_notebook() # Jupyter内嵌展示
# bar.render("pareto.html") # 生成独立HTML文件
多环境支持:

大家如果觉得自己的可视化技能训练的不错了,可以实操起来。
本实现方案通过Pyecharts高效构建了交互式帕累托分析图表,将技术实现与业务分析有机结合,为决策者提供直观的数据支持。开发者可根据具体业务需求扩展功能模块,构建完整的决策分析系统。绘制帕累托的流程相对固定,因此这些代码也可以封装为函数方便后续的复用。
# 完整实现代码
def get_plt(categories,counts):
import pandas as pd
df = pd.DataFrame({"categories":categories,"counts":counts})
categories = list(df.sort_values("counts")["categories"])
counts = list(df.sort_values("counts")["counts"])
from pyecharts.charts import Bar, Line
from pyecharts import options as opts
bar = (
Bar()
.add_xaxis(categories)
.add_yaxis("投诉次数", counts, yaxis_index=0) # 设置使用哪个y轴左边的是第一个0 右边的是第二个1
# 优化点1 添加副y轴
.extend_axis(
yaxis=opts.AxisOpts(
type_="value",
name="累计百分比",
min_=0.3,
max_=1.1,
interval=0.2
)
)
.set_global_opts(
title_opts=opts.TitleOpts(title="帕累托分析图"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross")
)
)
line = (
Line()
.add_xaxis(categories)
.add_yaxis(
"累计百分比",
cumulative_percents,
yaxis_index=1, # 设置使用哪个y轴左边的是第一个0 右边的是第二个1
linestyle_opts=opts.LineStyleOpts(color="red", width=4),
label_opts=opts.LabelOpts(is_show=True, color="red")
)
)
bar.overlap(line)
# 调整图层渲染顺序不然折线图被柱形图遮挡
bar.options["series"][1]["z"] = 1 # 折线图层
bar.options["series"][0]["z"] = 0 # 柱状图层
return bar
以上的文章内容来源于张彦存老师的专栏,如果您想阅读专栏《Python 数据可视化 18 讲(PyEcharts、Matplotlib、Seaborn)》,点击下方链接
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在互联网运营、产品优化、用户增长等领域,次日留存率是衡量产品价值、用户粘性与运营效果的核心指标,更是判断新用户是否认可产 ...
2026-05-09相关性分析是数据分析领域中用于探究两个或多个变量之间关联强度与方向的核心方法,广泛应用于科研探索、商业决策、医疗研究、社 ...
2026-05-09 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-05-09在数据驱动运营的时代,指标是连接业务目标与实际行动的核心桥梁,是企业解读业务现状、发现问题、预判趋势的“量化标尺”。一套 ...
2026-05-08在存量竞争日趋激烈的商业时代,“以客户为中心”早已从口号落地为企业运营的核心逻辑。而客户画像作为打通“了解客户”与“服务 ...
2026-05-08 很多数据分析师每天与Excel打交道,但当被问到“什么是表格结构数据”“它和表结构数据有什么区别”“表格结构数据有哪些核 ...
2026-05-08在数据分析、计量研究等场景中,回归分析是探究变量间量化关系的核心方法,无论是简单的一元线性回归,还是复杂的多元线性回归、 ...
2026-05-07在数据分析、计量研究等场景中,回归分析是探究变量间量化关系的核心方法,无论是简单的一元线性回归,还是复杂的多元线性回归、 ...
2026-05-07 很多数据分析师画过趋势图、做过业绩预测,但当被问到“这个月销售额增长20%,到底是长期趋势自然增长,还是促销活动的短期 ...
2026-05-07在数字化时代,商业竞争的核心已从“经验驱动”转向“数据驱动”,越来越多的企业意识到,商业分析不是简单的数据统计与报表呈现 ...
2026-05-06在Excel数据透视表的实操中,“引用”是连接透视表与公式、辅助数据的核心操作,而相对引用作为最基础、最常用的引用方式,其设 ...
2026-05-06 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-05-06在Excel数据分析中,数据透视表是汇总、整理海量数据的高效工具,而公式则是实现数据二次计算、逻辑判断的核心功能。实际操作中 ...
2026-04-30Excel透视图是数据分析中不可或缺的工具,它能将透视表中的数据快速可视化,帮助我们直观捕捉数据规律、呈现分析结果。但在实际 ...
2026-04-30 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-04-30在中介效应分析中,人口统计学变量(如年龄、性别、学历、收入、职业等)是常见的控制变量或调节变量,其处理方式直接影响分析结 ...
2026-04-29在SQL数据库实操中,日期数据的存储与显示是高频需求,而“数字日期”(如20240520、20241231、45321)是很多开发者、数据分析师 ...
2026-04-29 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-04-29在手游行业竞争日趋白热化的当下,“流量为王”早已升级为“留存为王”,而付费用户留存率更是衡量一款手游盈利能力、运营质量的 ...
2026-04-28在日常MySQL数据库运维与开发中,经常会遇到“同一台服务器上,两个不同数据库(以下简称“源库”“目标库”)的表数据需要保持 ...
2026-04-28