当前位置:
首页 > temp > python入门教程 >
-
Python数据分析案例:对全国大学综合数据分析,本可视化展示(附加2021全国大
前言
软科中国大学排名以专业、客观、透明的优势赢得了高等教育领域和社会的广泛关注和认可,本次将利用Python对我国大学排名和分布情况进行一番研究。
先展示下爬虫的源码
import requests import parsel import csv f = open('排名.csv', mode='a', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=['名次', '学校名称', '综合得分', '星级排名', '办学层次']) url = 'http://m.gaosan.com/gaokao/265440.html' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' } response = requests.get(url=url, headers=headers) response.encoding = response.apparent_encoding selector = parsel.Selector(response.text) trs = selector.css('#page tr') for tr in trs: dit = {} ranking = tr.css('td:nth-child(1)::text').get() dit['名次'] = ranking school = tr.css('td:nth-child(2)::text').get() dit['学校名称'] = school score = tr.css('td:nth-child(3)::text').get() dit['综合得分'] = score star = tr.css('td:nth-child(4)::text').get() dit['星级排名'] = star level = tr.css('td:nth-child(5)::text').get() dit['办学层次'] = level csv_writer.writerow(dit) print(dit) f.close()
数据分析涉及到的内容
- Pandas — 数据处理
- Pyecharts — 数据可视化
导入模块
from pyecharts.charts import Map,Bar,Pie from pyecharts import options as opts import pandas as pd
Pandas数据处理
读取数据
df = pd.read_csv('中国大学综合排名.csv',index_col=0) df.head()
查看表格数据类型
df.dtypes
统计各省市大学数量
# 各省份大学数量 df_counts = df.groupby('省市').count()['排名'] df0 = df_counts.copy() # 进行降序排列 并在当前df0上进行修改 df0.sort_values(ascending=False, inplace=True) df0
各省市大学平均分排序
# 统计每个省份大学的数量以及平均分 # 算出平均分 df_means0 = df.groupby('省市').mean()['总分'] # 取两位小数 df_means = df_means0.round(2) # 合并上面的大学数量跟平均分 df1 = pd.concat([df_counts, df_means], axis=1) # 改变列名 df1.columns = ['数量', '平均分'] # 通过 平均分 进行降序排列 并在当前df1上进行修改 df1.sort_values(by=['平均分'], ascending=False, inplace=True) df1
Pyecharts数据可视化
各省市大学数量和平均分柱状图(横向)
d1 = df1.index.tolist() d2 = df1['数量'].values.tolist() d3 = df1['平均分'].values.tolist() bar0 = ( Bar() .add_xaxis(d1) .add_yaxis('数量', d2) .add_yaxis('平均分数', d3) .set_global_opts( title_opts=opts.TitleOpts(title='中国大学排名'), yaxis_opts=opts.AxisOpts(name='量'), xaxis_opts=opts.AxisOpts(name='省份'), ) ) bar0.render_notebook()
各省市大学数量和平均分柱状图(纵向)
df1.sort_values(by=['平均分'], inplace=True) d1 = df1.index.tolist() d2 = df1['数量'].values.tolist() d3 = df1['平均分'].values.tolist() bar1 = ( Bar() .add_xaxis(d1) .add_yaxis('数量', d2) .add_yaxis('平均分数', d3) # 坐标轴翻转 .reversal_axis() # 数值显示靠右 .set_series_opts(label_opts=opts.LabelOpts(position='right')) .set_global_opts( title_opts=opts.TitleOpts(title='中国大学排名'), yaxis_opts=opts.AxisOpts(name='省份'), xaxis_opts=opts.AxisOpts(name='量'), ) ) bar1.render_notebook()
各省市大学数量玫瑰图
弗罗伦斯·南丁格尔(Florence Nightingale),一位著名的英国护士,同时她也是一位统计学家,很多人没有想到吧?
她被号称为数据可视化的鼻祖,就是数据可视化的祖师爷,你可能也没有想到吧?
她是英国皇家统计学会的第一个女成员,也是美国统计协会的名誉会员。
克里米亚战争时期,南丁格尔发现大多数士兵不是阵亡,而是因为饥饿、营养不良、卫生条件差和野战医院的条件差才死于其战伤。
于是她向上级报告了克里米亚战争的医疗条件,同时申请一批医疗物质来改变医疗条件。由于国会议员不会阅读统计报告,所以她的申请一直得不到批准。于是她改用了极座标饼图的形式来展示战地医院的病人死亡率在不同季节的变化,重新提交这个申请报告,没想到马上就得到了批准。这是这批物质改善了战地医院的卫生条件,仅此一项改革就大大地提高了受伤战士的生存率。
后被这个图就被称为南丁格尔玫瑰图,南丁格尔也被尊称为数据可视化鼻祖
name = df_counts.index.tolist() count = df_counts.values.tolist() c0 = ( Pie() .add( '', [list(z) for z in zip(name, count)], # 饼图的半径,数组的第一项是内半径,第二项是外半径 # 默认设置成百分比,相对于容器高宽中较小的一项的一半 radius=['20%', '60%'], # 让图在这个位置显示 center=['50%', '65%'], # 是否展示成南丁格尔图,通过半径区分数据大小,有'radius'和'area'两种模式。 # radius:扇区圆心角展现数据的百分比,半径展现数据的大小 # area:所有扇区圆心角相同,仅通过半径展现数据大小 rosetype="radius", # 显示标签 label_opts=opts.LabelOpts(is_show=False), ) .set_series_opts(label_opts=opts.LabelOpts(formatter='{b}: {c}')) ) c0.render_notebook()
各省市大学数量南丁格尔玫瑰图
provinces = df0.index.tolist() num = df0.values.tolist() c1 = ( Pie() .add('', [list(z) for z in zip(provinces, num)], radius=['30%', '105%'], rosetype='area' ) .set_global_opts( title_opts=opts.TitleOpts(title='中国大学排名'), legend_opts=opts.LegendOpts(is_show=False), toolbox_opts=opts.ToolboxOpts() ) .set_series_opts( label_opts=opts.LabelOpts( # 是否显示标签 is_show=True, # 设置标签位置 position="inside", font_size=12, formatter='{b}: {c}', # 斜体 font_style='italic', # 加粗 font_weight='bold', # 微软的雅黑字体 font_family='Microsoft YaHei' ) ) ) c1.render_notebook()
总结
大学数量较多的省市:江苏、山东、河南、河北、北京、辽宁 、陕西、四川 、广东 、湖南 、湖北、浙江等地(只看学校数量),后期探索可根据学校排名
排名前20的大学较前一年的波动较小(这也符合常理,毕竟前几的学校都是多年沉淀下来的)
西部地区大学数量较少
本数据集不包含港、澳、台大学(网站未统计)
出处:https://www.cnblogs.com/qshhl/p/15233641.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数