基于Python如何实现帕累托图
更新时间:2023-11-12
<前言>
帕累托图是一种用于显示成本、效益和原因的图表,也被称为二八定律。基于这个定律,有时我们需要展示 20% 的事物占据了 80% 的影响力。这样的分布在很多领域中都有着应用,例如财务分析、社交媒体分析、供应链管理等。
Python 作为一种流行的编程语言,可用于制作各种类型的图表,包括帕累托图。在本文中,我们将讨论如何使用 Python 设计和绘制帕累托图,覆盖从数据准备到可视化输出的各种步骤。
1.导入依赖项和数据准备
首先,我们需要导入一些 Python 包,这些包将帮助我们绘制帕累托图。其中最重要的是 Matplotlib 和 Pandas。Matplotlib 是一个广泛使用的 Python 数据可视化库,Pandas 是一个专门用于数据处理和分析的库。import pandas as pd import matplotlib.pyplot as plt # 创建数据框 data = { 'Items': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], 'Costs': [20, 25, 10, 15, 5, 30, 40, 50, 35, 45], 'Benefits': [100, 80, 70, 60, 50, 40, 30, 20, 10, 5] } df = pd.DataFrame(data)此处我们以虚拟数据为例演示帕累托图的制作过程。数据包含了项目名称、成本和收益等字段。接下来我们需要计算累计成本和累计收益。
2.计算和排序数据
在帕累托图中,我们需要计算累计成本和累计收益,以对项目进行排名。这可以通过 Pandas 库的 cumsum() 和 sort_values() 方法实现。# 计算成本百分比和收益百分比 df['CostsPct'] = df['Costs'].cumsum() / df['Costs'].sum() * 100 df['BenefitsPct'] = df['Benefits'].cumsum() / df['Benefits'].sum() * 100 # 根据成本百分比降序排列 df = df.sort_values('CostsPct', ascending=False)在这个示例中,我们创建了两个新的列:成本百分比和收益百分比。然后,我们使用 sort_values() 方法按照成本百分比进行排列。
3.绘制帕累托图
现在,我们已经准备好绘制帕累托图了。我们将使用 Matplotlib 库的 bar() 和 plot() 方法。bar() 方法用于绘制柱状图,plot() 方法用于绘制折线图。我们还将添加标签、颜色和图例等元素。fig, ax = plt.subplots() # 绘制成本柱状图 ax.bar(df['Items'], df['Costs'], color='tab:red') # 添加收益折线图 ax2 = ax.twinx() ax2.plot(df['Items'], df['BenefitsPct'], color='tab:blue', marker='D', ms=7) # 添加标签 ax.set_xlabel('Items', fontsize=12) ax.set_ylabel('Costs', color='tab:red', fontsize=12) ax2.set_ylabel('Benefits (%)', color='tab:blue', fontsize=12) # 修改刻度 ax.tick_params(axis='y', labelcolor='tab:red') ax2.tick_params(axis='y', labelcolor='tab:blue') # 添加图例 ax.legend(['Costs'], loc='upper left') ax2.legend(['Benefits'], loc='upper right') # 调整布局并展示图像 plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1) plt.show()在这个示例中,我们使用 ax.twinx() 方法添加了双 y 轴。我们还使用了 Marker 和 Label 等参数来自定义折线图的样式。最后,我们调用了 legend() 方法来添加图例。