一、任务说明
论⽂代码统计,统计所有论⽂出现代码的相关统计。
二、使用步骤
1.引入库
import json
import re
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
2.读入数据
代码如下(示例):
data = []
with open('arxiv-metadata-oai-snapshot.json','r') as f:
for idx,line in enumerate(f):
if idx >= 50000:
break
d = json.loads(line)
d = {'abstract':d['abstract'],'categories':d['categories'],'comments':d['comments']}
data.append(d)
data = pd.DataFrame(data)
3.数据预处理
运用正则化
data['page'] = data['comments'].apply(lambda x : re.findall('\d+ pages',str(x)))
#print(data.head())
data = data[data['page'].apply(len)>0]
#print(data['page'].head())
#print(data.head())
data['page_num'] = data['page'].apply(lambda x : re.findall('\d+',str(x)))
print(data.head())
data['page_num2'] = data['page_num'].apply(lambda x : float(x[0]))
print(data.head())
# data['page_num'] = data['page'].apply(lambda x: float(x[0].replace(' pages',
# '')))
# print(data['page_num'].head())
print(data['page_num2'].describe().astype(int))
# 选择主要类别的论文
data['categories'] = data['categories'].apply(lambda x : x.split(' ')[0])
data['categories'] = data['categories'].apply(lambda x : x.split('.')[0])
print(data['categories'][0:5])
4.图表展示
4.1 统计各类别论文的平均数
plt.figure(figsize=(12,6))
# 方案一
data_new = data.groupby(['categories'])['page_num2'].mean()
print(data_new.head())
plt.bar(data_new.index,data_new.values)
plt.xticks(rotation=90)
# 方案二
#data.groupby(['categories'])['page_num2'].mean().plot(kind='bar')
#方案三
# data_new = data.groupby(['categories'])['page_num2'].mean().tolist()
# data_new2 = list(data.groupby(['categories'])['page_num2'].mean().index)
# plt.bar(data_new2,data_new)
# plt.xticks(rotation=90)
plt.show()
图表展示如下:
总结
1、正则化函数使用
2、lambda函数应用,被称为万能函数
3、matplotlib绘图的熟练应用