DataWhale | 学术前沿趋势分析 | Task1 论文数据统计 | 知识点

总结

此次学习任务,主要包含从文件读取数据和从网页抓取数据两种数据获取方式;并使用DataFrame和正则表达式对数据进行处理,最后对数据进行可视化处理。

文件读取

  • open函数
    open(name|path,mode)

    name|path :为文件名或文件路径;
    mode:打开文件的模式,分为只读(r、r+)、只写(w、w+)、追加(a、a+)等。

  • file对象方法

    fille.read([size]) # size指定为读取文件的大小,若未指定则返回整
    file.readline() # 返回一行
    file.readlines([size]) # 返回size行数据,未指定则返回全部行
    for line in f:print line # 通过迭代器访问
    f.write(“hello\n”) # 如果要写入字符串以外的数据,先将他转换为字符串。
    f.tell() # 返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)。
    f.seek(偏移量,[起始位置]) # 用来移动文件指针。偏移量: 单位为字节,可正可负;起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾
    f.close() #关闭文件

  • With语句

    使用以上语句进行文件读取时,可能出现以下问题:

    • 忘记关闭文件句柄;(若不及时关闭文件句柄,可能造成对文件操作的失败
    • 文件读取数据发生异常时,没有进行处理;(造成程序中断,代码鲁棒性差)

    with语句可以解决以上两个问题。

    with open("arxiv-metadata-oai-2019.json", 'r') as f
    
  • json文件的读取

json包用于处理json文件

json.loads() # 将json数据处理成数组

数据预处理

  • pandas.DataFrame() 将数据由List转换成DataFrame类型,方便使用pandas进行数据处理及分析;
  • pandas.describe() 返回DataFrame的统计量,观察数据的大小、波动趋势等。
  • split() 通过指定分隔符对字符串进行切片
  • 年、月、日提取 pd.to_datetime(data[“update_date”]).dt.year ,将update_date从str变为datetime格式,并提取处year
  • 根据条件提取行数据 data[data[“year”] >= 2019]
  • 数据重新编号:pandas.reset_index()
  • data1.merge(data2,on,how) data1和data2做数据合并,并以on指定列,how指定方式做连接;
  • data.groupby(“group_name”).agg({“id”:“count”}) 分组后去计数值
  • data1.sort_values() 排序

网络数据爬取

  • 包:requests 此部分参考资料

  • 主要方法:
    在这里插入图片描述

  • 对象属性:
    在这里插入图片描述

  • 包BeautifulSoup 为Python解释器,为用户提供不同的解析策略或速度

BeautifulSoup(html,‘lxml’) 以lxml形式解析html
BeautifulSoup.find() 返回找到的第一个标签
BeautifulSoup.find_all() 以list形式返回找到的所有标签

正则表达式

  • 正则表达式中的符号
    在这里插入图片描述

  • example

    re.sub(r"(.*)\((.*)\)",r"\2", " Astrophysics(astro-ph)") # 将字符串匹配为2部分,并取第二部分
    

数据可视化

import matplotlib.pyplot as plt #画图工具
fig = plt.figure(figsize=(15,12))
explode = (0, 0, 0, 0.2, 0.3, 0.3, 0.2, 0.1) 
plt.pie(_df["id"],  labels=_df["group_name"], autopct='%1.2f%%', startangle=160, explode=explode)
plt.tight_layout()
plt.show()

在这里插入图片描述

源码

来源于DataWhale开源社区

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值