其他分享
首页 > 其他分享> > 数据挖掘实战-前沿分析-Task03

数据挖掘实战-前沿分析-Task03

作者:互联网

任务:统计包含代码的论文

本次任务的主要内容就是利用正则表达式在comments或abstract字段中取出具体的代码链接。
任务重点:正则表达式的学习和使用。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

import re
import json
import pandas as pd
import matplotlib.pyplot as plt

data = []
with open('arxiv-metadata-oai-snapshot.json', 'r') as f:
    for idx, line in enumerate(f):
        d = json.loads(line)
        d = {'abstract': d['abstract'], 'categories': d['categories'], 'comments': d['comments']}
        data.append(d)
        
data = pd.DataFrame(data)
data

在这里插入图片描述

data['pages'] = data['comments'].apply(lambda x: re.findall("[0-9]+ pages", str(x)))
data

在这里插入图片描述

data = data[data['pages'].apply(lambda x: len(x)>0) ]
data

在这里插入图片描述

data['pages'] = data['pages'].apply(lambda x: x[0].split(' ')[0])

在这里插入图片描述

data['categories'] = data['categories'].apply(lambda x: x.split(' ')[0]).apply(lambda x: x.split('.')[0])

在这里插入图片描述

plt.figure(figsize=(12,6))
data.groupby(['categories'])['pages'].mean().plot(kind='bar')

报错DataError: No numeric types to aggregate
错误原因:很可能是因为你指定的列里不能执行所对应的聚合操作,即有可能是数据类型的错误(比如目前数字列的类型的object),也有可能是该列中除了数字真的存在其他类型的数据。
在本次的例子中,是第一种情况,所以解决办法为:

data['pages'] = data['pages'].astype(int)

在这里插入图片描述

标签:comments,pages,数据挖掘,apply,Task03,data,前沿,categories,lambda
来源: https://blog.csdn.net/hahameier/article/details/112818863