以下的文章内容来源于张彦存老师的专栏,如果您想阅读专栏《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)》,点击下方链接
以下的文章内容来源于张彦存老师的专栏,如果您想阅读专栏《Python 数据可视化 18 讲(PyEcharts、Matplotlib、Seaborn)》,点 ...
2025-02-28最近,国产AI模型DeepSeek爆火,其创始人梁文峰走进大众视野。《黑神话:悟空》制作人冯骥盛赞DeepSeek为“国运级别的科技成果” ...
2025-02-271.统计学简介 听说你已经被统计学劝退,被Python唬住……先别着急划走,看完这篇再说! 先说结论,大多数情况下的学不会都不是知 ...
2025-02-27“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩稳定, ...
2025-02-26在数据分析工作中,你可能经常遇到这样的问题: 从浏览到消费的转化率一直很低,那到底该优化哪里呢? 如果你要投放广告该怎么 ...
2025-02-25近来deepseek爆火,看看deepseek能否帮我们快速实现数据看板实时更新。 可以看出这对不知道怎么动手的小白来说是相当友好的,尤 ...
2025-02-25挖掘用户价值本质是让企业从‘赚今天的钱’升级为‘赚未来的钱’,同时让用户从‘被推销’变为‘被满足’。询问deepseek关于挖 ...
2025-02-25在当今这个数据驱动的时代,几乎每一个业务决策都离不开对数据的深入分析。而其中,指标波动归因分析更是至关重要的一环。无论是 ...
2025-02-25以下文章来源于数有道 ,作者数据星爷 SQL查询是数据分析工作的基础,也是CDA数据分析师一级的核心考点,人工智能时代,AI能为 ...
2025-02-25“最近复购率一直在下降,我们的营销力度不小啊,为什么用户还是走了?” “是不是广告投放的用户质量不高?还是我们的产品问题 ...
2025-02-25在数据分析中,地图是一种非常直观的可视化工具,能够帮助我们更好地理解数据在地理空间上的分布情况。无论是展示销售数据、人口 ...
2025-02-25春风拂面,金三银四的求职季如期而至。谁都想在这场竞争里拿下心仪offer。 一份亮眼简历是求职敲门砖,面试紧张则可能让机会溜 ...
2025-02-24当数据开始说谎:那些年我们交过的学费 你有没有经历过这样的场景?熬了三个通宵做的数据分析报告,在会议上被老板一句"这数据靠 ...
2025-02-17数据分析作为一门跨学科领域,融合了统计学、编程、业务理解和可视化技术。无论是初学者还是有一定经验的从业者,系统化的学习路 ...
2025-02-17一秒精通 Deepseek,不用找教程,不用买资料,更不用报一堆垃圾课程,所有这么去做的,都是舍近求远,因为你忽略了 deepseek 的 ...
2025-02-12自学 Python 的关键在于高效规划 + 实践驱动。以下是一份适合零基础快速入门的自学路径,结合资源推荐和实用技巧: 一、快速入 ...
2025-02-12“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩 ...
2025-02-08活动介绍 为了助力大家在数据分析领域不断精进技能,我们特别举办本期打卡活动。在这里,你可以充分利用碎片化时间在线学习,让 ...
2025-02-071、闺女,醒醒,媒人把相亲的带来了。 我。。。。。。。 2、前年春节相亲相了40个, 去年春节相亲50个, 祖宗,今年你想相多少个 ...
2025-02-06在数据科学的广阔领域中,统计分析与数据挖掘占据了重要位置。尽管它们常常被视为有关联的领域,但两者在理论基础、目标、方法及 ...
2025-02-05