
以下的文章内容来源于张彦存老师的专栏,如果您想阅读专栏《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
AI 浪潮下的生存与进阶: CDA数据分析师—开启新时代职业生涯的钥匙(深度研究报告、发展指导白皮书) 发布机构:CDA数据科 ...
2025-07-13LSTM 模型输入长度选择技巧:提升序列建模效能的关键 在循环神经网络(RNN)家族中,长短期记忆网络(LSTM)凭借其解决长序列 ...
2025-07-11CDA 数据分析师报考条件详解与准备指南 在数据驱动决策的时代浪潮下,CDA 数据分析师认证愈发受到瞩目,成为众多有志投身数 ...
2025-07-11数据透视表中两列相乘合计的实用指南 在数据分析的日常工作中,数据透视表凭借其强大的数据汇总和分析功能,成为了 Excel 用户 ...
2025-07-11尊敬的考生: 您好! 我们诚挚通知您,CDA Level I和 Level II考试大纲将于 2025年7月25日 实施重大更新。 此次更新旨在确保认 ...
2025-07-10BI 大数据分析师:连接数据与业务的价值转化者 在大数据与商业智能(Business Intelligence,简称 BI)深度融合的时代,BI ...
2025-07-10SQL 在预测分析中的应用:从数据查询到趋势预判 在数据驱动决策的时代,预测分析作为挖掘数据潜在价值的核心手段,正被广泛 ...
2025-07-10数据查询结束后:分析师的收尾工作与价值深化 在数据分析的全流程中,“query end”(查询结束)并非工作的终点,而是将数 ...
2025-07-10CDA 数据分析师考试:从报考到取证的全攻略 在数字经济蓬勃发展的今天,数据分析师已成为各行业争抢的核心人才,而 CDA(Certi ...
2025-07-09【CDA干货】单样本趋势性检验:捕捉数据背后的时间轨迹 在数据分析的版图中,单样本趋势性检验如同一位耐心的侦探,专注于从单 ...
2025-07-09year_month数据类型:时间维度的精准切片 在数据的世界里,时间是最不可或缺的维度之一,而year_month数据类型就像一把精准 ...
2025-07-09CDA 备考干货:Python 在数据分析中的核心应用与实战技巧 在 CDA 数据分析师认证考试中,Python 作为数据处理与分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 检验:数据趋势与突变分析的有力工具 在数据分析的广袤领域中,准确捕捉数据的趋势变化以及识别 ...
2025-07-08备战 CDA 数据分析师考试:需要多久?如何规划? CDA(Certified Data Analyst)数据分析师认证作为国内权威的数据分析能力认证 ...
2025-07-08LSTM 输出不确定的成因、影响与应对策略 长短期记忆网络(LSTM)作为循环神经网络(RNN)的一种变体,凭借独特的门控机制,在 ...
2025-07-07统计学方法在市场调研数据中的深度应用 市场调研是企业洞察市场动态、了解消费者需求的重要途径,而统计学方法则是市场调研数 ...
2025-07-07CDA数据分析师证书考试全攻略 在数字化浪潮席卷全球的当下,数据已成为企业决策、行业发展的核心驱动力,数据分析师也因此成为 ...
2025-07-07剖析 CDA 数据分析师考试题型:解锁高效备考与答题策略 CDA(Certified Data Analyst)数据分析师考试作为衡量数据专业能力的 ...
2025-07-04SQL Server 字符串截取转日期:解锁数据处理的关键技能 在数据处理与分析工作中,数据格式的规范性是保证后续分析准确性的基础 ...
2025-07-04CDA 数据分析师视角:从数据迷雾中探寻商业真相 在数字化浪潮席卷全球的今天,数据已成为企业决策的核心驱动力,CDA(Certifie ...
2025-07-04