Datawhale组队学习21期_学术前沿趋势分析Task2_论文作者统计
任务说明
任务主题:论文作者统计,统计所有论文作者出现评率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_论文作者统计相关推荐
- 学习分享:学术前言趋势分析2—论文作者统计
文章目录 1.数据处理 2.字符串处理 3.具体代码 任务内容:论文作者的统计.使用 Pandas 读取数据并使用字符串操作: 任务成果:学习 Pandas 的字符串操作 1.数据处理 在原始arxi ...
- 大数据处理技术导论(1) | Datawhale组队学习46期
文章目录 前言 1. 大数据概述 1.1 数据量大 Volume 1.2 数据种类多 Variety 1.3 处理速度快 Velocity 1.4 价值密度低 Value 2. hadoop 2.1 ...
- 学习分享:学术前言趋势分析1—论文数据统计
文章目录 1.数据集介绍 2.代码学习心得 (1) split()函数 (2) 正则表达式 (3) 数据分析及可视化 3.具体代码实现 学习主题:论文数量统计,统计2019年全年,计算机各个方向论文数 ...
- 大数据处理技术导论(7) | Datawhale组队学习46期
文章目录 7. spark 理论学习总结 7.1 spark 与 hadoop 框架区别 7.2 spark 编程模型 RDD 7.3 spark 结构原理 2. spark 实战 项目地址 http ...
- 大数据处理技术导论(6) | Datawhale组队学习46期
文章目录 1. hive 概述 2. hive 与传统关系型数据库的对比 3. hive 数据类型 4. hive 数据模型 5. hive 实战 5.1 创建表 5.2 修改表 5.3 清空表.删除 ...
- 大数据处理技术导论(8) | Datawhale组队学习46期
文章目录 10. 1 面试题 10.1.1 hive外部表和内部表的区别 10.1.2 简述对Hive桶的理解? 10.1.3 HBase和Hive的区别? 10.1.4 简述Spark宽窄依赖 10 ...
- 学习分享:学术前言趋势分析3—论文代码统计
文章目录 1.数据处理步骤 2.正则表达式 3.具体代码实现 任务内容:使用正则表达式统计代码连接.页数和图表数据: 任务成果:学习正则表达式统计 1.数据处理步骤 在原始arxiv数据集中作者经常会 ...
- 第8期Datawhale组队学习计划
第8期Datawhale组队学习计划马上就要开始啦 这次共组织15个组队学习,涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类,难度系数分为低.中.高三档,可以按照需要参加 ...
- Datawhale组队学习周报(第040周)
本周报总结了从 11月15日至11月21日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. 第 31 期组队学习 ...
最新文章
- hql 语法与详细解释转
- eclipse怎样在线安装hibernate tools插件并使用
- tcp 和 dcp 的几大区别
- android抓包工具——使用fiddler4在安卓手机抓包
- Windows安装WSL进行机器学习(windows和Ubuntu同时使用)
- java中数组的返回值是什么类型_java基础学习:数组的常用操作与基础二维数组用法、及基本数据类型和引用数据类型赋值的区别...
- 继续ajax长轮询解决方案--递归
- 标准化工作导则2020_夯实标准化工作——标准化工作导则GB/T 1.12020培训会在水发兴业能源顺利举办...
- 力扣两数之和jAVA_力扣----1.两数之和(JavaScript, Java实现)
- python爬取2017年统计用区划代码和城乡划分代码(截止2017年10月31日)
- Java整型变量举例_java 整型常量和整型变量的问题
- springboot项目linux系统设置开机启动项(亲测可用)
- java 面试概念题 笔记
- 坚果投影仪陷入双11刷单漩涡?良性发展才是硬道理!
- 网络封包分析软件-WireShark简单抓包
- admi后台 vue_Vue+ElementUI的后台管理框架
- 卡尔曼滤波原理与工程实践
- 开源 | 全球首个批流一体机器学习平台 Alink
- Hibernate单向关联1-1
- css背景渐变、css文字渐变
热门文章
- BZOJ_1778_[Usaco2010_Hol]_Dotp_驱逐猪猡_(期望动态规划+高斯消元+矩阵)
- 什么是网桥?何为网桥?防火墙的端口防护是指什么?
- 笔记本式计算机处理器,最新的笔记本计算机处理器(CPU)性能排名
- 2021-09-02牛客网每日10题--前端
- 投票小程序制作开发有哪些步骤?投票小程序开发有哪些功能?
- java安卓计时器_如何在android中设置计时器
- GBU406-ASEMI整流扁桥GBU406
- Vue命令式弹窗组件如何实现?我很好奇
- ElasticSearch使用学习
- 蒙德里安森林算法_蒙德里安的格子画教案