一 、数据集与开发环境

下载链接::https://www.kaggle.com/Cornell-University/arxiv
开发环境:Jupyter lab 2.1.5

二、 数据预处理

import seaborn as sns
from bs4 import BeautifulSoup
import re
import requests
import json
import pandas as pd
import matplotlib.pyplot as pltdata=[]
with open(r"D:\Datawhale\arxiv-metadata-oai-snapshot.json",'r') as f: for idx, line in enumerate(f):   #enumerate() 对于跟踪某些值在列表中出现的位置是很有用的。 所以,如果你想将一个文件中出现的单词映射到它出现的行号上去,可以很容易的利用 enumerate() 来完成                                                                                                                                                                                                                                                                                                                                                                                                                                        data.append(json.loads(line))#json.load()是用来读取文件的,json.loads()是用来读取字符串
data=pd.DataFrame(data)
data.head()

data["categories"]
unique_categories=set(i for l in [x.split(' ') for x in data["categories"]] for i in l)
len(unique_categories)
data["year"]=pd.to_datetime(data["update_date"]).dt.year
data["year"]
del data["update_date"]
data=data[data['year']>=2019]
data.reset_index(drop=True,inplace=True)
#drop=True: 把原来的索引index列去掉,丢掉。
#drop=False:保留原来的索引(以前的可能是乱的)
#inplace=True:不创建新的对象,直接对原始对象进行修改
#inplace=False:对数据进行修改,创建并返回新的对象承载其修改结果。
data
#爬取所有的类别
website_url=requests.get("https://arxiv.org/category_taxonomy").textsoup=BeautifulSoup(website_url,'lxml')root=soup.find('div',{'id':'category_taxonomy_list'})tags=root.find_all(['h2','h3','h4','p'],recursive=True)for t in tags:if t.name=='h2':level_1_name=t.textlevel_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
})    #按照 "group_name" 进行分组,在组内使用 "archive_name" 进行排序
df_taxonomy.groupby(["group_name","archive_name"])
df_taxonomy

三、数据分析与可视化

_df = data.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()_df

fig = plt.figure(figsize=(15,12))
explode = (0, 0, 0, 0.2, 0.3, 0.3, 0.2, 0.1)
plt.pie(_df["id"],  labels=_df["group_name"], autopct='%1.2f%%', startangle=160, explode=explode)
plt.tight_layout()
plt.show()

学术前沿趋势分析1:论文数据统计相关推荐

  1. Datawhale组队学习21期_学术前沿趋势分析Task2_论文作者统计

    任务说明 任务主题:论文作者统计,统计所有论文作者出现评率Top10的姓名: 任务内容:论文作者的统计.使用 Pandas 读取数据并使用字符串操作: 任务成果:学习 Pandas 的字符串操作: 数 ...

  2. 学习分享:学术前言趋势分析1—论文数据统计

    文章目录 1.数据集介绍 2.代码学习心得 (1) split()函数 (2) 正则表达式 (3) 数据分析及可视化 3.具体代码实现 学习主题:论文数量统计,统计2019年全年,计算机各个方向论文数 ...

  3. 学习分享:学术前言趋势分析2—论文作者统计

    文章目录 1.数据处理 2.字符串处理 3.具体代码 任务内容:论文作者的统计.使用 Pandas 读取数据并使用字符串操作: 任务成果:学习 Pandas 的字符串操作 1.数据处理 在原始arxi ...

  4. 【学术前沿分析】1 论文数据统计

    论文数据统计 1.1 任务说明 读取json数据.爬取数据: 论文数量统计,即统计2019年全年计算机各个方向论文数量: 1.2 数据集介绍 数据集来源:数据集链接: 数据集的格式如下: id:arX ...

  5. 学习分享:学术前言趋势分析3—论文代码统计

    文章目录 1.数据处理步骤 2.正则表达式 3.具体代码实现 任务内容:使用正则表达式统计代码连接.页数和图表数据: 任务成果:学习正则表达式统计 1.数据处理步骤 在原始arxiv数据集中作者经常会 ...

  6. 【竞赛算法学习】学术前沿趋势分析-论文数据统计

    任务1:论文数据统计 1.1 任务说明 任务主题:论文数量统计,即统计2019年全年计算机各个方向论文数量: 任务内容:赛题的理解.使用 Pandas 读取数据并进行统计: 任务成果:学习 Panda ...

  7. 学术前沿趋势分析_学习_论文数据统计Task1

    论文数据统计学习记录 任务说明 分析说明 1. 获得方法:**==使用python 爬虫爬取数据集==** 2. 这里**==使用正则化加以限制==** 3. 判断数据是否存在 4. json文件的设 ...

  8. 数据分析入门(学术前沿趋势分析)Task1-论文数据统计

    此次赛题是零基础入门数据分析(学术前沿趋势分析),使用公开的arXiv论文完成对应的数据分析操作.赛题内容包括对论文数量.作者出现频率.论文源码的统计,对论文进行分类以及对论文作者的关系进行建模. 目 ...

  9. Datawhale数据分析学习——学术前沿趋势分析 任务1

    数据分析学习--学术前沿趋势分析 任务1 前言 赛题背景 任务1:论文数据统计 1.1 任务说明 1.2 数据集介绍 1.3 arxiv论文类别介绍 1.4 任务整体思路 1.5 具体代码实现以及讲解 ...

  10. 数据分析之学术前沿分析 任务1:论文数据统计

    任务1:论文数据统计 1.1 任务说明 1.2 数据集介绍 1.3 arxiv论⽂文类别介绍 1.4 具体代码实现以及讲解 1.4.1 导⼊入package并读取原始数据 1.4.2 数据预处理理 1 ...

最新文章

  1. 优点和阵列的缺点,并且一个链表
  2. C#Arcengine通过坐标点生成面(环形)
  3. OpenCV2学习笔记(一)
  4. JAVA揭竿而起总要有名号
  5. Fiori navigation logic ( Route )
  6. 优秀程序员的 18 大法则【转载】
  7. Flask框架项目实例:**租房网站(一)
  8. MyBatis框架学习笔记03:利用MyBatis实现关联查询
  9. 服务器400_瓜分400万filecoin的入门条件:现货服务器
  10. 《Java和Android开发学习指南(第2版)》——第1章,第1.5节本章小结
  11. 继承ActionSupport实现Action
  12. 基于Matlab/GUI界面设计的参数在线整定与优化(一)
  13. 360中不显示html中图片不显示图片,360极速浏览器无法显示图片解决方法详解
  14. CentOS 7.4安装配置Oracle 12cR2 12.2.0.1.0
  15. 品牌出海:如何做好本土化运营?
  16. BZOJ 1050 旅行comf
  17. 第二期腾讯AI加速器将面向全球招募AI创业者
  18. 基于Linux的WebSphere性能调优与故障诊断
  19. 【106】360查字体-查询本地字体版权是否可商用
  20. 基于51单片机HX711的电子秤称重计价proteus仿真程序设计

热门文章

  1. 腾讯游戏和区块链平台合作,它能让“区块链+游戏”真正落地吗?
  2. java解析json数据_java解析JSON数据详解
  3. 对图片进行膨胀与腐蚀
  4. 07-jQuery中的模版引擎
  5. 主流计算机编程语言之父---集锦
  6. 真无线耳机什么牌子好?无线入耳式耳机音质排行榜!
  7. linux窗口叉号不显示,linux因勿删或误操作导致登录界面异常,命令无法使用,显示/bin/bash:No such file or directory...
  8. 可优比消毒柜开关按键失灵和无法加热问题
  9. 名悦集团分享新手开车技巧口诀,开车零事故攻略
  10. css3有趣的transform形变