Task 1 论文数据统计

任务1:论文数据统计

1.1 任务说明

任务主题:论文数量统计,即统计2019年全年计算机各个方向论文数量;

任务内容:赛题的理解、使用 Pandas 读取数据并进行统计;

任务成果:学习 Pandas 的基础操作;

可参考的学习资料:开源组织Datawhale joyful-pandas项目

1.2 数据集介绍

数据集来源:数据集链接

数据集的格式如下:

id:arXiv ID,可用于访问论文;

submitter:论文提交者;

authors:论文作者;

title:论文标题;

comments:论文页数和图表等其他信息;

journal-ref:论文发表的期刊的信息;

doi:数字对象标识符,https://www.doi.org

report-no:报告编号;

categories:论文在 arXiv 系统的所属类别或标签;

license:文章的许可证;

abstract:论文摘要;

versions:论文版本;

authors_parsed:作者的信息。

1.3 arxiv论文类别介绍

我们从arxiv官网,查询到论文的类别名称以及其解释如下。

链接:https://arxiv.org/help/api/user-manual 的 5.3 小节的 Subject Classifications 的部分,或 https://arxiv.org/category_taxonomy, 具体的153种paper的类别部分如下:

'astro-ph': 'Astrophysics',

'astro-ph.CO': 'Cosmology and Nongalactic Astrophysics',

'astro-ph.EP': 'Earth and Planetary Astrophysics',

'astro-ph.GA': 'Astrophysics of Galaxies',

'cs.AI': 'Artificial Intelligence',

'cs.AR': 'Hardware Architecture',

'cs.CC': 'Computational Complexity',

'cs.CE': 'Computational Engineering, Finance, and Science',

'cs.CV': 'Computer Vision and Pattern Recognition',

'cs.CY': 'Computers and Society',

'cs.DB': 'Databases',

'cs.DC': 'Distributed, Parallel, and Cluster Computing',

'cs.DL': 'Digital Libraries',

'cs.NA': 'Numerical Analysis',

'cs.NE': 'Neural and Evolutionary Computing',

'cs.NI': 'Networking and Internet Architecture',

'cs.OH': 'Other Computer Science',

'cs.OS': 'Operating Systems',

1.4 具体代码实现以及讲解

1.4.1 导入package并读取原始数据

# 导入所需的packageimportseabornassns#用于画图frombs4importBeautifulSoup#用于爬取arxiv的数据importre#用于正则表达式,匹配字符串的模式importrequests#用于网络连接,发送网络请求,使用域名获取对应信息importjson#读取数据,我们的数据为json格式的importpandasaspd#数据处理,数据分析importmatplotlib.pyplotasplt#画图工具

这里使用的package的版本如下(python 3.7.4):

seaborn:0.9.0

BeautifulSoup:4.8.0

requests:2.22.0

json:0.8.5

pandas:0.25.1

matplotlib:3.1.1

# 读入数据data=[]#初始化#使用with语句优势:1.自动关闭文件句柄;2.自动显示(处理)文件读取数据异常withopen("arxiv-metadata-oai-snapshot.json",'r')asf:forlineinf:data.append(json.loads(line))data=pd.DataFrame(data)#将list变为dataframe格式,方便使用pandas进行分析data.shape#显示数据大小

Output: (1778381,14)

其中的1778381表示数据总量,14表示特征数,对应我们1.2节说明的论文的14种信息。

data.head()#显示数据的前五行

1.4.2 数据预处理

首先我们先来粗略统计论文的种类信息:

'''count:一列数据的元素个数;unique:一列数据中元素的种类;top:一列数据中出现频率最高的元素;freq:一列数据中出现频率最高的元素的个数;'''data["categories"].describe()

count1778381unique61371topastro-phfreq86914Name:categories,dtype:object

以上的结果表明:共有1338381个数据,有61371个子类(因为有论文的类别是多个,例如一篇paper的类别是CS.AI & CS.MM和一篇paper的类别是CS.AI & CS.OS属于不同的子类别,这里仅仅是粗略统计),其中最多的种类是astro-ph,即Astrophysics(天体物理学),共出现了86914次。

由于部分论文的类别不止一种,所以下面我们判断在本数据集中共出现了多少种独立的数据集。

# 所有的种类(独立的)unique_categories=set([iforlin[x.split(' ')forxindata["categories"]]foriinl])len(unique_categories)unique_categories

这里使用了 split 函数将多类别使用 “ ”(空格)分开,组成list,并使用 for 循环将独立出现的类别找出来,并使用 set 类别,将重复项去除得到最终所有的独立paper种类。

176{'acc-phys','adap-org','alg-geom','ao-sci','astro-ph','astro-ph.CO','astro-ph.EP','astro-ph.GA','astro-ph.HE','astro-ph.IM','astro-ph.SR','atom-ph','bayes-an','chao-dyn','chem-ph','cmp-lg','comp-gas','cond-mat','cond-mat.dis-nn','cond-mat.mes-hall','cond-mat.mtrl-sci','cond-mat.other','cond-mat.quant-gas','cond-mat.soft','cond-mat.stat-mech','cond-mat.str-el','cond-mat.supr-con','cs.AI','cs.AR','cs.CC','cs.CE','cs.CG','cs.CL','cs.CR','cs.CV','cs.CY','cs.DB','cs.DC','cs.DL','cs.DM','cs.DS','cs.ET','cs.FL','cs.GL','cs.GR','cs.GT','cs.HC','cs.IR','cs.IT','cs.LG','cs.LO','cs.MA','cs.MM','cs.MS','cs.NA','cs.NE','cs.NI','cs.OH','cs.OS','cs.PF','cs.PL','cs.RO','cs.SC','cs.SD','cs.SE','cs.SI','cs.SY','dg-ga','econ.EM','econ.GN','econ.TH','eess.AS','eess.IV','eess.SP','eess.SY','funct-an','gr-qc','hep-ex','hep-lat','hep-ph','hep-th','math-ph','math.AC','math.AG','math.AP','math.AT','math.CA','math.CO','math.CT','math.CV','math.DG','math.DS','math.FA','math.GM','math.GN','math.GR','math.GT','math.HO','math.IT','math.KT','math.LO','math.MG','math.MP','math.NA','math.NT','math.OA','math.OC','math.PR','math.QA','math.RA','math.RT','math.SG','math.SP','math.ST','mtrl-th','nlin.AO','nlin.CD','nlin.CG','nlin.PS','nlin.SI','nucl-ex','nucl-th','patt-sol','physics.acc-ph','physics.ao-ph','physics.app-ph','physics.atm-clus','physics.atom-ph','physics.bio-ph','physics.chem-ph','physics.class-ph','physics.comp-ph','physics.data-an','physics.ed-ph','physics.flu-dyn','physics.gen-ph','physics.geo-ph','physics.hist-ph','physics.ins-det','physics.med-ph','physics.optics','physics.plasm-ph','physics.pop-ph','physics.soc-ph','physics.space-ph','plasm-ph','q-alg','q-bio','q-bio.BM','q-bio.CB','q-bio.GN','q-bio.MN','q-bio.NC','q-bio.OT','q-bio.PE','q-bio.QM','q-bio.SC','q-bio.TO','q-fin.CP','q-fin.EC','q-fin.GN','q-fin.MF','q-fin.PM','q-fin.PR','q-fin.RM','q-fin.ST','q-fin.TR','quant-ph','solv-int','stat.AP','stat.CO','stat.ME','stat.ML','stat.OT','stat.TH','supr-con'}

从以上结果发现,共有176种论文种类,比我们直接从 https://arxiv.org/help/api/user-manual 的 5.3 小节的 Subject Classifications 的部分或 https://arxiv.org/category_taxonomy中的到的类别少,这说明存在一些官网上没有的类别,这是一个小细节。不过对于我们的计算机方向的论文没有影响,依然是以下的40个类别,我们从原数据中提取的和从官网的到的种类是可以一一对应的。

'cs.AI':'Artificial Intelligence','cs.AR': 'HardwareArchitecture','cs.CC': 'ComputationalComplexity','cs.CE': 'ComputationalEngineering,Finance,andScience','cs.CG':'Computational Geometry','cs.CL': 'ComputationandLanguage','cs.CR': 'CryptographyandSecurity','cs.CV':'Computer Vision and Pattern Recognition','cs.CY': 'ComputersandSociety','cs.DB': 'Databases','cs.DC':'Distributed, Parallel, and Cluster Computing','cs.DL': 'DigitalLibraries','cs.DM': 'DiscreteMathematics','cs.DS': 'DataStructuresandAlgorithms','cs.ET': 'EmergingTechnologies','cs.FL':'Formal Languages and Automata Theory','cs.GL': 'GeneralLiterature','cs.GR': 'Graphics','cs.GT': 'ComputerScienceandGameTheory','cs.HC': 'Human-ComputerInteraction','cs.IR': 'InformationRetrieval','cs.IT': 'InformationTheory','cs.LG': 'MachineLearning','cs.LO': 'LogicinComputerScience','cs.MA': 'MultiagentSystems','cs.MM':'Multimedia','cs.MS': 'MathematicalSoftware','cs.NA': 'NumericalAnalysis','cs.NE': 'NeuralandEvolutionaryComputing','cs.NI': 'NetworkingandInternetArchitecture','cs.OH':'Other Computer Science','cs.OS': 'OperatingSystems','cs.PF': 'Performance','cs.PL': 'ProgrammingLanguages','cs.RO': 'Robotics','cs.SC': 'SymbolicComputation','cs.SD': 'Sound','cs.SE': 'SoftwareEngineering','cs.SI': 'SocialandInformationNetworks','cs.SY': 'SystemsandControl',

我们的任务要求对于2019年以后的paper进行分析,所以首先对于时间特征进行预处理,从而得到2019年以后的所有种类的论文:

data["year"]=pd.to_datetime(data["update_date"]).dt.year#将update_date从例如2019-02-20的str变为datetime格式,并提取处yeardeldata["update_date"]#删除 update_date特征,其使命已完成data=data[data["year"]>=2019]#找出 year 中2019年以后的数据,并将其他数据删除# data.groupby(['categories','year']) #以 categories 进行排序,如果同一个categories 相同则使用 year 特征进行排序data.reset_index(drop=True,inplace=True)#重新编号data#查看结果

这里我们就已经得到了所有2019年以后的论文,下面我们挑选出计算机领域内的所有文章:

#爬取所有的类别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=[]#进行fortintags:ift.name=="h2":level_1_name=t.textlevel_2_code=t.textlevel_2_name=t.textelift.name=="h3":raw=t.textlevel_2_code=re.sub(r"(.*)\((.*)\)",r"\2",raw)#正则表达式:模式字符串:(.*)\((.*)\);被替换字符串"\2";被处理字符串:rawlevel_2_name=re.sub(r"(.*)\((.*)\)",r"\1",raw)elift.name=="h4":raw=t.textlevel_3_code=re.sub(r"(.*) \((.*)\)",r"\1",raw)level_3_name=re.sub(r"(.*) \((.*)\)",r"\2",raw)elift.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})#按照 "group_name" 进行分组,在组内使用 "archive_name" 进行排序df_taxonomy.groupby(["group_name","archive_name"])df_taxonomy

由于这几天个人时间不足,以及确实是纯小白,搭建环境之后并没有完成代码的实现,接下来计划继续学习理解。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 统计2019年全年计算机各个方向论文数量 数据预处理 通过 函数可以看出数据的总体情况 判断本数据集中共出现多少次...
    陈易男阅读 191评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,483评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,551评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 2,713评论 1 1
  • 在妖界我有个名头叫胡百晓,无论是何事,只要找到胡百晓即可有解决的办法。因为是只狐狸大家以讹传讹叫我“倾城百晓”,...
    猫九0110阅读 3,255评论 7 3