前几天博主有个Python信息数据可视化的需求,但是博主学python是用来玩网络爬虫的。对于python信息数据可视化类库,也只是熟悉pyecharts。因此,便只能现学现卖直播作mai图yi。在参考着资料学习后,成功的用matplotlib完成了第一幅柱状图。
准备工作
1.python类库:matplotlib库(作图)
2.python类库:xlrd库(导入读取excel文件)
3.数据信息源文件:51plt.xlsx
思路分析
1.首先观察数据信息excel源文件,明确信息目标。因为我们的目标是制作“职位数按城市分布情况”的柱状图,所以需要提取的列项是“city”。
2.要想实现制作“职位数按城市分布情况”的柱状图的小目标,我们首先需要知道各个城市的职位数。这个表格是整合后的数据表格,里面共计10+1个城市项,因此可以通过统计city这一列的数量来完成。
按照我的想法,可以通过键值对的形式存储数据(城市名称:城市数量)到列表中,再分别一一对应提取到一个新的列表用于制图。
3.制图问题。这个没什么好说的,主要就是通过matplotlib.pyplot类库进行制图。但是因为导入的excel表格信息数据中具有中文字段,因此需要添加以下两行代码解决中文乱码和负号问题。
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码问题,用于正常显示中文标签(用黑体显示中文)
plt.rcParams['axes.unicode_minus'] = False # 用于正常显示负号为方块
代码实现
1.导入excel表格文件。根据我手边资料查阅的结果来看,导入excel表格文件的方法很多,但是又很混乱。而且因为版本的迭代问题,有些类库的方法已经无法使用。最后我使用xlrd库,能够正常导入excel表格数据。具体代码模块如下:
import xlrd
xlsxfile = r"51plot.xlsx"
infors = xlrd.open_workbook(xlsxfile) # 打开excel文件,创建一个workbook对象
infors.sheets() # sheets方法返回对象列表
rsheet = infors.sheet_by_index(0) # 取第一个工作簿
2.在打开excel文件后,使用row[].value方法便能够提取其中的列项了。row[]数组里面的索引从0开始,观察excel表格,可发现city的索引序号是5。因此我们提取除了第一行“city”外的全部城市项放入列表中。
citys = [] # 创建一个空列表citys[]
for row in rsheet.get_rows():
city_column = row[5] # 城市所在的列
city_infor = city_column.value # 项目名
if city_infor != 'city':