# 导⼊所需的packageimport seaborn as sns #⽤于画图from bs4 import BeautifulSoup #⽤于爬取arxiv的数据import re #⽤于正则表达式,匹配字符串的模式import requests #⽤于⽹络连接,发送⽹络请求,使⽤域名获取对应信息import json #读取数据,我们的数据为json格式的import pandas as pd #数据处理,数据分析import matplotlib.pyplot as plt #画图⼯具
data =[]#初始化#使⽤用with语句句优势: 1.⾃自动关闭⽂文件句句柄; 2.⾃自动显示(处理理)⽂文件读取数据异常withopen("C:\\Users\\Administrator\\Desktop\\arxiv-metadata-oai-2019.json",'r')as f:for idx, line inenumerate(f):
d = json.loads(line)
d ={'abstract': d['abstract'],'categories': d['categories'],'comments': d['comments']}
data.append(d)
data = pd.DataFrame(data)#将list变为dataframe格式,⽅方便便使⽤用pandas进⾏行行分析C:\Users\Administrator\Desktop
# 使⽤用正则表达式匹配, XX pages
data['pages']= data['comments'].apply(lambda x: re.findall('[1-9][0-9]* pages',str(x)))# 筛选出有pages的论⽂文
data = data[data['pages'].apply(len)>0]# 由于匹配得到的是⼀一个list,如['19 pages'],需要进⾏行行转换
data['pages']= data['pages'].apply(lambda x:float(x[0].replace(' pages','')))
统计结果如下:论文平均的页数为17⻚页, 75%的论⽂文在22页以内,最长的论文有56⻚页。
data['pages'].describe().astype(int)
count 9
mean 17
std 16
min 3
25% 7
50% 17
75% 22
max 56
Name: pages, dtype: int32