📜  如何创建帕累托图(1)

📅  最后修改于: 2023-12-03 14:52:08.456000             🧑  作者: Mango

如何创建帕累托图

帕累托图(Pareto Chart),又称帕累托分析,是一种条形图,用于展示不同类别在总体中的比例和累计占比,是管理学和六西格玛中常用的工具。本文将介绍如何使用 Python 中的 matplotlib 库创建帕累托图。

准备工作

在创建帕累托图之前,我们需要准备一个数据集,该数据集包含各个类别的数量或者百分比,并且需要对数据进行排序。

在本文中,我们将使用一个虚拟数据集,该数据集包含了某个公司客户各项服务的投诉数量:

import pandas as pd

data = {
    '服务': ['售前服务', '售后服务', '包装服务', '物流服务', '退款服务', '质量问题'],
    '投诉数量': [80, 50, 30, 20, 10, 5]
}

df = pd.DataFrame(data)
df = df.sort_values('投诉数量', ascending=False)
df['累计占比'] = df['投诉数量'].cumsum() / df['投诉数量'].sum()

以上代码创建了一个包含了六个类别和对应投诉数量的 DataFrame 对象,并进行了排序和累计占比的计算。

创建帕累托图

有了准备工作之后,我们就可以使用 matplotlib 库创建帕累托图了。

import matplotlib.pyplot as plt

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.bar(df['服务'], df['投诉数量'], color='g')
ax2.plot(df['服务'], df['累计占比'], 'ro-')

ax1.set_xlabel('服务')
ax1.set_ylabel('投诉数量', color='g')
ax2.set_ylabel('累计占比', color='r')
ax2.set_ylim([0,1])

plt.title('客户服务投诉情况帕累托图')
plt.show()

以上代码使用了 plt.subplots() 创建了两个图像,其中左边的图像使用了 ax1 对象,右边的图像使用了 ax2 对象。我们使用 bar() 方法在左边的图像中创建了条形图,并使用 plot() 方法在右边的图像中创建了累计占比折线图。最后,我们设置了一些图像的标签和标题,并使用 show() 方法将图像显示出来。

完整代码

准备工作和创建帕累托图的完整代码如下:

import pandas as pd
import matplotlib.pyplot as plt

data = {
    '服务': ['售前服务', '售后服务', '包装服务', '物流服务', '退款服务', '质量问题'],
    '投诉数量': [80, 50, 30, 20, 10, 5]
}

df = pd.DataFrame(data)
df = df.sort_values('投诉数量', ascending=False)
df['累计占比'] = df['投诉数量'].cumsum() / df['投诉数量'].sum()

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.bar(df['服务'], df['投诉数量'], color='g')
ax2.plot(df['服务'], df['累计占比'], 'ro-')

ax1.set_xlabel('服务')
ax1.set_ylabel('投诉数量', color='g')
ax2.set_ylabel('累计占比', color='r')
ax2.set_ylim([0,1])

plt.title('客户服务投诉情况帕累托图')
plt.show()
结语

本文介绍了如何在 Python 中使用 matplotlib 库创建帕累托图,为管理学和六西格玛中数据分析提供了一个重要工具。需要注意的是,数据的准备和排序对于创建帕累托图至关重要,同时要根据实际情况选择适当的参数和样式,才能得到更加有效和准确的分析结果。