2025年3月6日 星期四 甲辰(龙)年 月初五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python爬虫:全国大学招生信息(二):生源数据分析(matplotlib)

时间:08-23来源:作者:点击数:33

在上一篇文章(https://www.cdsy.xyz/computer/programme/Python/230823/cd45618.html)中爬取了6W+条json数据,接下来通过2D可视化来分析这些数据。需要使用的是matplotlib模块。

之前我们获取了一个大学名字对应url的txt,通过大学名字去6w条数据中检索同一学校的各地区招生数进行统计

先随便拿一条数据观察一下

data列表是我们要关心的数据,上图中表示有13个专业的数据

plan则是招生人数

代码:

  • import json
  • import matplotlib.pyplot as plot
  • f=open('D:/PyGaokaopai/majorinfo.txt','r',encoding='utf-8')
  • datastr=f.read()
  • dataList = []
  • #获取6w+条json数据转化为字典
  • for str in datastr.split('\n'):
  • data = json.loads(str)
  • dataList.append(data)
  • area = {'黑龙江':'东北','吉林':'东北','辽宁':'东北','上海':'华东','江苏':'华东','浙江':'华东','安徽':'华东','福建':'华东','江西':'华东','山东':'华东','北京':'华北'
  • , '天津': '华北','山西':'华北','河北':'华北','内蒙古':'华北','河南':'华中','湖北':'华中','湖南':'华中','广东':'华南','广西':'华南','海南':'华南','重庆':'西南'
  • , '四川': '西南','贵州':'西南','云南':'西南','西藏':'西南','陕西':'西北','甘肃':'西北','青海':'西北','宁夏':'西北','新疆':'西北'}
  • #获取3054个学校名字
  • def getSchoolNameList():
  • f1 = open('schoolurl.txt', 'r', encoding='utf-8')
  • schoolName = []
  • while True:
  • try:
  • line = f1.readline()
  • name = line.split(',')[0]
  • schoolName.append(name)
  • except Exception as e:
  • pass
  • if (not line):
  • break
  • f1.close()
  • return schoolName
  • #画图并保存
  • def saveImg(school,areanum):
  • labels = areanum.keys()
  • values = areanum.values()
  • fig = plot.figure()
  • plot.rcParams['font.sans-serif']=['SimHei']
  • p = plot.pie(values,labels=labels,autopct='%1.2f%%', startangle=90,pctdistance=0.6,labeldistance=1.1)
  • plot.title(school)
  • plot.savefig('D:/PyGaokaopai/img/{}.png'.format(school))
  • fig.tight_layout()
  • schoolList = getSchoolNameList()
  • for school in schoolList:
  • areanum = {'东北': 0, '华东': 0, '华北': 0, '华中': 0, '华南': 0, '西南': 0, '西北': 0}
  • for data in dataList:
  • if data['data'][0]['school'] == school:
  • for dic in data['data']:
  • areanum[area[dic['city']]]+=int(dic['plan'])
  • saveImg(school,areanum)

注意在画图时的这两行代码,用于自动调整图区的大小以及间距,使所有的绘图及其标题、坐标轴标签等都可以不重叠的完整显示在画布上。不然会导致画多张图是字体重叠,第二张图上会有第一张图的信息!!

  • fig = plot.figure()
  • #...
  • fig.tight_layout()

最后是一共3054张图

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门