中国大学MOOC课程信息之数据分析可视化二
版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82318571
- 写在前面
本篇博客继续对中国大学MOOC课程信息进行数据分析,主要是利用pyecharts针对MOOC上开课的大学信息的分析。
前两次博客内容:
1. 中国大学MOOC课程信息爬取与数据存储
2. 中国大学MOOC课程信息之数据分析可视化一
- 环境配置安装
运行环境:Python3.6、Spyder
依赖的模块:pyecharts以及一些地图模块
- 开始工作
1. 获取数据
首先从网上下载大学信息数据,我找了好久,也花费了不少积分,才找到比较不错的数据。下面是下载链接:最新全国高校数据库信息(包含2854所高校)。
接下来打开mysql,新建数据库univ_info,再将下载的MS EXCEL数据导入到该数据库中。
导入后的结果如下:
编写代码获取MOOC上的大学列表
'''获得MOOC上开课大学信息'''
universities=[]
for kc in kc_info[0]:
if kc[2] not in universities:
universities.append(kc[2])
便可以得到MOOC上已开课的大学名称的列表,我们可以根据这个查询数据库相应字段的数据,从而得到所需要的大学信息了。
这里值得注意的是先前得到的大学名称中含有“微软”、”爱课程“等非院校单位,在数据库查询时会出现空值,此时应将其去除掉。
def mysql_univ_info(univs):
results=[]
db = pymysql.connect(host='localhost',user='root',passwd='root',db='univ_info',charset='utf8')
cur = db.cursor()
for univ in univs:
cur.execute("select * from univ_info where 院校名称='%s'"% univ)
result=cur.fetchall()
if result!=():
result=result[0]
results.append(result)
return results
调用前面函数,便可以得到所需要的院校信息了。
2. 大学所在城市
由于数据库表中所在城市有些为空,观察可知其为直辖市,因此不妨用所在地区替代。
'''大学城市'''
univ_cities=[]
for univ_info in univ_infos:
if univ_info[4]==None:
univ_cities.append((univ_info[1],univ_info[3]))
else:
univ_cities.append((univ_info[1],univ_info[4]))
univ_city_num={}
for univ_city in univ_cities:
univ_city_num[univ_city[1]]=univ_city_num.get(univ_city[1],0)+1
univ_city_items = list(univ_city_num.items())
univ_city_items.sort(key=lambda x:x[1], reverse=True)
参考pyecharts官网提供的示例,便可以根据需求做出自己想要的图表,链接:图表详情
代码如下:
def pyecharts_geo_city(datas):
geo = Geo("中国城市所拥有的已在MOOC开课的大学数",title_color="#fff",
title_pos="center",width=1200,height=600,background_color="#404a59"
)
attr, value = geo.cast(datas)
geo.add("",attr,value,visual_range=[0, 30],visual_text_color="#fff",
symbol_size=15,is_visualmap=True
)
geo.render("中国城市所拥有的已在MOOC开课的大学数.html")
打开生成的网页,可以看到:
在网页上你可以滑动左下角的标签,查看大学数量的某些区间下城市分布,比如:
这个是大学数在8以上的城市,这在一定程度上也反映出城市的大学教育的发展情况。
3.大学所在省份
同上,可以做类似的分析。
'''大学省份'''
univ_provinces=[]
for univ_info in univ_infos:
if univ_info[2]==None:
univ_provinces.append((univ_info[1],univ_info[3][0:2]))
else:
univ_provinces.append((univ_info[1],univ_info[2]))
univ_province_num={}
for univ_province in univ_provinces:
univ_province_num[univ_province[1]]=univ_province_num.get(univ_province[1],0)+1
univ_province_items = list(univ_province_num.items())
univ_province_items.sort(key=lambda x:x[1], reverse=True)
调用的函数为:
def pyecharts_geo_province(datas):
maps = Map("中国省份所拥有的已在MOOC开课的大学数", width=1200, height=600)
labels,sizes=[],[]
labels,sizes= maps.cast(datas)
maps.add("",labels,sizes,maptype="china",visual_range=[0, 30],is_visualmap=True,visual_text_color="#000")
maps.render("中国省份所拥有的已在MOOC开课的大学数.html")
运行结果如下:

4.大学等级
这里主要是简单统计MOOC上开课的大学院校中有多少985或者211或者其它之类的。
'''大学等级'''
univ_rating=[]
_985,_211,_others=0,0,0
for univ_info in univ_infos:
univ_rating.append((univ_info[1],univ_info[5],univ_info[6]))
if univ_info[5]=='211':
_211+=1
if univ_info[6]=='985':
_985+=1
else:
_others+=1
univ_rating_num=[('985',_985),('211',_211),('others',_others)]
pyecharts_rosepie_rating(univ_rating_num)
用圆饼-玫瑰图绘出结果:
def pyecharts_rosepie_rating(datas):
pie = Pie("MOOC开课大学等级", title_pos='center', width=900)
attr,v1=pie.cast(datas)
pie.add("",attr,v1,center=[25, 50],is_random=True,radius=[30, 75],rosetype="radius",#rosetype="area"
is_legend_show=False,is_label_show=True
)
pie.render("MOOC开课大学等级.html")
运行结果:

5.大学类型
这里主要是统计的在MOOC上开课的大学类型:
'''大学类型'''
univ_kinds={}
for univ_info in univ_infos:
kind=univ_info[8][0:3]
univ_kinds[kind]=univ_kinds.get(kind,0)+1
univ_kind_items = list(univ_kinds.items())
univ_kind_items.sort(key=lambda x:x[1], reverse=True)
采用条形图绘制:
def pyecharts_bar_kinds(datas):
bar = Bar("MOOC开课大学类型")
attr,v=bar.cast(datas)
bar.add("", attr, v,mark_point=["average"],mark_line=["min", "max"],is_more_utils=True)
bar.render("MOOC开课大学类型.html")
运行结果:
由图知,平均数为10,最大值为48,最小值为1,一共有11种院校类型,综合类大学、工科类大学、远超其他类型的大学,这与当前教育背景密不可分的。
- 结语
其实可以做的不仅限于此。如果感兴趣,可以访问:pyecharts官网多多学习。
另外,第一次用Markdown写博客,诸多不习惯,如果文章中有错误,请指正哈。
中国大学MOOC课程信息之数据分析可视化二的更多相关文章
- 中国大学MOOC课程信息之数据分析可视化一
版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82263391 9月2日更:中国大学MOOC课程信息之数据分 ...
- 中国大学MOOC课程信息爬取与数据存储
版权声明:本文为博主原创文章,转载 请注明出处: https://blog.csdn.net/sc2079/article/details/82016583 10月18日更:MOOC课程信息D3.js ...
- MOOC课程信息D3.js动态可视化
版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/83153693 - 写在前面 好久没更新博客了,主要还是最近 ...
- 如何爬取icourse163 中国慕课上课程信息(上),
中国大学MOOC网上有着特别完善的课程信息,我觉得这是一份可以让我们充分利用的资源 那么,接下来的问题就是我们该如何爬取这里的资源 选择其中的计算机课程进行尝试 import requests fro ...
- 大学MOOC课程视频下载、流文件合并、批量重命名、b站视频下载及学习课程视频推荐
计算机行业技术更新快,编程语言种类多,在当今大数据和人工智能的时代,为了能在相关领域有所成就,就必须掌握好python.R等语言,较好的数学基础和深入的行业背景知识.计算机从业人员务必践行" ...
- 【python】下载中国大学MOOC的视频
[python]下载中国大学MOOC的视频 脚本目标: 输入课程id和cookie下载整个课程的视频文件,方便复习时候看 网站的反爬机制分析: 分析数据包的目的:找到获取m3u8文件的路径 1. 从第 ...
- 中国大学MOOC中的后台文件传输
早期版本的中国大学MOOC一旦被挂起后,应用在完成当前下载任务后无法继续添加新任务,当然也无法将缓存状态写入数据库.这个问题能否顺利解决直接关系到用户体验. 顺便吐槽下,凡是使用了后台文件传输还提示你 ...
- 中国大学mooc直播回放看这里哦http://www.icourse163.org/forum/1001974001/topic-1003372881.htm?sortType=1&pageIndex=1
中国大学mooc直播回放看这里哦http://www.icourse163.org/forum/1001974001/topic-1003372881.htm?sortType=1&pageI ...
- 中国大学MOOC 邮箱验证的问题
在使用 中国大学 MOOC 过程中,在PC端修改个人资料时,其中有项“常用邮箱”,于是写了QQ邮箱,结果发现一直无法验证,连邮件都无法收到. 经过多番尝试,重新使用邮箱注册的方式注册账号,然后注册成功 ...
随机推荐
- 【c# 学习笔记】类与结构体的区别
由于类与结构体在语法和使用上都非常类似,导致我们这些初学者容易混淆.为更好理解,特做以下区分记录: ① 语法上的区别在于,定义类要使用关键词class,而定义结构体则使用关键词struct. ② 结构 ...
- rsync参数说明
参数说明: log file = /var/log/rsyncd.log #日志文件位置,启动rsync后自动产生这个文件,无需提前创建 pidfile = /var/run/rsyncd.pid ...
- WebGL学习之纹理盒
原文地址:WebGL学习之纹理盒 我们之前已经学习过二维纹理 gl.TEXTURE_2D,而且还使用它实现了各种效果.但还有一种立方体纹理 gl.TEXTURE_CUBE_MAP,它包含了6个纹理代表 ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验四 《Android程序设计》 实验报告
实验四 Android程序设计 实验要求 参考Android开发简易教程 完成云班课中的检查点,也可以先完成实验报告,直接提交.注意不能只有截图,要有知识点,原理,遇到的问题和解决过程等说明.实验报告 ...
- (4.36)sql server中的waitfor
关键词:waitfor SQL有定时执行的语句 WaitFor,可以写到一个存储过程中再执行一次 语法:WaitFor{Delay 'time'|Time 'time} Delay后面的时间为延迟多少 ...
- [转帖]Linux命令pmap
Linux命令pmap https://www.cnblogs.com/lnlvinso/p/5272771.html jmap可以查看Java程序的堆内存使用情况,pmap可以查看Linux上运行的 ...
- [tensorflow] 入门day1-数据整理与展示
tensorflow真是一个我绕不开的坑(苍天饶过谁.jpg) 其实tensorflow1和2的差别挺大的,暂时从1入坑,2的话之后简单过一下. tf2中更改的函数(供参考):https://docs ...
- LeetCode. 阶乘后的零
题目要求: 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 解法: class Solution { public: int ...
- 编写并提取通用 ShellCode
简易 ShellCode 虽然可以正常被执行,但是还存在很多的问题,因为上次所编写的 ShellCode 采用了硬编址的方式来调用相应API函数的,那么就会存在一个很大的缺陷,如果操作系统的版本不统一 ...
- Neo4j查询语句总结
最近一直在做图数据库的相关工作,对neo4j的查询语言Cypher使用较多,故在此总结记录.Cypher作为图数据库的查询语言,感觉和关系型数据库的查询语言sql差不多吧. 1.如何找到一个节点x,x ...