PyHubWeekly | 第四期:一款开源免费的学术论文下载工具
前言
PyHubWeekly每周定期更新,精选GitHub上优质的Python项目/小工具。
我把PyHubWeekly托管到了Github,感兴趣的可以搜索Github项目PyHubWeekly[1],如果喜欢,麻烦给个Star支持一下吧。此外,欢迎大家通过提交issue来投稿和推荐自己的项目~
本期为大家推荐GitHub上5个优质的Python项目,它们分别是:
-
SciencePlots
-
hickory
-
PyPaperBot
-
sweetviz
-
toolz
下面分别来介绍一下上述5个GitHub项目。
SciencePlots
Star:1.4k
SciencePlots[2]是一款用于科学绘图的Python工具包。
当我们看学术期刊、论文时会看到各种各样高大上的图形。会好奇,这么好看的图到底怎么画的?是不是很困难?
的确,现在很多Python绘图工具只是关注图形所表达的数据信息,而忽略了样式。
SciencePlots则弥补了这片空白,它是一款专门针对各种学术论文的科学绘图工具,例如,science、ieee等。
安装
# for latest commit
pip install git+https://github.com/garrettj403/SciencePlots.git
# for lastest release
pip install SciencePlots
使用
SciencePlots的使用非常简单,你只需要指定使用的样式、是否需要网格、背景,它就可以很容易的绘制出你想要的图形。
import matplotlib.pyplot as plt
plt.style.use('science')
hickory
Star:11
hickory[3]是一款调度Python脚本的命令行工具。
当我们开发一个程序,需要它定时被调度、定时执行时,每天定好闹钟,到点手动执行代码显然是不现实的。
你可以选择Docker、k8s这些工具去部署你的定时作业,但是,显然这种方案太重了。
hickory就是一种能够轻松实现定时调度Python脚本的工具,很轻量、很简单。
示例
首先,编写一个名为foo.py
的Python脚本:
import datetime
import time
stamp = datetime.datetime.now().strftime("%H:%M:%S")
time.sleep(5)
print(f"Foo - {stamp} + 5 seconds")
然后,在命令行下调度它,使它每10分钟执行一次:
hickory schedule foo.py --every=10minutes
这样,它就可以在后台执行,并按时调度。此外,你还可以使用hickory status
命令来查看它的状态。
PyPaperBot
Star:12
PyPaperBot[4]是一款可以从谷歌Scholar、Crossref和SciHub下载学术论文的Python工具。
PyPaperBot会尝试从谷歌学术、SciHub、作者相关的链接等不同来源去下载你想要的PDF学术论文,避免你再去逐个网站寻找你想要的论文的困境。
安装
pip install PyPaperBot
使用
你可以通过提供索引关键字、DOI等方式搜索你需要的论文,
python -m PyPaperBot --query="Machine learning" --scholar-pages=3 --min-year=2018 --dwn-dir="C:\User\example\papers"
sweetiviz
Star:943
sweetiviz[5]是一款简单、易用的数据对比、可视化工具。
我们在做大数据相关的项目,例如,计算机视觉、机器学习、数据分析等过程中,经常会用到数据对比,训练集与测试集对比、各个子集之间的对比...
通过人肉逐个去对比显然是不现实的,而且很浅显。
sweetiviz围绕数据对比进行构建,能够深度探索不同数据之间的关系,并输出HTML程序,便于我们对数据有一个全局的把握。
安装
pip install sweetviz
使用
生成对比分析报告,主要会用到3个函数:
-
analyze(...)
-
compare(...)
-
compare_intra(...)
下面通过一段代码来看一下它的使用:
import sweetviz as sv
my_report = sv.analyze(my_dataframe)
my_report.show_html() # Default arguments will generate to "SWEETVIZ_REPORT.html"
然后,它就会生成一个1080p的宽屏HTML报告,可以在浏览器中打开并查看,
toolz
Star:2.9k
toolz[6]是一款包含迭代、字典、函数的工具集合。
迭代、字典、函数,这里面每一类在Python中的使用频率都非常频繁。
我们经常会用到迭代器、字典、函数中的各种各样的功能,但是默认的数组、字典中却没有这些功能,这样我们就不可不再去实现一遍。例如,分组、去重、合并等待。
toolz就提供了这一组方便的工具集合,你不需要去重复实现一些功能就可以使用你意想不到的便利。
安装
pip install toolz
使用
下面就来看一下字计数的示例:
>>> def stem(word):
... """ Stem word to primitive form """
... return word.lower().rstrip(",.!:;'-\"").lstrip("'\"")
>>> from toolz import compose, frequencies, partial
>>> from toolz.curried import map
>>> wordcount = compose(frequencies, map(stem), str.split)
>>> sentence = "This cat jumped over this other cat!"
>>> wordcount(sentence)
{'this': 2, 'cat': 2, 'jumped': 1, 'over': 1, 'other': 1}
这里就用到了组合compose
和频率frequencies
的功能。
推荐阅读
参考资料
[1]
PyHubWeekly: Jackpopc/PyHubWeekly
[2]
SciencePlots: garrettj403/SciencePlots
[3]
hickory: maxhumber/hickory
[4]
PyPaperBot: ferru97/PyPaperBot
[5]
sweetiviz: fbdesignpro/sweetviz
[6]
toolz: pytoolz/toolz
上一篇: 一步步自定义下拉刷新上拉加载——自定义简单的刷新组件
下一篇: 软帝实训周报(2)