2021-01-16

DataWhale Task2/论文作者统计
任务说明

  • 任务主题:论文作者统计
  • 任务内容:使用Pandas读取并使用字符串操作
  • 任务结果:掌握Pandas字符串操作

字符串处理

方法说明
str.casefold()将字符串全部小写
str.capitalize()第一个字符串大写
str.join()字符串拼接
str.upper()小写转大写

具体代码

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 
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: 
                break 
             d = 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) 
# 选择类别为cs.CV下面的论文 
data2 = data[data['categories'].apply(lambda x: 'cs.CV' in x)] # 拼接所有作者 
all_authors = sum(data2['authors_parsed'], []) 
# 拼接所有的作者 
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') 

在这里插入图片描述

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

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值