DataWhale | 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

字符串处理

Python中字符串是最常用的数据类型,使用 **’ 或 " 来创建字符串,[]截取字符串 **。

var1 = 'Hello Datawhale!'
var2 = "Python Everwhere!"
print("var1[-10:] \: ",var1[-10:])
print("var2[0:7]: ",var2[:7])

在这里插入图片描述

转义字符

符号含义
\反斜杠符号
单引号
"双引号
\n换行符
\t制表符

一些内置函数

方法含义
string.capitalize()把字符串的第一个个字符大写
string.isaipha()如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
string.title()返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
string.upper()转换 string 中的字母为大写
string.lower()转换 string 中的字母为小写
string.istitle()判断字符串是否"标题化"
string.isupper()判断 string 中的字母是否均大写
string.islower()判断 string 中的字母是否均小写

sum 函数展开二层嵌套列表将子元素合并1

★将嵌套列表中的 子元素 合并,可以用sum函数,第二个参数传入一个空列表[]即可
注意:sum函数的参数包括两个(iterable可迭代对象,start求和的初始值),sum会把可迭代对象内的元素加在start参数传入的初始值上。

因此,如果初始值是个列表,那么可迭代对象也必须要是个列表,且必须是嵌套列表,因为只有这个列表元素也是列表时,这些元素才能跟初始值列表相加
如:

data2['authors_parsed'][:7]
531                                     [[Pal, Mahesh, ]]
1408    [[Mokhov, Serguei A., , for the MARF R&D Group...
3231    [[Aholt, Chris, ], [Sturmfels, Bernd, ], [Thom...
Name: authors_parsed, dtype: object
sum(data2['authors_parsed'][:7],[])
[['Pal', 'Mahesh', ''],
 ['Mokhov', 'Serguei A.', '', 'for the MARF R&D Group'],
 ['Sinclair', 'Stephen', '', 'for the MARF R&D Group'],
 ['Clément', 'Ian', '', 'for the MARF R&D Group'],
 ['Nicolacopoulos', 'Dimitrios', '', 'for the MARF R&D Group'],
 ['Aholt', 'Chris', ''],
 ['Sturmfels', 'Bernd', ''],
 ['Thomas', 'Rekha', '']]

data2['authors_parsed'] 是可迭代对象,sum函数将data2['authors_parsed']的子元素进行合并。

join函数

函数:string.join() 具体作用如下:
join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。
如:

print('join前:',all_authors[:3])
# 拼接
authors_names = [' '.join(x) for x in all_authors[:3]]
print('\njoin后:',authors_names)
join前: [['Pal', 'Mahesh', ''], ['Mokhov', 'Serguei A.', '', 'for the MARF R&D Group'], ['Sinclair', 'Stephen', '', 'for the MARF R&D Group']]

join后: ['Pal Mahesh ', 'Mokhov Serguei A.  for the MARF R&D Group', 'Sinclair Stephen  for the MARF R&D Group']

value_counts函数

pandas包的内置函数,根据value进行计数

画图

  • 设置图的大小
plt.figure(figsize=(10, 6))
  • 设置坐标刻度
names = authors_names[0].value_counts().index.values[:10]
plt.yticks(range(0, len(names)), names)
  • 设置坐标轴名称
plt.ylabel('Author')
plt.xlabel('Count')
  • 画图
authors_names[0].value_counts().head(10).plot(kind='barh')
  • 结果
    在这里插入图片描述

  1. https://www.cnblogs.com/oceanicstar/p/9517159.html ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值