Python資料字典處理Excel,並統計總數,畫出餅圖
阿新 • • 發佈:2019-01-05
之前給大家分享了使用pyechats庫畫折線圖和柱狀圖,也是讀取Excel表格中資料來畫圖的,這裡我使用的是Python3;現在給大家分享使用matplotlib畫圖,也是讀取本地Excel表格中的資料來畫圖,但是這個我們採用資料字典,可以統計Excel中的資料。而且今天分享的這個方法很實用,有很大的擴充套件性。很多畫圖的方法都可以採用這個程式碼;
現在也是給大家逐一講解,這有利於大家理解和學習,可以更好的學習Python,後面會附上完整的程式碼執行結果截圖,首先我們需要匯入讀取Excel的庫xrld,和畫圖的庫matplotlib。安裝方法我就不多說了,這些庫和之前安裝庫的方法基本是一樣的。
匯入所需的庫,如下:
import xlrd
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from pylab import *
from datetime import date,datetime
開啟本地Excel表格,並讀取相應的列和行:
# 開啟檔案 workbook = xlrd.open_workbook(r'C:\Users\ASUS\Desktop\txt1\python3\yxz22.xlsx') # 獲取所有sheet #print(workbook.sheet_names()) # [u'sheet1', u'sheet2'] # 根據sheet索引或者名稱獲取sheet內容 sheet1 = workbook.sheet_by_index(0) # sheet索引從0開始 # sheet的名稱,行數,列數 #print(sheet1.name,sheet1.nrows,sheet1.ncols) # 獲取整行和整列的值(陣列) rows = sheet1.row_values(0) cols4 = sheet1.col_values(4)# 獲取第四行內容 cols3 = sheet1.col_values(3) # 獲取第三列內容 cols2 = sheet1.col_values(2) cols1 = sheet1.col_values(1) cols0 = sheet1.col_values(0)
接下來就是採用資料字型統計Excel中表格中相同的物件資料,同時把它存入陣列a和陣列b中:
dic={}#採用資料字典統計文章型別數目
for item in cols0:
if item in dic.keys():
dic[item]+=1
else:
dic[item]=1
a=[]
b=[]
for key in dic:
a.append(key)
b.append(dic[key])
之後根據上面陣列a和陣列b中的值進行基本的數學計算,算出每種相同的資料型別在總的型別數量中所佔的比例,這裡所使用的的數學的基本演算法:
for u in b:
i=u/t
size.append(i)
plt.plot(size)
然後根據剛剛計算的結果匯入到畫圖的庫中,然後畫圖餅圖:
plt.pie(size,labels=label,colors="rgb",autopct='%1.lf%%',shadow=True,startangle=90)
以下就是完整的程式碼的:
import xlrd
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from pylab import *
from datetime import date,datetime
def read_excel():
# 開啟檔案
workbook = xlrd.open_workbook(r'C:\Users\ASUS\Desktop\txt1\python3\yxz22.xlsx')
# 獲取所有sheet
#print(workbook.sheet_names()) # [u'sheet1', u'sheet2']
# 根據sheet索引或者名稱獲取sheet內容
sheet1 = workbook.sheet_by_index(0) # sheet索引從0開始
# sheet的名稱,行數,列數
#print(sheet1.name,sheet1.nrows,sheet1.ncols)
# 獲取整行和整列的值(陣列)
rows = sheet1.row_values(0)
cols4 = sheet1.col_values(4)# 獲取第四行內容
cols3 = sheet1.col_values(3) # 獲取第三列內容
cols2 = sheet1.col_values(2)
cols1 = sheet1.col_values(1)
cols0 = sheet1.col_values(0)
dic={}#採用資料字典統計文章型別數目
for item in cols0:
if item in dic.keys():
dic[item]+=1
else:
dic[item]=1
a=[]
b=[]
for key in dic:
a.append(key)
b.append(dic[key])
plt.rcParams['font.sans-serif']=['SimHei']#正常顯示中文標籤
size=[]
t=sum(b)#統計總的發表篇幅
label=a
#計算每種型別所佔的比例
for u in b:
i=u/t
size.append(i)
plt.plot(size)
plt.title('文章型別比例圖')
plt.pie(size,labels=label,colors="rgb",autopct='%1.lf%%',shadow=True,startangle=90)
#plt.axis('equal')
plt.show()
if __name__ == '__main__':
read_excel()
下面就是結果截圖:
這個是我爬取某個部落格存入Excel中的資料,經過剛才的程式碼讀取,最終畫出來的餅圖;
好了,今天就分享到這裡了,如果有什麼疑問或者需求請給我留言,或許我能夠解決一二!