快学数据挖掘—数据探索—贡献度分析

贡献度分析


贡献度分析又称帕累托分析,它的原理是帕累托法则又称20/80定律。同样的投入放在不同的地方会产生不同的效益。例如,对一个公司来讲,80%的利润常常来自于20%最畅销的产品,而其他80%的产品只产生了20%的利润。

帕累托图


帕累托图又叫排列图、主次图,是按照发生频率大小顺序绘制的直方图,表示有多少结果是由已确认类型或范畴的原因所造成。它是将出现的质量问题和质量改进项目按照重要程度依次排列而采用的一种图表。可以用来分析质量问题,确定产生质量问题的主要因素。按等级排序的目的是指导如何采取纠正措施:项目班子应首先采取措施纠正造成最多数量缺陷的问题。从概念上说,帕累托图与帕累托法则一脉相承,该法则认为相对来说数量较少的原因往往造成绝大多数的问题或缺陷

排列图用双直角坐标系表示,左边纵坐标表示频数,右边纵坐标表示频率.分析线表示累积频率,横坐标表示影响质量的各项因素,按影响程度的大小(即出现频数多少)从左到右排列,通过对排列图的观察分析可以抓住影响质量的主要因素.

帕累托法则往往称为二八原理,即百分之八十的问题是百分之二十的原因所造成的。帕累托图在项目管理中主要用来找出产生大多数问题的关键原因,用来解决大多数问题。

SPSS帕累托图


catering_dish_profit.xls

数据集下载地址

菜品ID 菜品名 盈利
17148 A1 9173
17154 A2 5729
109 A3 4811
117 A4 3594
17151 A5 3195
14 A6 3026
2868 A7 2378
397 A8 1970
88 A9 1877
426 A10 1782

帕累托图就餐饮企业来讲,应用贡献度分析可以重点改善某菜系盈利最高的前80%的菜品,或者重点发展综合影响最高的80%的部门。这种结果可以通过帕累托图直观地呈现出来。上图是海鲜系列的十个菜品A1~A10某个月的盈利额(已按照从大到小排序)。

img

img

img

img

img

分析结果

由上图可知,菜品A1~A7共7个菜品,占菜品种类数的70%,总盈利额约占该月盈利额的85%。根据帕累托法则,应该增加对菜品A1~A7的成本投入,减少对菜品A8~A10的投入以获得更高的盈利额。

Python程序


#coding: utf-8
# dish_pareto.py

import matplotlib.pyplot as plt
from numpy import nan as NA
import pandas as pd

plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

# 读取数据源
xlsFilename = "catering_dish_profit.xls"
#df = pd.read_excel(xlsFilename, index_col='菜品名')
df = pd.read_excel(xlsFilename)

#---------------------------------------------------------------------
# 绘制帕累托图
#plt.figure()

# 绘制直方图
df1 = df.loc[:,['菜品名', '盈利']]
df1 = df1.sort_values('盈利', ascending = False)
df1 = df1.set_index('菜品名')
df1.plot(kind='bar')

# 绘制线段
# sum()是计算样本的总和;cumsum()是依次给出前1,2,3.。。n个数的和
df3 = 1.0 * df1['盈利'].cumsum() / df1['盈利'].sum()
df3.plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2)

# 绘制标注
df3 = df3.reset_index(drop=True)
df4 = df3[df3>=0.8][0:1]
pointX = df4.index[0]
pointY = df4[pointX]
plt.annotate(format(pointY, '.2%'), xy = (pointX, pointY), xytext=(pointX*0.9, pointY*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) #添加注释,即85%处的标记。这里包括了指定箭头样式。

# 设置标签
plt.ylabel('盈利(元)')
plt.ylabel('盈利(比例)')

plt.show()


img

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值