關於Python數據分析進行整理柱狀圖加百分比

問題分析

Python數據分析作爲現在時興的技術,有着以下幾種優勢:
1、面嚮對象語言。(相對於面向過程的語言擁有可維護性、可讀性)
2、強大的標準庫,代碼量極少。
3、海量第三方模塊

在這裏我們使用Python數據分析來完成產品貢獻度分析的工作,作爲柱狀圖和百分比的分析圖表也具有更直觀的分析體驗。對於數據可視化的應用也有着重要的意義。
貢獻度分析也稱爲帕累託分析,其原理簡單來說就是20/80定律,即爲80%的利潤常常來自於20%的產品,那麼爲了能夠更好的推廣產品,加大力度進行投入資金、重點宣傳對於企業來說可以帶來更大的收入。那麼,我們在實際應用中應該如何進行分析、找到這20%的產品並且用圖表進行顯示就成爲了企業更關注的問題。

解決方案

首先我們瞭解一個公式:
累計貢獻率(%)=(累加銷售收入/銷售總收入)×100%
通過上面的公式,累計貢獻率在接近80%的時候,找到該產品在圖標中相應的位置進行標註。
(註明:我們說的80/20法則只能說是一個比喻和實用的標準,真正的比例不一定正好是80%:20%,80/20法則表明在多數情況下該關係很可能是不平衡的,並且接近80/20。)

在Python的Matplotlib圖表中提供了一個方法:annotate()方法,這種方法常常用於給圖標上的數據添加文本標註,並且支持帶箭頭的劃線工具,方便我們在合適的位置添加描述信息。常用的參數如下:

s:標註文本的內容
xy:設置箭頭尖的座標(傳入一個元組)
xytest:設置標註內容顯示的起始位置(傳入一個元組)
arrowprops:用來設置箭頭的樣式
facecolor:設置箭頭的顏色
headlength:箭頭頭部的長度
headwidth:箭頭頭部的寬度
width:箭頭的寬度

下面是代碼:

import pandas as pd
import matplotlib.pyplot as plt
aa = 'r./data/data1.xls'
df = pd.DataFrame(pd.read_excel(aa))
# 分組統計排序
# 通過reset_index()函數將groupby()的分組結果重新設置索引
df1 = df.groupby(["圖書編號"])[買家實際支付金額].sum().reset_index()
df1 = df1.set_index('圖書編號')	# 設置索引
df1 = df1[u'買家實際支付金額'].copy()
df2 = df1.sort_values(ascending = False)
# 圖表字體爲華文細黑,字號10
plt.rc('font', family = 'SimHei', size = 10)
plt.figure('貢獻度分析')
df2.plot(kind = 'bar')
plt.ylabel(u'銷售收入(元)')
p = 1.0*df2.cumsum() / df2.sum()
print(p)
p.plot(color = 'r', secondary_y = True, style = '-o', linewidth = 0.5)
plt.annotate(format(p[9],'.4%'), xy = (9,p[9]), xytext = (9*0.9, p[9]*0.9),
	    # 添加標記,並且指定箭頭樣式
	    arrowprops = dict(arrowstyle = "->",connectionstyle = "arc3,rad = .1"))
plt.ylabel(u'收入(比例)')
plt.show()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章