之前给大家分享了使用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中的数据,经过刚才的代码读取,最终画出来的饼图;
好了,今天就分享到这里了,如果有什么疑问或者需求请给我留言,或许我能够解决一二!