↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

Datawhale干货

作者:李攀,北航硕士,Datawhale优秀学习者

arXiv是重要的学术公开网站,也是搜索、浏览和下载学术论文的重要工具。它涵盖的范围非常广,涉及物理学的庞大分支和计算机科学的众多子学科,如数学、统计学、电气工程、定量生物学和经济学等等。

本文使用arXiv公开的论文数据集,聚焦2008年-2020年计算机各个方向论文数据,对其进行了数据探索性分析和可视化分析,什么是2020年最火的方向,排名前五的又是哪些呢?一起来看看结论和数据分析过程。

本文目录

一、 数据转换

本文数据下载地址:https://tianchi.aliyun.com/competition/entrance/531866/information

从json中读取数据

# 导入所需的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()

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 对catagories进行处理

categories列中有很多,一篇论文同时属于很多的类别,只取第一个类别,放弃其他类别。

print(data.categories.nunique())
data['categories'] = data.categories.str.split(' ',expand=True)[0]
data.categories.nunique()
9488
172

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.1 查看数据的缺失信息

可以看到group_name之后的部分列,都有缺失数据

data_merge.info()

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')

#绘制回归图
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])

2.4 按月份统计论文发表数量

  • 比较发现一年中5,6,10,11月份是论文出产最多的月份

data_merge.groupby(pd.to_datetime(data_merge.update_date).dt.month)['id'].agg('count').plot(kind = 'bar')

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>

三、 使用BI软件进行数据可视化分析

3.1 不同年份计算机领域发表数量前五的领域

可以看到计算机领域最火的领域一直在发生着变换,2014年-2016年都是信息理论方面的论文最多,而2017-2019是计算机视觉最火,到了2020年,机器学习则和计算机视觉并驾齐驱。

3.2 计算机领域论文数量对比

排名前五的是计算机视觉、机器学习、信息理论、自然语言处理、人工智能五个方面

3.3 CV、ML等领域论文数量变化趋势

可以看到论文的数量都呈现出上升的趋势,但是2014年是一个节点,2014年之后,计算机视觉机器学习两个领域的论文数量都开始了非常迅速的增长,这两个方向依然是计算机领域目前论文中的最火的方向,至于今年比较热的新方向,如可复现性、差分隐私、几何深度学习、神经形态计算、强化学习是否成为新增长点,来一个预测吧。

需要论文数据可以阅读原文下载

“干货学习,三连

近10年学术论文的数据分析!相关推荐

  1. 【数据分析】近10年学术论文的数据分析!

    作者:李攀,北航硕士,Datawhale优秀学习者 arXiv是重要的学术公开网站,也是搜索.浏览和下载学术论文的重要工具.它涵盖的范围非常广,涉及物理学的庞大分支和计算机科学的众多子学科,如数学.统 ...

  2. AI近10年21个子领域高引学者(AI-10 Most Influential Scholars )

    转自"SciTouTiao"微信公众号 本文约2100字,建议阅读9分钟. 本文节选了和AI相关的21个子领域顶会或者期刊论文的高引学者列表. [ 导读 ]近10年,人工智能发展迅 ...

  3. 论文英文参考文献[10]的时候后面多空格_英文学术论文标点符号使用规范

    作者:陈敏(<长江科学院院报>编辑部) 1 研究背景 近年来,国内的英文学术期刊得到迅速发展,但也面临着许多问题.其中,英文的质量水平是制约国内英文学术期刊发展的一个重要因素.除英文语法正 ...

  4. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--2 数据分析

    目录 相关信息 1 赛题 2 数据分析 2.1 加载数据 2.2 查看缺失值 2.3 标签分布 2.4 文本长度 2.5 标题摘要合并后字符长度 3 总结 相关信息 [NLP]讯飞英文学术论文分类挑战 ...

  5. 学术论文如何撰写数据分析部分?

    对于学术论文来说,主要分为两个部分,一个是理论性,一个是实证性.对于理论性的文章写作来说,大量阅读文献就能保证一篇优秀论文的产出.实证性论文根据其获取资料的方法不同,又可以分为若干类.其中实地采集数据 ...

  6. 写论文常用的计算机技巧,写学术论文,需要掌握哪些Word技巧?这10个最实用!...

    写学术论文,需要掌握哪些Word技巧?这10个最实用! 2020-03-14 17:34:02 5点赞 48收藏 0评论 当年写论文时,要是看了这篇文章,我就不会被导师怼得那么惨了! 记忆最深刻的,莫 ...

  7. 从小白到年薪10万+,优秀的数据分析能力如何速成?

    广泛被应用的数据分析 谷歌的数据分析可以预测一个地区即将爆发的流感,从而进行针对性的预防:淘宝可以根据你浏览和消费的数据进行分析,为你精准推荐商品:口碑极好的网易云音乐,通过其相似性算法,为不同的人量 ...

  8. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--1 赛后总结与分析

    目录 1 相关信息 2 总结 2.1 TextCNN.Fasttext等DL方案 2.2 机器学习LGB方案 2.3 Bert方案 3 继续提分点 1 相关信息 [NLP]讯飞英文学术论文分类挑战赛T ...

  9. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案

    目录 1 相关信息 2 引言 3 实现 3.1 数据预处理 3.2 Bert 4 提分点技巧讲解 5 未来展望 1 相关信息 [NLP]讯飞英文学术论文分类挑战赛Top10开源多方案–1 赛后总结与分 ...

最新文章

  1. struct和class内存大小的计算
  2. 二进制地址的伙伴地址
  3. 异步同步、阻塞非阻塞、异步回调、线程队列和协程
  4. OpenGL_Qt学习笔记之_05(纹理映射)
  5. UA MATH571B 试验设计 QE练习题 平衡非完全区组设计BIBD
  6. android.content.Context.getResources()‘ on a null object reference
  7. java Set无序集合 HashSet 的对象元素唯一性
  8. 工作流框架的设计要点
  9. EXCEL数据分析-案例实践
  10. baseresponse响应类_SpringBoot统一响应体解决方案
  11. STM32 电机教程 13 - BLDC 电机转速计算
  12. 虚短虚断以及部分运放电路
  13. BTE1650 FBL1N/FBL2N/FBL3N/FBL5N-增加客制化字段 客商及科目描述
  14. 自制三维激光扫描建模
  15. 一个可以免费下载O Reilly的书籍的地方
  16. 南都娱乐周刊否认爆料文章出轨因与其有私人恩怨
  17. [附源码]计算机毕业设计JAVA超市收银系统论文
  18. 获取公众号的所有文章
  19. JAVA根据省市区县获取配置文件经纬度(静态)
  20. JSON Key大写转小写(同理,小写转大写也可以)

热门文章

  1. 全国大学生数学建模竞赛-2015-A题-太阳影子定位
  2. C# -爬虫之WebBrowser跨域跨iframe获取网页源码
  3. CCNA静态路由实验
  4. 讯飞智慧交通的实践之路
  5. 时间(秒)转时间字符串(x天x时x分x秒)
  6. 蓝桥杯 小朋友崇拜圈【第九届】【省赛】【C组】 深搜DFS
  7. mysql数据库如何分组查询_数据库MySQL--分组查询
  8. 风靡全网的《看漫画学Python》1、2版分享,python最佳入门教程,中学生用业余时间都能学会,北大教授看完都这样定义它
  9. Android WIFI框架分析(1)
  10. nmap为什么这么强大之主机发现