目录

1.1任务说明

1.2数据集介绍

1.3数据集中选取所需要的数据字段

1.4数据处理步骤

1.5字符串处理

1.6代码实现过程及说明

1.6.1读取数据

1.6.2数据统计

总结

1.1任务说明

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

1.2数据集介绍

  • 数据集来源: https://www.kaggle.com/Cornell-University/arxiv
    -链接:https://pan.baidu.com/s/1OqUl13fZvLw6Jd49UdDM_Q
    提取码:bmd8
  • 数据集的格式如下
    • id :arXiv ID,可用于访问论文;
    • submitter :论文提交者;
    • authors :论文作者;
    • title :论文标题;
    • comments :论文页数和图表等其他信息;
    • journal-ref :论文发表的期刊的信息;
    • doi :数字对象标识符,https://www.doi.org;
    • report-no :报告编号;
    • categories :论文在 arXiv 系统的所属类别或标签;
    • license :文章的许可证;
    • abstract :论文摘要;
    • versions :论文版本;
    • authors_parsed :作者的信息;
  • 数据集实例
"root":{"id":string"0704.0001""submitter":string"Pavel Nadolsky""authors":string"C. Bal\'azs, E. L. Berger, P. M. Nadolsky, C.-P. Yuan""title":string"Calculation of prompt diphoton production cross sections at Tevatron and LHC energies""comments":string"37 pages, 15 figures; published version""journal-ref":string"Phys.Rev.D76:013009,2007""doi":string"10.1103/PhysRevD.76.013009""report-no":string"ANL-HEP-PR-07-12""categories":string"hep-ph""license":NULL"abstract":string"  A fully differential calculation in perturbative quantum chromodynamics is presented for the production of massive photon pairs at hadron colliders. All next-to-leading order perturbative contributions from quark-antiquark, gluon-(anti)quark, and gluon-gluon subprocesses are included, as well as all-orders resummation of initial-state gluon radiation valid at next-to-next-to leading logarithmic accuracy. The region of phase space is specified in which the calculation is most reliable. Good agreement is demonstrated with data from the Fermilab Tevatron, and predictions are made for more detailed tests with CDF and DO data. Predictions are shown for distributions of diphoton pairs produced at the energy of the Large Hadron Collider (LHC). Distributions of the diphoton pairs from the decay of a Higgs boson are contrasted with those produced from QCD processes at the LHC, showing that enhanced sensitivity to the signal can be obtained with judicious selection of events.""versions":[0:{"version":string"v1""created":string"Mon, 2 Apr 2007 19:18:42 GMT"}1:{"version":string"v2""created":string"Tue, 24 Jul 2007 20:10:27 GMT"}]"update_date":string"2008-11-26""authors_parsed":[0:[0:string"Balázs"1:string"C."2:string""]1:[0:string"Berger"1:string"E. L."2:string""]2:[0:string"Nadolsky"1:string"P. M."2:string""]3:[0:string"Yuan"1:string"C. -P."2:string""]]
}

1.3数据集中选取所需要的数据字段

由于本次的任务是对论文作者进行统计,我们并不需要数据集中的所有数据。我们选取与作者有关的数据,将选取数据集中三个字段作为本次数据分析对象。
分别为:
1、authors :论文作者;
2、categories :论文在 arXiv 系统的所属类别或标签;
3、authors_parsed :作者的信息;

1.4数据处理步骤

在原始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字段已经帮我们处理好了作者信息,可以直接使用该字段完成后续统计。
原始数据集中的categories 字段也可以直接使用该字段完成后续的统计。

1.5字符串处理

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

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 中的小写字母为大写

1.6代码实现过程及说明

1.6.1读取数据

import pandas as pd
import json
import matplotlib.pyplot as plt
data = []
with open('arxiv-metadata-oai-2019.json','r') as f:for idx,line in enumerate(f):# print(idx,line)d = json.loads(line)d = {'author':d['authors'],'categories':d['categories'], 'authors_parsed': d['authors_parsed']}data.append(d)#print(d)data = pd.DataFrame(data)
#print(data)

对我们需要的数据进行读取

1.6.1数据统计

接下来我们将进行以下任务

  • 统计所有作者姓名出现频率的Top10;
  • 统计所有作者姓(姓名最后一个单词)的出现频率的Top10;
  • 统计所有作者姓第一个字符出现的频率;
    为了节约计算时间,下面选择部分类别下的论文进行处理:
# 选择类别为cs.CV下面的论文
data2 = data[data['categories'].apply(lambda x: 'cs.CV' in x)]# 拼接所有作者
all_authors = sum(data2['authors_parsed'], [])

处理完成后all_authors变成了所有一个list,其中每个元素为一个作者的姓名。我们首先来完成姓名频率的统计。

# 拼接所有的作者
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')
plt.show()

绘制得到的结果:

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

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')

绘制得到的结果为:

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

统计所有作者姓第一个字符的频率:

authors_lastnames_first =[x[0] for x in authors_lastnames]
authors_lastnames_first=pd.DataFrame(authors_lastnames_first)
authors_lastnames_first[0].value_counts().head(10).plot(kind = 'barh')
# print(count)
namess = authors_lastnames_first[0].value_counts().index.values[:10]
_ = plt.yticks(range(0, len(namess)), namess)
plt.ylabel('author_first')
plt.xlabel('count')
plt.show()

结果如下:

从结果显示来看,作者姓名第一个字符出现频率最高的是L

总结

1、python的enumerate()函数


①描述

  • enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
  • Python 2.3. 以上版本可用,2.6 添加 start 参数。

②语法

enumerate(sequence, [start=0])

③参数

  • sequence–一个序列、迭代器或其他支持迭代对象。
  • start – 下标起始位置。

④返回值
返回enumerate(枚举)对象

⑤举例

>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
...     print i, element
...
0 one
1 two
2 three

2、python的apply()函数


①函数格式:
apply(func,*args,**kwargs)
②用途:
当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并肩元组或者字典中的参数按照顺序传递给参数
③解析:

  • args是一个包含按照函数所需参数传递的位置参数的一个元组,是不是很拗口,意思就是,假如A函数的函数位置为 A(a=1,b=2),那么这个元组中就必须严格按照这个参数的位置顺序进行传递(a=3,b=4),而不能是(b=4,a=3)这样的顺序
  • kwargs是一个包含关键字参数的字典,而其中args如果不传递,kwargs需要传递,则必须在args的位置留空
  • apply的返回值就是函数func函数的返回值
def function(a,b): print(a,b) apply(function,('good','better')) apply(function,(2,3+6)) apply(function,('cai','quan')) apply(function,('cai',),{'b':'caiquan'}) apply(function,(),{'a':'caiquan','b':'Tom'})

结果为:

('good', 'better')
(2, 9)
('cai', 'quan')
('cai', 'caiquan')
('caiquan', 'Tom')

3、python的sum()函数
①描述:
sum() 方法对序列进行求和计算。
②语法:

sum(iterable[, start])

③参数:

  • terable – 可迭代对象,如:列表、元组、集合。
  • start – 指定相加的参数,如果没有设置这个值,默认为0。
    ④实例
>>>sum([0,1,2])
3
>>> sum((2, 3, 4), 1)        # 元组计算总和后再加 1
10
>>> sum([0,1,2,3,4], 2)      # 列表计算总和后再加 2
12
data = [['a','b',' '],['c','d',' '],['f','e',' ']],[['a','b',' '],['c','d',' '],['f','e',' ']]
c =sum(data,[])
print(c)

返回的结果为:

[['a', 'b', ' '], ['c', 'd', ' '], ['f', 'e', ' '], ['a', 'b', ' '], ['c', 'd', ' '], ['f', 'e', ' ']]

4、python的join()函数


函数:string.join()
Python中有join()和os.path.join()两个函数,具体作用如下:

  • join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
  • os.path.join(): 将多个路径组合后返回

①函数说明
1)join()函数
语法: ‘sep’.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串

2)os.path.join()函数
语法: os.path.join(path1[,path2[,…]])

返回值:将多个路径组合后返回

注:第一个绝对路径之前的参数将被忽略
实例如下:

1 #对序列进行操作(分别使用' '与':'作为分隔符)2   3 >>> seq1 = ['hello','good','boy','doiido']4 >>> print ' '.join(seq1)5 hello good boy doiido6 >>> print ':'.join(seq1)7 hello:good:boy:doiido
10 #对字符串进行操作
11
12 >>> seq2 = "hello good boy doiido"
13 >>> print ':'.join(seq2)
14 h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
15
17 #对元组进行操作
19 >>> seq3 = ('hello','good','boy','doiido')
20 >>> print ':'.join(seq3)
21 hello:good:boy:doiido
22
24 #对字典进行操作
26 >>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
27 >>> print ':'.join(seq4)
28 boy:good:doiido:hello
31 #合并目录
33 >>> import os
34 >>> os.path.join('/hello/','good/boy/','doiido')
35 '/hello/good/boy/doiido'

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

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

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

  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. java正则表达式课程_通过此免费课程学习正则表达式
  2. 01.Android之基础组件问题
  3. NLP分析技术的三个层面
  4. python培训班排行榜-深圳python培训机构排行榜
  5. C语言中main函数的研究,以及对代码断点调试的研究(王爽老师 汇编语言)
  6. 超经典解释什么叫网关
  7. 65个漂亮的WordPress博客主题
  8. OJ1083: 数值统计(多实例测试)(C语言)
  9. 使用elementUI的日期选择框,两选择框关联时间限值
  10. Linux学习——操作文件与目录
  11. Linux 查找进程与结束进程
  12. 文本每行的某列作为参数传递给别的程序
  13. 如何彻底删掉360安全卫士(全是干货!!!)
  14. Java Web学习网站
  15. 【雷达】基于粒子群算法优化综合微带天线阵列方向图附matlab代码
  16. 机械硬盘显示位置不可用无法访问介质受写入保护
  17. strcmp与strncmp与memcmp的区别
  18. pandas的is in和not in
  19. 谷歌扩展插件官方下载地址
  20. mysql存不了表情_mysql保存不了微信表情符emoji问题解决方案

热门文章

  1. 如何在PC端登录多个微信号?怎么操作免费多开电脑版微信?
  2. 2020杭州区块链国际周颁奖典礼丨致敬区块链贡献者
  3. 湖北农商行计算机岗位考哪些内容,2020湖北农商行考试内容是什么?
  4. java获取音频信息(比特率,声道,采样率),处理切割、合并音频
  5. img图片如何自适应盒子尺
  6. day19总结和作业
  7. java基础:继承的使用
  8. 微调Hugging Face中图像分类模型
  9. 如是我闻:人生的终极——智慧和自由
  10. 对业务分析师(BA)的基本理解(1)——职责