任务说明¶
任务主题:论文作者统计,统计所有论文作者出现评率Top10的姓名;
任务内容:论文作者的统计、使用 Pandas 读取数据并使用字符串操作;
任务成果:学习 Pandas 的字符串操作;
数据处理步骤
在原始arxiv数据集中论文作者authors字段是一个字符串格式,其中每个作者使用逗号进行分隔分,所以我们我们首先需要完成以下步骤:

使用逗号对作者进行切分;
剔除单个作者中非常规的字符;
具体操作可以参考以下例子:

C. Bal\'azs, E. L. Berger, P. M. Nadolsky, C.-P. Yuan

切分为,其中\为转义符

C. Ba’lazs
E. L. Berger
P. M. Nadolsky
C.-P. Yuan
当然在原始数据集中authors_parsed字段已经帮我们处理好了作者信息,可以直接使用该字段完成后续统计。

字符串处理
在Python中字符串是最常用的数据类型,可以使用引号('或")来创建字符串。Python中所有的字符都使用字符串存储,可以使用方括号来截取字符串,如下实例:

In [1]:
var1 = ‘Hello Datawhale!’
var2 = “Python Everwhere!”

print("var1[-10:]: ", var1[-10:])
print("var2[1:5]: ", var2[0:7])
var1[-10:]: Datawhale!
var2[1:5]: Python
同时在Python中还支持转义符:

(在行尾时) 续行符
\ 反斜杠符号
’ 单引号
" 双引号
\n 换行
\t 横向制表符
\r 回车
Python中还内置了很多内置函数,非常方便使用:

方法 描述
string.capitalize() 把字符串的第一个字符大写
string.isalpha() 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
string.title() 返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
string.upper() 转换 string 中的小写字母为大写
具体代码实现以及讲解
数据读取
In [1]:

导入所需的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 #画图工具
In [9]:
def readArxivFile(path, columns=[‘id’, ‘submitter’, ‘authors’, ‘title’, ‘comments’, ‘journal-ref’, ‘doi’,
‘report-no’, ‘categories’, ‘license’, ‘abstract’, ‘versions’,
‘update_date’, ‘authors_parsed’], count=None):
‘’’
定义读取文件的函数
path: 文件路径
columns: 需要选择的列
count: 读取行数
‘’’

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

data = readArxivFile(‘arxiv-metadata-oai-snapshot.json’,
[‘id’, ‘authors’, ‘categories’, ‘authors_parsed’],
100000)
为了方便处理数据,我们只选择了三个字段进行读取。

数据统计
接下来我们将完成以下统计操作:

统计所有作者姓名出现频率的Top10;
统计所有作者姓(姓名最后一个单词)的出现频率的Top10;
统计所有作者姓第一个字符的评率;
为了节约计算时间,下面选择部分类别下的论文进行处理:

In [10]:

选择类别为cs.CV下面的论文

data2 = data[data[‘categories’].apply(lambda x: ‘cs.CV’ in x)]

拼接所有作者

all_authors = sum(data2[‘authors_parsed’], [])
处理完成后all_authors变成了所有一个list,其中每个元素为一个作者的姓名。我们首先来完成姓名频率的统计。

In [11]:

拼接所有的作者

authors_names = [’ '.join(x) for x in all_authors]
authors_names = pd.DataFrame(authors_names)

根据作者频率绘制直方图

plt.figure(figsize=(10, 6))
authors_names[0].value_counts().head(10).plot(kind=‘barh’)

修改图配置

names = authors_names[0].value_counts().index.values[:10]
_ = plt.yticks(range(0, len(names)), names)
plt.ylabel(‘Author’)
plt.xlabel(‘Count’)
Out[11]:
Text(0.5, 0, ‘Count’)

接下来统计姓名姓,也就是authors_parsed字段中作者第一个单词:

In [12]:
authors_lastnames = [x[0] for x in all_authors]
authors_lastnames = pd.DataFrame(authors_lastnames)

plt.figure(figsize=(10, 6))
authors_lastnames[0].value_counts().head(10).plot(kind=‘barh’)

names = authors_lastnames[0].value_counts().index.values[:10]
_ = plt.yticks(range(0, len(names)), names)
plt.ylabel(‘Author’)
plt.xlabel(‘Count’)
Out[12]:
Text(0.5, 0, ‘Count’)

绘制得到的结果,从结果看出这些都是华人或者中国姓氏~

数据分析/论文作者统计相关推荐

  1. 数据分析---论文作者统计

    目录 1.1任务说明 1.2数据集介绍 1.3数据集中选取所需要的数据字段 1.4数据处理步骤 1.5字符串处理 1.6代码实现过程及说明 1.6.1读取数据 1.6.2数据统计 总结 1.1任务说明 ...

  2. python 数据分析论文_数据分析-任务:论文作者统计

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

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

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

  4. 数据分析---论文数据统计

    数据分析-论文数据统计 目录 1.1任务说明 1.2数据集介绍 1.3arxiv论文类别介绍 1.4具体代码实现 1.4.1导入package并读取原始数据 1.4.2数据预处理 1.4.3数据分析及 ...

  5. 【算法竞赛学习】学术前沿趋势-论文作者统计

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

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

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

  7. 到底有多卷? CVPR 2022 + ECCV 2022 论文作者统计

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 作者:ZzZZzzZZZzzz |  已授权转载(源:知乎)编辑: ...

  8. 数据分析:论文数据统计

    文章目录 一.任务说明 二.具体代码实现以及讲解 1.导入package并读取原始数据 2.数据预处理 3.数据分析及可视化 一.任务说明 任务主题:论文数量统计,即统计2019年全年计算机各个方向论 ...

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

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

最新文章

  1. 六轴机器人 宝元系统_庆云大国重器上线六轴智能焊接机器人,锻造高质量发展硬核...
  2. ◎◎identity ,ident_current() ,scope_identity的区别
  3. ssh 连接服务器_使用 SSH Key 访问服务器
  4. vue通过class获取dom_.NET Core通过Json或直接获取图形验证码(务必收藏备用)
  5. requestPermissions读写手机存储权限_泛圈云盘可为企业建立高效安全的云办公在线协同文档存储?...
  6. 总结几点Quartz的经验
  7. java 8 谓词_Java谓词– Java 8谓词
  8. 2020计算机顶级大会_2020年顶级公司和专业人员将使用40多种Web工具和服务
  9. vue 3.0记录Element UI 表单使用(看了隔壁小孩儿都会用的Element UI 表单组件使用)
  10. 【转载】KG-知识图谱初探
  11. 股票投资 - 如何看懂集合竞价
  12. 第六届360前端星计划_前端代码的自我修养
  13. GitHub 的 Fork 是什么意思?
  14. 曹图强:思科正成为全数字化转型基石
  15. webpack打包 - webpack篇
  16. 每天一道js基础面试题
  17. 润乾报表实现移动端报表展现
  18. 租用服务器送产权是什么意思
  19. 全国计算机二级考试有没有access,全国计算机二级考试Access试题
  20. 游戏开发中的坑之六 烘焙光照神器Bakery - GPU Lightmapper

热门文章

  1. acwing 1129. 热浪(spfa)
  2. Java并发 | 05.[应用] PID、PPID与端口号
  3. python split()截取一部分的字符串
  4. 滴滴顺风车乘客遇害事件反思:不应成陌生人社交平台
  5. matlab 图像归一化!!
  6. 加密流量分类-论文5:MATEC_A_lightweight_neural_network_for_online_encrypted_traffic
  7. 性能测试 理论初探(四),性能测试的指标是什么?web性能测试指标包括哪些?http性能测试指标关注 响应时间、吞吐量、服务器资源占用等
  8. 【刷题】2.BM3 链表中的节点每k个一组翻转
  9. 我的世界java版盔甲架_我的世界盔甲架怎么做?盔甲架用途教程
  10. 21美亚杯团队赛,镜像+解析,只做了pc+恶意+内存,希望与大家一起学习进步。