贡献度分析又称为帕累托分析。它的原理是帕累托法则,又称20/80定律。同样的投入在不同的地方会产生不同的效益。例如,对一个公司来讲,80%的利润常常来自于20%最畅销的产品,而其他80%的产品只产生了20%的利润
代码源于Python数据分析与挖掘实战
# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
dish_profit = '../data/catering_dish_profit.xls'
data = pd.read_excel(dish_profit, index_col=u'菜品名')
data = data[u'盈利'].copy() #data类型由DataFrame改变为Series
data.sort_values(ascending=False) #True表示升序
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure()
data.plot(kind='bar') #表示图形类型型为竖杆图
plt.ylabel(u'盈利(元)') #设置当前图形的y轴标签
p = 1.0 * data.cumsum()/data.sum() #cumsum()返回累积和,用于判断p是否满足帕累托法则
p.plot(color='r', secondary_y=True, style='-o', linewidth=2) #secondary_y等于True定义y轴将会在右侧
plt.annotate(format(p[6], '.4%'), xy=(6, p[6]), xytext=(6*0.9, p[6]*0.9), arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=.2')) #p[6]表示取p的第7点满足帕累托法则即大于80%,.4%表示百分数后有4个小数点,arrowprops用来设置箭头
plt.ylabel(u'盈利(比例)')
plt.show()