arxiv----base数据统计分析

数据分析入门base——arxiv 数据分析(1)

一、赛题理解
1.1赛题背景介绍:

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

本次赛题将使用arXiv在公开的论文数据集,希望各位选手通过数据分析能够挖掘出最近学术的发展趋势和学术关键词。

二、数据集介绍
2.1 数据集的格式如下:

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

submitter:论文提交者;

authors:论文作者;

title:论文标题;

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

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

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

report-no:报告编号;

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

license:文章的许可证;

abstract:论文摘要;

versions:论文版本;

authors_parsed:作者信息(处理后)

2.2 Arxiv论文类别介绍

‘acc-phys hep-ex physics.acc-ph’,
‘acc-phys physics.acc-ph’,
‘adap-org chao-dyn nlin.AO nlin.CD’,
‘adap-org cond-mat.dis-nn nlin.AO’,
‘adap-org nlin.AO’,
‘alg-geom math.AG’,
‘astro-ph’,
‘astro-ph astro-ph.EP physics.geo-ph’,
‘astro-ph astro-ph.HE’,
‘astro-ph astro-ph.SR’,

‘stat.OT math.CO’,
‘stat.OT math.HO’,
‘stat.OT math.PR’,
‘stat.OT math.ST physics.data-an stat.TH’,
‘stat.OT physics.soc-ph stat.AP stat.ME’,
‘stat.OT stat.AP’,
‘stat.OT stat.CO’,
‘stat.OT stat.CO stat.ME’,
‘stat.OT stat.ME’,
‘stat.OT stat.ML’

三、数据集描述统计分析——python示例代码
3.1导入相关的库
import pandas as pd 
import matplotlib.pyplot as plt 
import json

读取数据

data = []
with open('G:/比赛/阿里天池/学术前言趋势分析/arxiv-metadata-oai-2019.json',"r") as f:
    for line in f:
        data.append(json.loads(line))
3.2 数据概况:
###### 数据概况:
df = pd.DataFrame(data)
df.shape   ###(170618, 14)
df.head()

在这里插入图片描述
统计类别数量
count:同一个指标的每个类型计数
unique:同一个指标的类型个数
top:同一个指标中出现次数最高的频数
frep:同一个指标中出现次数最高的频率

df["categories"].describe() 

count 170618
unique 15592
top cs.CV
freq 5559
Name: categories, dtype: object

categories的类别计数

df["categories"].value_counts()

cs.CV 5559
math.AG 1726
math.OC 1718 cs.IT
cond-mat.soft cond-mat.stat-mech nlin.CD physics.flu-dyn 1
math.DG hep-th math-ph math.MP math.OA 1

hep-ex hep-th 1 math.GT math.DG
Length: 15592, dtype: int64

3.3去掉categories所有重复类目
unique_cate = set([ i for l in [x.split(" ") for x in df["categories"]] for i in l])
len(unique_cate)   #172
unique_cate

在这里插入图片描述

3.4 按照时间顺序处理数据
#根据update_date去除时间数据
df["year"] = pd.to_datetime(df["update_date"]).dt.year
#后续无需使用update_date 可删除该字段
del df["update_date"]
df.groupby(["categories",'year']).count()
df.reset_index(drop=True,inplace=True)
df
3.5 arxiv论文各个领域所占的比重

可通过爬虫获取 df_taxonomy来源 url:https://arxiv.org/category_taxonomy.

#将dfy与df_taxonomy进行merge
data = df.merge(df_taxonomy,on="categories",how="left").drop_duplicates(["id","group_name"]).groupby("group_name").agg({"id":"count"}).sort_values(by="id",ascending=False).reset_index()
data
#通过饼图展示arxiv论文各个领域所占的比重
fig = plt.figure(figsize=(10,8))
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.title("pie论文类别分析")
explode= (0, 0, 0, 0.2, 0.3, 0.3, 0.2, 0.1) 
plt.pie(data["id"],labels=data["group_name"],autopct='%d%%',startangle=160,explode=explode)
plt.tight_layout()
plt.show()

在这里插入图片描述

#对计算机进行分类统计
group_name = "Computer Science"
data1 = df.merge(df_taxonomy,on="categories").query("group_name==@group_name").groupby(["year","category_name"]).count().reset_index().pivot(columns="year",index="category_name",values="id")
data1

#或者可通过以下方式操作
data1 =df.merge(df_taxonomy,on="categories")
data2 = data1[data1["group_name"]=="Computer Science"].groupby(["year","category_name"]).count().reset_index().pivot(columns="year",index="category_name",values=["id","categories"])
data2

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值