论文趋势分析——数据理解与分析
github地址:链接
论文趋势分析
- 1数据转换
- 1.1读取原始数据
- 1.2爬取论文类别数据
- 1.3取data的子集进行处理
- 1.4对categories进行处理
- 1.5数据连接
- 1.6存储转换后的数据,后面可以直接进行读取
- 2数据探索性分析
- 2.1 查看数据的缺失信息
- 2.2统计不同大类的论文数量
- 2.3按年度统计论文数量的变化
- 2.4按月份统计论文发表数量
- 2.5统计不同小类论文的数量
- 3使用BI软件进行数据可视化分析
- 3.1 不同年份计算机领域发表数量前五的领域
- 3.2计算机领域论文数量对比
- 3.3CV,ML等领域论文数量变化趋势
1数据转换
# 导入所需的package
import seaborn as sns #用于画图
from bs4 import BeautifulSoup #用于爬取arxiv的数据
import re #用于正则表达式,匹配字符串的模式
import requests #用于网络连接,发送网络请求,使用域名获取对应信息
import json #读取数据,我们的数据为json格式的
import pandas as pd #数据处理,数据分析
import matplotlib.pyplot as plt #画图工具def readArxivFile(path, columns=['id', 'submitter', 'authors', 'title', 'comments', 'journal-ref', 'doi','report-no', 'categories', 'license', 'abstract', 'versions','update_date', 'authors_parsed'], count=None):data = []with open(path, 'r') as f: for idx, line in enumerate(f): if idx == count:breakd = json.loads(line)d = {col : d[col] for col in columns}data.append(d)data = pd.DataFrame(data)return data
1.1读取原始数据
data = readArxivFile('D:/Code/Github/data/arxiv-metadata-oai-snapshot.json', ['id', 'categories', 'authors','title','update_date'])
1.2爬取论文类别数据
#爬取所有的类别
website_url = requests.get('https://arxiv.org/category_taxonomy').text #获取网页的文本数据
soup = BeautifulSoup(website_url,'lxml') #爬取数据,这里使用lxml的解析器,加速
root = soup.find('div',{'id':'category_taxonomy_list'}) #找出 BeautifulSoup 对应的标签入口
tags = root.find_all(["h2","h3","h4","p"], recursive=True) #读取 tags#初始化 str 和 list 变量
level_1_name = ""
level_2_name = ""
level_2_code = ""
level_1_names = []
level_2_codes = []
level_2_names = []
level_3_codes = []
level_3_names = []
level_3_notes = []#进行
for t in tags:if t.name == "h2":level_1_name = t.text level_2_code = t.textlevel_2_name = t.textelif t.name == "h3":raw = t.textlevel_2_code = re.sub(r"(.*)\((.*)\)",r"\2",raw) #正则表达式:模式字符串:(.*)\((.*)\);被替换字符串"\2";被处理字符串:rawlevel_2_name = re.sub(r"(.*)\((.*)\)",r"\1",raw)elif t.name == "h4":raw = t.textlevel_3_code = re.sub(r"(.*) \((.*)\)",r"\1",raw)level_3_name = re.sub(r"(.*) \((.*)\)",r"\2",raw)elif t.name == "p":notes = t.textlevel_1_names.append(level_1_name)level_2_names.append(level_2_name)level_2_codes.append(level_2_code)level_3_names.append(level_3_name)level_3_codes.append(level_3_code)level_3_notes.append(notes)#根据以上信息生成dataframe格式的数据
df_taxonomy = pd.DataFrame({'group_name' : level_1_names,'archive_name' : level_2_names,'archive_id' : level_2_codes,'category_name' : level_3_names,'categories' : level_3_codes,'category_description': level_3_notes})
df_taxonomy.head()
group_name | archive_name | archive_id | category_name | categories | category_description | |
---|---|---|---|---|---|---|
0 | Computer Science | Computer Science | Computer Science | Artificial Intelligence | cs.AI | Covers all areas of AI except Vision, Robotics... |
1 | Computer Science | Computer Science | Computer Science | Hardware Architecture | cs.AR | Covers systems organization and hardware archi... |
2 | Computer Science | Computer Science | Computer Science | Computational Complexity | cs.CC | Covers models of computation, complexity class... |
3 | Computer Science | Computer Science | Computer Science | Computational Engineering, Finance, and Science | cs.CE | Covers applications of computer science to the... |
4 | Computer Science | Computer Science | Computer Science | Computational Geometry | cs.CG | Roughly includes material in ACM Subject Class... |
1.3取data的子集进行处理
否则数据量太大,处理时间太长**
抽取数据的5%进行分析
#存储转换后的原始数据
data.to_csv('D:/Code/Github/data/data.csv',index = False)
df_taxonomy.to_csv('D:/Code/Github/data/categories.csv',index = False)
#对数据进行抽样
data = data.sample(frac=0.05,replace=False,random_state=1)
data.shape
(89846, 5)
1.4对categories进行处理
categories列中有很多,一篇论文同时属于很多的类别,只取第一个类别,放弃其他类别
print(data.categories.nunique())
data['categories'] = data.categories.str.split(' ',expand=True)[0]
data.categories.nunique()
9488172
1.5数据连接
data_merge = data.merge(df_taxonomy,how='left',on='categories').sort_values(by = "update_date").drop_duplicates(['id','group_name'],keep = 'first')
data_merge.shape
(89847, 10)
发现比原始抽样数据多了一行,经查明,原来是多了一行空行,进行删除
data_merge.dropna(how='any',subset=['categories'],inplace=True)
data_merge.shape
(89846, 10)
1.6存储转换后的数据,后面可以直接进行读取
data_merge.to_csv('D:/Code/Github/data/data_subset_merge.csv',index = False)
2数据探索性分析
2.1 查看数据的缺失信息
可以看到group_name之后的部分列,都有缺失数据
data_merge.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 89846 entries, 77522 to 41836
Data columns (total 10 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 id 89846 non-null object1 categories 89846 non-null object2 authors 89846 non-null object3 title 89846 non-null object4 update_date 89846 non-null object5 group_name 84229 non-null object6 archive_name 84229 non-null object7 archive_id 84229 non-null object8 category_name 84229 non-null object9 category_description 84229 non-null object
dtypes: object(10)
memory usage: 7.5+ MB
2.2统计不同大类的论文数量
- 可以看到物理学领域的论文数量最多,数学和计算机科学的其次,其他领域的论文数量都相对较少
- 说明arxiv网站的论文大部分仍然集中在“物理学,数学,计算机科学”领域
data_merge.groupby('group_name')['id'].agg('count').sort_values(ascending = False).plot(kind = 'barh')
2.3按年度统计论文数量的变化
- 可以看到论文数量大体上呈现递增的趋势
- 2009年和2015年的数据偏高,有可能是抽样的随机因素,也有可能这两年的论文数量本来就比较高
data_merge.groupby(pd.to_datetime(data_merge.update_date).dt.year)['id'].agg('count').plot(kind = 'bar')
<matplotlib.axes._subplots.AxesSubplot at 0x1cba2249dc0>
#绘制回归图
data_plot=data_merge.groupby(pd.to_datetime(data_merge.update_date).dt.year)['id'].agg('count').reset_index()
sns.regplot(data_plot.iloc[:,0],data_plot.iloc[:,1])
<matplotlib.axes._subplots.AxesSubplot at 0x1cbc0bcd760>
2.4按月份统计论文发表数量
- 比较发现一年中5,6,10,11月份是论文出产最多的月份
data_merge.groupby(pd.to_datetime(data_merge.update_date).dt.month)['id'].agg('count').plot(kind = 'bar')
<matplotlib.axes._subplots.AxesSubplot at 0x1cbd97ce970>
2.5统计不同小类论文的数量
- 只绘制了前20种
- 高能物理,量子力学领域的论文数量最多
data_merge.groupby('category_name')['id'].agg('count').sort_values(ascending = False).head(20).plot(kind = 'barh')
<matplotlib.axes._subplots.AxesSubplot at 0x1cba5d5ec10>
3使用BI软件进行数据可视化分析
3.1 不同年份计算机领域发表数量前五的领域
可以看到计算机领域最火的领域一直在发生着变换,2014年-2016年都是信息理论方面的论文最多,而2017-2019是计算机视觉最火,到了2020年,机器学习则和计算机视觉并驾齐驱。
3.2计算机领域论文数量对比
排名前五的是计算机视觉、机器学习、信息理论、自然语言处理、人工智能五个方面
3.3CV,ML等领域论文数量变化趋势
可以看到论文的数量都呈现出上升的趋势,但是2014年是一个节点,2014年之后,计算机视觉和机器学习两个领域的论文数量都开始了非常迅速的增长
论文趋势分析——数据理解与分析相关推荐
- 网络游戏运营中的数据理解及流量转化
网络游戏运营中数据的作用不可忽视,从商业理解到数据理解的过程中,各类数据将游戏运营规律和现象,以独特的方式呈现,尝试从基础概念的简要说明. 网络游戏运营过程是一个用户行为转化的过程,从用户行为操作角度 ...
- 开源开放 | 图数据交互可视化分析框架 InteractiveGraph v0.3 版本发布
图数据交互可视化分析框架 InteractiveGraph 日前发布 v0.3 版本,下载地址:https://github.com/grapheco/InteractiveGraph/release ...
- 阿里大规模数据中心性能分析
郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化.CCF 系统软件专委和软件工程专委的委员.曾主持国家自然科学基金面上项目.入选上海市浦江人才计划A类.获得 ACMS ...
- 网站分析实战——如何以数据驱动决策,提升网站价值(大数据时代的分析利器)
网站分析实战--如何以数据驱动决策,提升网站价值(大数据时代的分析利器) 王彦平吴盛峰 编著 ISBN 978-7-121-19312-5 2013年1月出版 定价:59.00 316页 16开 编 ...
- 最新最全论文合集——多模态情感分析
AMiner平台(https://www.aminer.cn)由清华大学计算机系研发,拥有我国完全自主知识产权.平台包含了超过2.3亿学术论文/专利和1.36亿学者的科技图谱,提供学者评价.专家发现. ...
- java按秒查询数据_ClickHouse留存分析工具十亿数据秒级查询方案
作者:陈璐,腾讯 CSIG 高级数据分析师本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可以 ...
- 【深度学习】【物联网】深度解读:深度学习在IoT大数据和流分析中的应用
作者|Natalie 编辑|Emily AI 前线导读:在物联网时代,大量的感知器每天都在收集并产生着涉及各个领域的数据.由于商业和生活质量提升方面的诉求,应用物联网(IoT)技术对大数据流进行分析是 ...
- 食品安全大数据可视化关联分析
点击上方蓝字关注我们 食品安全大数据可视化关联分析 陈谊, 孙梦, 武彩霞, 孙小然 北京工商大学计算机学院食品安全大数据技术北京市重点实验室,北京 100048 摘要:随着检测技术的提高和互联网技术 ...
- 图数据交互可视化分析框架InteractiveGraph v0.3版本发布
图数据交互可视化分析框架 InteractiveGraph日前发布v0.3版本,下载地址:https://github.com/grapheco/InteractiveGraph/releases/t ...
最新文章
- flume写入mysql_Flume高级之自定义MySQLSource
- 如何重装Domino服务器或者将Domino服务器从一台机器迁移到另外一台
- 使用WinSCP在WIndows与树莓派之间传递文件
- 51nod 1836:战忽局的手段(期望)
- 5、(字符串类型)CHAR、VARCHAR、TEXT、ENUM、SET
- php header x-auth-token,使用Angular 2正确设置Header X-Auth-Token
- OpenCV reshape函数需要注意的细节
- Appium安装过程
- mysql主从复制及问题解决
- 云起作者认证大神_2020网络文学“白金大神”名单出炉!顶级作家是怎样炼成的?...
- 结构体01:结构体的定义和使用
- 汇编语言Loop指令
- java+nanomsg(jnanomsg)
- 2015阿里巴巴实习生招聘客户端开发试题
- 第19节 简单扫描技术—基于windows系统
- archLinux安装记录
- 进程管理工具-Supervisord +CeSi
- win10系统没什么用的微软账户登陆
- 在Oracle中使用脏读,ORACLE 事务处理
- Http之referer详解