任务说明

任务主题:论文作者统计,统计所有论文作者出现评率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中所有的字符都使用字符串存储,可以使用方括号来截取字符串,如下实例: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

具体代码实现以及讲解

数据读取


# 导入所需的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 #画图工具
data = []
with open("D:\\arxiv-metadata-oai-2019.json\\arxiv-metadata-oai-2019.json", 'r') as f: for idx, line in enumerate(f): d = json.loads(line)d = {'authors': d['authors'], 'categories': d['categories'], 'authors_parsed': d['authors_parsed']}data.append(d)data = pd.DataFrame(data)
data
authors categories authors_parsed
0 Sung-Chul Yoon, Philipp Podsiadlowski and Step... astro-ph [[Yoon, Sung-Chul, ], [Podsiadlowski, Philipp,...
1 B. Dugmore and PP. Ntumba math.AT [[Dugmore, B., ], [Ntumba, PP., ]]
2 T.V. Zaqarashvili and K Murawski astro-ph [[Zaqarashvili, T. V., ], [Murawski, K, ]]
3 Sezgin Aygun, Ismail Tarhan, Husnu Baysal gr-qc [[Aygun, Sezgin, ], [Tarhan, Ismail, ], [Baysa...
4 Antonio Pipino (1,3), Thomas H. Puzia (2,4), a... astro-ph [[Pipino, Antonio, ], [Puzia, Thomas H., ], [M...
... ... ... ...
170613 V. A. Sautenkov, M. D. Lukin, C. J. Bednar, G.... quant-ph [[Sautenkov, V. A., ], [Lukin, M. D., ], [Bedn...
170614 Wen-Xiu Ma, Benno Fuchssteiner solv-int nlin.SI [[Ma, Wen-Xiu, ], [Fuchssteiner, Benno, ]]
170615 J C Eilbeck, V Z Enol'skii, V B Kuznetsov, D V... solv-int nlin.SI [[Eilbeck, J C, ], [Enol'skii, V Z, ], [Kuznet...
170616 M. Adler, T. Shiota and P. van Moerbeke solv-int adap-org hep-th nlin.AO nlin.SI [[Adler, M., ], [Shiota, T., ], [van Moerbeke,...
170617 D.B. Fairlie and A.N. Leznov solv-int nlin.SI [[Fairlie, D. B., ], [Leznov, A. N., ]]

170618 rows × 3 columns

数据统计

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

  • 统计所有作者姓名出现频率的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')
Text(0.5, 0, 'Count')

接下来统计姓名姓,也就是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')
Text(0.5, 0, 'Count')

统计所有作者姓第一个字符的频率(以100举例,可看出中国姓氏排名靠前)

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(100).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')
Text(0.5, 0, 'Count')

Datawhale组队学习21期_学术前沿趋势分析Task2_论文作者统计相关推荐

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

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

  2. 大数据处理技术导论(1) | Datawhale组队学习46期

    文章目录 前言 1. 大数据概述 1.1 数据量大 Volume 1.2 数据种类多 Variety 1.3 处理速度快 Velocity 1.4 价值密度低 Value 2. hadoop 2.1 ...

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

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

  4. 大数据处理技术导论(7) | Datawhale组队学习46期

    文章目录 7. spark 理论学习总结 7.1 spark 与 hadoop 框架区别 7.2 spark 编程模型 RDD 7.3 spark 结构原理 2. spark 实战 项目地址 http ...

  5. 大数据处理技术导论(6) | Datawhale组队学习46期

    文章目录 1. hive 概述 2. hive 与传统关系型数据库的对比 3. hive 数据类型 4. hive 数据模型 5. hive 实战 5.1 创建表 5.2 修改表 5.3 清空表.删除 ...

  6. 大数据处理技术导论(8) | Datawhale组队学习46期

    文章目录 10. 1 面试题 10.1.1 hive外部表和内部表的区别 10.1.2 简述对Hive桶的理解? 10.1.3 HBase和Hive的区别? 10.1.4 简述Spark宽窄依赖 10 ...

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

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

  8. 第8期Datawhale组队学习计划

    第8期Datawhale组队学习计划马上就要开始啦 这次共组织15个组队学习,涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类,难度系数分为低.中.高三档,可以按照需要参加 ...

  9. Datawhale组队学习周报(第040周)

    本周报总结了从 11月15日至11月21日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. 第 31 期组队学习 ...

最新文章

  1. hql 语法与详细解释转
  2. eclipse怎样在线安装hibernate tools插件并使用
  3. tcp 和 dcp 的几大区别
  4. android抓包工具——使用fiddler4在安卓手机抓包
  5. Windows安装WSL进行机器学习(windows和Ubuntu同时使用)
  6. java中数组的返回值是什么类型_java基础学习:数组的常用操作与基础二维数组用法、及基本数据类型和引用数据类型赋值的区别...
  7. 继续ajax长轮询解决方案--递归
  8. 标准化工作导则2020_夯实标准化工作——标准化工作导则GB/T 1.12020培训会在水发兴业能源顺利举办...
  9. 力扣两数之和jAVA_力扣----1.两数之和(JavaScript, Java实现)
  10. python爬取2017年统计用区划代码和城乡划分代码(截止2017年10月31日)
  11. Java整型变量举例_java 整型常量和整型变量的问题
  12. springboot项目linux系统设置开机启动项(亲测可用)
  13. java 面试概念题 笔记
  14. 坚果投影仪陷入双11刷单漩涡?良性发展才是硬道理!
  15. 网络封包分析软件-WireShark简单抓包
  16. admi后台 vue_Vue+ElementUI的后台管理框架
  17. 卡尔曼滤波原理与工程实践
  18. 开源 | 全球首个批流一体机器学习平台 Alink
  19. Hibernate单向关联1-1
  20. css背景渐变、css文字渐变

热门文章

  1. BZOJ_1778_[Usaco2010_Hol]_Dotp_驱逐猪猡_(期望动态规划+高斯消元+矩阵)
  2. 什么是网桥?何为网桥?防火墙的端口防护是指什么?
  3. 笔记本式计算机处理器,最新的笔记本计算机处理器(CPU)性能排名
  4. 2021-09-02牛客网每日10题--前端
  5. 投票小程序制作开发有哪些步骤?投票小程序开发有哪些功能?
  6. java安卓计时器_如何在android中设置计时器
  7. GBU406-ASEMI整流扁桥GBU406
  8. Vue命令式弹窗组件如何实现?我很好奇
  9. ElasticSearch使用学习
  10. 蒙德里安森林算法_蒙德里安的格子画教案