DevWeekly/docs/26-pyhubweekly.md

187 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 前言
PyHubWeekly每周定期更新精选GitHub上优质的Python项目/小工具。
我把PyHubWeekly托管到了Github感兴趣的可以**搜索Github项目**[PyHubWeekly](Jackpopc/PyHubWeekly)如果喜欢麻烦给个Star支持一下吧。此外**欢迎大家通过提交issue来投稿和推荐自己的项目**~
本期为大家推荐GitHub上5个优质的Python项目它们分别是
- **SciencePlots**
- **hickory**
- **PyPaperBot**
- **sweetviz**
- **toolz**
下面分别来介绍一下上述5个GitHub项目。
### SciencePlots
**Star1.4k**
[SciencePlots](garrettj403/SciencePlots)是一款用于科学绘图的Python工具包。
当我们看学术期刊、论文时会看到各种各样高大上的图形。会好奇,这么好看的图到底怎么画的?是不是很困难?
的确现在很多Python绘图工具只是关注图形所表达的数据信息而忽略了样式。
SciencePlots则弥补了这片空白它是一款专门针对各种学术论文的科学绘图工具例如science、ieee等。
**安装**
```shell
# for latest commit
pip install git+https://github.com/garrettj403/SciencePlots.git
# for lastest release
pip install SciencePlots
```
**使用**
SciencePlots的使用非常简单你只需要指定使用的样式、是否需要网格、背景它就可以很容易的绘制出你想要的图形。
```python
import matplotlib.pyplot as plt
plt.style.use('science')
```
![fig1 (1)](https://gitee.com/sharetech_lee/blogimg/raw/master/imgs/fig1%20(1).jpg)
### hickory
**Star11**
[hickory](maxhumber/hickory)是一款调度Python脚本的命令行工具。
当我们开发一个程序,需要它定时被调度、定时执行时,每天定好闹钟,到点手动执行代码显然是不现实的。
你可以选择Docker、k8s这些工具去部署你的定时作业但是显然这种方案太**重**了。
hickory就是一种能够轻松实现定时调度Python脚本的工具很轻量、很简单。
**示例**
首先,编写一个名为`foo.py`的Python脚本
```python
import datetime
import time
stamp = datetime.datetime.now().strftime("%H:%M:%S")
time.sleep(5)
print(f"Foo - {stamp} + 5 seconds")
```
然后在命令行下调度它使它每10分钟执行一次
```shell
hickory schedule foo.py --every=10minutes
```
这样,它就可以在后台执行,并按时调度。此外,你还可以使用`hickory status`命令来查看它的状态。
### PyPaperBot
**Star12**
[PyPaperBot](ferru97/PyPaperBot)是一款可以从谷歌Scholar、Crossref和SciHub下载学术论文的Python工具。
PyPaperBot会尝试从谷歌学术、SciHub、作者相关的链接等不同来源去下载你想要的PDF学术论文避免你再去逐个网站寻找你想要的论文的困境。
**安装**
```shell
pip install PyPaperBot
```
**使用**
你可以通过提供索引关键字、DOI等方式搜索你需要的论文
```shell
python -m PyPaperBot --query="Machine learning" --scholar-pages=3 --min-year=2018 --dwn-dir="C:\User\example\papers"
```
### sweetiviz
**Star943**
[sweetiviz](fbdesignpro/sweetviz)是一款简单、易用的数据对比、可视化工具。
我们在做大数据相关的项目,例如,计算机视觉、机器学习、数据分析等过程中,经常会用到数据对比,训练集与测试集对比、各个子集之间的对比...
通过人肉逐个去对比显然是不现实的,而且很浅显。
sweetiviz围绕数据对比进行构建能够深度探索不同数据之间的关系并输出HTML程序便于我们对数据有一个全局的把握。
**安装**
```shell
pip install sweetviz
```
**使用**
生成对比分析报告主要会用到3个函数
- analyze(...)
- compare(...)
- compare_intra(...)
下面通过一段代码来看一下它的使用:
```python
import sweetviz as sv
my_report = sv.analyze(my_dataframe)
my_report.show_html() # Default arguments will generate to "SWEETVIZ_REPORT.html"
```
然后它就会生成一个1080p的宽屏HTML报告可以在浏览器中打开并查看
![a](https://gitee.com/sharetech_lee/blogimg/raw/master/imgs/a.png)
### toolz
**Star2.9k**
[toolz](pytoolz/toolz)是一款包含迭代、字典、函数的工具集合。
迭代、字典、函数这里面每一类在Python中的使用频率都非常频繁。
我们经常会用到迭代器、字典、函数中的各种各样的功能,但是默认的数组、字典中却没有这些功能,这样我们就不可不再去实现一遍。例如,分组、去重、合并等待。
toolz就提供了这一组方便的工具集合你不需要去重复实现一些功能就可以使用你意想不到的便利。
**安装**
```shell
pip install toolz
```
**使用**
下面就来看一下字计数的示例:
```python
>>> 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个宝藏公众号【**七步编程**】专注于Python、AI、大数据领域内容分享。创作内容坚持原创与高质量发表内容已经被诸多公众号大V转发备受欢迎。现在关注后台回复关键**567**就可以获得我精心整理的机器学习、深度学习、Python、推荐系统等技术方向的干货
![image-20200829151145405](https://gitee.com/sharetech_lee/blogimg/raw/master/imgs/image-20200829151145405.png)