溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于Python如何實現(xiàn)帕累托圖

發(fā)布時間:2023-03-11 13:52:52 來源:億速云 閱讀:148 作者:iii 欄目:開發(fā)技術(shù)

這篇“基于Python如何實現(xiàn)帕累托圖”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“基于Python如何實現(xiàn)帕累托圖”文章吧。

1.定義

帕累托圖:是一種特殊的直方圖, 在項目管理知識體系中屬于質(zhì)量管理的工具。 它可以幫助觀眾了解哪些因素對結(jié)果影響最大。它基于帕累托原則,即 80% 的結(jié)果來自 20% 的原因。該圖表有助于以圖形方式顯示此原理。

基于Python如何實現(xiàn)帕累托圖

2.帕累托原理

該原則也被稱為80/20 規(guī)則、關(guān)鍵少數(shù)法則因子稀疏原則。約瑟夫·朱蘭 (Joseph Juran)于 1937 年公布了這個概念,并以著名經(jīng)濟(jì)學(xué)家維爾弗雷多·帕累托的名字命名,他在 19 世紀(jì)后期首次記錄了這種現(xiàn)象。

從本質(zhì)上講,帕累托指出,在許多地方,80/20 的分布很普遍,幾乎存在于我們生活的各個方面。他最初的觀察是關(guān)于人口和財富。他發(fā)現(xiàn),意大利 80% 的土地歸 20% 的人口所有。對其他國家的調(diào)查顯示了類似的分布模式。

這種財富分配目前仍然成立。1992 年聯(lián)合國開發(fā)計劃署發(fā)布的一份報告顯示,世界 20% 的人口創(chuàng)造了世界人口收入的 80% 左右。這種極其不平等的分配存在于稅收、收入以及幾乎所有其他生活領(lǐng)域。

體育:15% 的棒球運動員創(chuàng)造了 85% 的勝利,從理論上講,這適用于所有體育項目。還有人說,20% 的訓(xùn)練方法產(chǎn)生了 80% 的收益。

計算:微軟發(fā)現(xiàn),修復(fù) 20% 最常報告的錯誤可以解決 80% 的錯誤和崩潰。這是 20% 的代碼持有 80% 的錯誤。相反,最棘手的 20% 的編碼需要開發(fā)人員 80% 的時間。

安全:職業(yè)健康與安全專業(yè)人員承認(rèn),20% 的危險導(dǎo)致 80% 的傷害。

健康和社會福利:20% 的患者使用 80% 的資源。80% 的犯罪是由 20% 的罪犯犯下的。這份清單涵蓋了所有人類屬性。

3.帕累托原則如何應(yīng)用于商業(yè)

正如 80/20 規(guī)則適用于非商業(yè)領(lǐng)域的幾乎所有場景一樣,它也適用于商業(yè)環(huán)境。80% 的銷售額來自于 20% 的銷售人員。20% 的銷售和營銷活動帶來了 80% 的業(yè)績。在工廠中,80% 的缺陷是由 20% 的流程造成的。 80% 的投訴是由于 20% 的流程造成的。從本質(zhì)上講,幾乎商業(yè)所有方面都反映了這一規(guī)則,而擁有顯示數(shù)字的圖表有助于組織識別和解決問題。

基本上,如果知道 20% 的東西會產(chǎn)生最積極的結(jié)果,就可以向其中投入更多的資源,而不是把時間、精力和金錢浪費在對組織沒有幫助的事情上。如果帕累托圖顯示 80% 的業(yè)務(wù)來自 Facebook 廣告,您就知道應(yīng)該把精力集中在哪里。

4.什么時候應(yīng)該使用帕累托圖

帕累托圖在以下情況下是理想的選擇:

  • 您需要輕松地將重要問題傳達(dá)給利益相關(guān)者

  • 需要確定任務(wù)的優(yōu)先級

帕累托圖需要具有可以用持續(xù)時間、成本或頻率進(jìn)行衡量的數(shù)據(jù)。還需要有一個數(shù)據(jù)發(fā)生的時間范圍。數(shù)據(jù)的頻率在左軸上表示,問題或其他可測量值顯示在橫軸上,以條形表示。線形圖所表示的百分比曲線在右側(cè)有一個刻度。

為了更易于理解,可以用不同的顏色突出顯示 20% 的數(shù)據(jù),或者用標(biāo)簽來表明這是需要關(guān)注的業(yè)務(wù)領(lǐng)域。

5.帕累托圖與條形圖有何不同

和最開始一樣, 帕累托圖是一種特殊的直方圖(或稱條形圖)。對于帕累托圖,條形是按從高到低的順序顯示的。對于條形圖,并沒有強(qiáng)制性地從高到低排序。條形圖常常按字母順序排序,或者按某種其他邏輯順序排序。

如下圖,就是一個直方圖的案例。

基于Python如何實現(xiàn)帕累托圖

而對于帕累托圖, 應(yīng)該是這樣的:

基于Python如何實現(xiàn)帕累托圖

帕累托圖還可以添加一個積累頻數(shù)線條:

基于Python如何實現(xiàn)帕累托圖

6.帕累托圖的替代方案

盡管帕累托圖沒有真正的替代方案,但有一套七種基本的質(zhì)量控制工具,應(yīng)該一起使用,作為解決組織問題的整體方法的一部分:

  • 因果關(guān)系圖:找出問題的原因并將想法分為幾類

  • 檢查表:提供收集和分析數(shù)據(jù)的結(jié)構(gòu)化方法

  • 控制圖:研究過程如何隨時間變化

  • 直方圖:顯示頻率分布,例如一組數(shù)據(jù)中某個值出現(xiàn)的頻率

  • 帕累托圖:顯示因子的重要性

  • 散布圖:識別關(guān)系和模式

  • 分層:分離數(shù)據(jù)并確定模式

這些工具一起使用,構(gòu)成了確保組織質(zhì)量的基礎(chǔ)。

7.帕累托圖的好處

7.1 專注解決問題

如果在一條裝配線上有 100 種產(chǎn)品,存在一系列故障、缺陷和問題,那么組織如何知道首先要解決什么問題?帕累托圖會立即顯示最大的問題,從而顯示需要首先解決的過程或產(chǎn)品。如果一個故障部件導(dǎo)致了大部分問題,則可以很容易地確定修復(fù)的優(yōu)先級。

7.2 提供機(jī)會

雖然你可以看到缺陷和問題,但帕累托圖也可以用來識別優(yōu)勢。然后,你可以制定計劃加以利用。例如,你可以向頂級銷售人員或最佳分支機(jī)構(gòu)詢問他們的做法,進(jìn)行復(fù)制。或者,如果一個團(tuán)隊特別有效,他們的技術(shù)和方法可以在整個企業(yè)中復(fù)制。

7.3 增強(qiáng)決策能力

領(lǐng)導(dǎo)團(tuán)隊希望為自己的組織做出最佳選擇,但要了解什么會產(chǎn)生最大的影響可能很難。除了機(jī)器學(xué)習(xí)和人工智能之外,最有用的工具可能是帕累托圖??梢郧宄乜吹阶畲蟮暮锰幓騿栴}出現(xiàn)在哪里,意味著可以基于數(shù)據(jù)有效地做出有針對性的決策。

8.帕累托圖的缺點

8.1 沒有根本原因分析

雖然帕累托圖顯示了結(jié)果,但沒有明確的方法可以看到數(shù)據(jù)背后的原因。例如,如果一家公司的特定分支機(jī)構(gòu)表現(xiàn)良好,在圖表中就無法輕易了解為什么會出現(xiàn)這種情況。

解決方案:分析和數(shù)據(jù)完成后,需要進(jìn)行全面調(diào)查,以顯示這些結(jié)果是如何發(fā)生的。為什么分支機(jī)構(gòu)表現(xiàn)良好?為什么工廠在制造產(chǎn)品時總會弄壞某個零件?

8.2 沒有定量數(shù)據(jù)

帕累托圖純粹是定性的。沒有跡象表明缺陷或問題的嚴(yán)重性。發(fā)現(xiàn)這些信息需要對問題進(jìn)行徹底的調(diào)查和分析。

8.3 僅顯示過去的數(shù)據(jù)

帕累托圖僅顯示過去的數(shù)據(jù)。損害或問題已經(jīng)發(fā)生且無法更改。此外,無法真正預(yù)測基于這些數(shù)據(jù)所做的更改是否會產(chǎn)生所需的積極結(jié)果。例如,使用機(jī)器學(xué)習(xí)也有助于進(jìn)行預(yù)測;如果你更改了 X,那么 Y 也會受到影響。

9.如何用Python創(chuàng)建帕累托圖

9.1 數(shù)據(jù)源

下面這個代碼是使用Excel作為數(shù)據(jù)文件,文件名為:data.xlsx

數(shù)據(jù)文件的內(nèi)容如下:放在第一個工作表的第一個A1單元格開始即可。

categoryvalue
工資待遇與福利水平較差90
公司發(fā)展前景與預(yù)期落差大40
激勵機(jī)制較差38
晉升機(jī)會少35
當(dāng)前職業(yè)無法發(fā)揮個人專長30
工作壓力較大28
工作缺少成就感26
上級處事方式較差25
工作氛圍較差16
公司地理位置不便13
職業(yè)發(fā)展方向變化12
個人創(chuàng)業(yè)或繼續(xù)求學(xué)深造11
其它10
個人家庭原因9
個人身體原因5

9.2 源代碼

# 用于命名和保存圖片文件
import os
from datetime import datetime


import matplotlib.font_manager as fm  # 管理字體工具
import matplotlib.pyplot as plt  # 繪圖包
import pandas as pd # 讀取Excel數(shù)據(jù)

# 設(shè)置字體
font_path = 'C:/Windows/Fonts/simhei.ttf'  # 字體文件路徑
font_prop = fm.FontProperties(fname=font_path, size=12)  # 字體屬性
plt.rcParams['font.family'] = font_prop.get_name()

# 讀取Excel數(shù)據(jù)
df = pd.read_excel('data.xlsx')

# 建立數(shù)據(jù)category和標(biāo)識符的對應(yīng)關(guān)系
category_dict = {}
for i, category in enumerate(df['category'].unique()):
    category_dict[category] = chr(65 + i)
    df['category'] = df['category'].replace(category, chr(65 + i))

# 按照數(shù)量降序排列
df = df.sort_values(by='value', ascending=False)

# 計算累計百分比
df['cumulative_percentage'] = df['value'].cumsum() / df['value'].sum() * 100

# 繪制帕累托圖
fig, ax1 = plt.subplots(figsize=(8, 10))

# 判斷是否有小于80%的數(shù)據(jù)
if df['cumulative_percentage'].min() < 80:
    # 將小于80%的數(shù)據(jù)用紅色柱子表示
    ax1.bar(df[df['cumulative_percentage'] < 80].index, df[df['cumulative_percentage'] < 80]['value'], color='tab:red')
else:
    # 將第一個柱子設(shè)為紅色背景
    ax1.bar(df.index[0], df['value'][0], color='tab:red')

# 繪制其余柱子
bar_heights = ax1.bar(df.index, df['value'], color='tab:blue', alpha=0.5)
ax1.set_ylabel('數(shù)量', fontproperties=font_prop)

# 在每個柱子上方添加具體的值
for i, bar_height in enumerate(bar_heights):
    ax1.text(i, bar_height.get_height() + 0.5, str(int(bar_height.get_height())), ha='center', fontproperties=font_prop)

ax2 = ax1.twinx()
ax2.plot(df.index, df['cumulative_percentage'], color='tab:red', marker='o')
ax2.set_ylim([0, 100])
ax2.set_ylabel('累計百分比', fontproperties=font_prop)

plt.xticks(df.index, df['category'], rotation=90, fontproperties=font_prop)
plt.title('帕累托圖', fontproperties=font_prop)

# 添加A-Z和category的對應(yīng)關(guān)系
ax1.set_xticks(df.index)
ax1.set_xticklabels(df['category'], rotation=90, fontproperties=font_prop)
ax1.tick_params(axis='x', which='major', pad=15)
ax1.spines['bottom'].set_position(('axes', -0.00))
ax1.spines['bottom'].set_linewidth(0)
ax1.spines['bottom'].set_color('gray')
ax1.spines['bottom'].set_visible(True)

for i, (category, abbr) in enumerate(category_dict.items()):
    ax1.text(-1, -4 * i - 10, f'{abbr}: {category}', transform=ax1.transData, ha='left', fontproperties=font_prop,
             va='top')

# 調(diào)整子圖之間的間距和邊距
plt.subplots_adjust(bottom=0.4)

# 保存圖片
now = datetime.now().strftime('%Y%m%d%H%M%S')
filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), f'pareto_{now}.png')
plt.savefig(filename)

plt.show()

9.3 輸出結(jié)果

基于Python如何實現(xiàn)帕累托圖

以上就是關(guān)于“基于Python如何實現(xiàn)帕累托圖”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI