2020 年最佳流行 Python 库 Top 10

Python中文社区

共 5079字,需浏览 11分钟

 ·

2021-01-06 19:54

2020年最热门的Python库有哪些?规则很简单。我们正在寻找的库满足以下条件:
  • 它于2020年推出或普及。
  • 自发布以来,一直得到很好的维护。
  • 它非常酷,您应该使用一下它。
免责声明:我们的选择在很大程度上受机器学习/数据科学库的影响,尽管其中某些库确实对非数据科学人士也同样受用。此外,尽管我们有10个主要选择,但我们还是决定增加一个新的“荣誉提名”部分,以便对我们发现但不能遗漏的其他第三方库一个公道。
这篇文章的精神是使这些库更为大众所知,并围绕我们可能已经错过的其他一些绝佳选择引发讨论(在评论中或其他地方)。
因此,事不宜迟,让我们开始吧。
1、Typer
https://github.com/tiangolo/typer

您不一定总是需要编写 CLI 应用程序,但这样做可以省不少事。在 FastAPI(https://fastapi.tiangolo.com/) 取得巨大成功之后,tiangolo (https://twitter.com/tiangolo) 使用了相同的原理为我们带来了 Typer:一个新的库,使您可以利用Python 3.6+的类型提示功能来编写命令行界面。
该设计的确使Typer脱颖而出。除了确保代码已正确记录之外,您还可以轻松进行CLI界面的验证。通过使用类型提示,您可以在Python编辑器(如VS Code)中获得自动补全功能,这将提高您的生产率。
为了增强其功能,Typer内核是基于Click(https://click.palletsprojects.com/en/7.x/)的,而Click则是众所周知,并且经过了严格的测试。这意味着它可以利用其所有好处,如社区和插件,同时以更少的样板代码从简单开始,并根据需要变得复杂。
Typer文档(https://typer.tiangolo.com/)确实很有帮助,并且应该成为其他项目的典范。绝对不能错过!

2. Rich
https://github.com/willmcgugan/rich
顺着CLI的主题,谁说终端应用程序必须是纯白色,或者如果您是真正的黑客,则必须是绿色,是黑色?
是否要在终端输出中添加颜色和样式?毫不费力地显示漂亮的进度条?Markdown?表情符号?Rich可以实现上述所有功能。查看下面示例截图可以进一步了解:

Rich 绝对是一个可以将使用终端应用程序的体验提升到全新水平的库。

3. Dear PyGui
https://github.com/hoffstadt/DearPyGui
尽管如我们所见,终端应用程序可以很漂亮,但有时还不够,您需要一个真正的GUI。目前流行的Dear ImGui C ++项目(https://github.com/ocornut/imgui)的Python分支Dear PyGui正是为此而诞生。
Dear PyGui利用了在视频游戏中广为流行的即时模式范例(immediate mode paradigm)。这基本上意味着动态GUI是逐帧独立绘制的,无需保留任何数据。这使得该工具与其他Python GUI框架有着根本不同。它具有高性能,并使用计算机的GPU来促进高度动态界面的构建,这在工程,仿真,游戏或数据科学应用程序中经常用到。

Dear PyGui可以在没有陡峭的学习曲线的情况下使用,并且可以在Windows 10(DirectX 11),Linux(OpenGL 3)和MacOS(Metal)上运行。

4. PrettyErrors
https://github.com/onelivesleft/PrettyErrors
大道至简,这是一个值得让您思考的库:以前没人想过这是怎么回事?
PrettyErrors只做一件事并且做得很好。在支持彩色输出的终端中,它将隐秘的堆栈轨迹转换成更适合用微弱的人眼解析的东西。无需再扫描整个屏幕来查找异常的原因……您现在就可以一目了然!


5. Diagrams
https://github.com/mingrammer/diagrams
我们程序员喜欢用代码解决问题。但是有时,我们需要向其他同事解释复杂的架构设计。传统上,我们使用GUI工具,在其中我们可以处理图表和可视化以放入演示文稿和文档。但这不是唯一的方法。
Diagrams使您无需任何设计工具即可直接在Python代码中绘制云系统架构。它包含的图标支持多个云提供商(包括AWS,Azure,GCP)。这使创建箭头和组非常容易。真的,只有几行代码!

基于代码的图表的最好之处是什么?您可以通过git使用版本控制来掌控进度!

6. Hydra 和 OmegaConf
https://hydra.cc/ 
https://github.com/omry/omegaconf
在进行机器学习项目的研究和实验时,总是有无数的设置可以尝试。在非平凡解的应用程序中,配置管理会变得相当复杂,非常快。有一种结构化的方式来处理这种复杂性不是很好吗?
Hydra是一种工具,可让您以可组合的方式构建配置,并从命令行或配置文件覆盖某些部分。
为了说明可以通过该库简化的一些常见任务,假设有一个我们正在尝试的模型的基本体系结构,以及它的多种变体。使用Hydra,可以定义基本配置,然后运行多个作业,并进行以下更改:
python train_model.py variation=option_a,option_b
├── variation
│   ├── option_a.yaml
│   └── option_b.yaml
├── base.yaml
└── train_model.py
Hydra 的表亲 OmegaConf 为分层配置系统的基础提供了一致的API,并支持YAML,配置文件,对象和CLI参数等不同来源。
这是21世纪进行配置管理的必备条件!

7. PyTorch Lightning
https://github.com/PyTorchLightning/PyTorch-lightning
每一种提高数据科学团队生产力的工具都值得鼓励。没有理由让从事数据科学项目的人每次都重新发明轮子,反复思考如何更好地组织其项目中的代码,使用维护得不好的“ PyTorch 样板”,或者使用更高级别的抽象功能。
PyTorch Lightning 通过将科学与工程分离而有助于提高生产率。从某种意义上说,它使您的代码更简洁,有点像 TensorFlow 的 Keras。但是它仍然是PyTorch,您可以访问所有常用的API。
该库可帮助团队利用围绕组织的软件工程的良好实践和明确的组件职责来构建可轻松扩展,以在多个GPU,TPU和CPU上进行训练高质量代码。

一个可以帮助数据科学团队的初级成员产生更好结果的库,但是,由于整体生产力的提高,而且没有放弃控制权,更有经验的成员会喜欢它。

8. Hummingbird
https://github.com/microsoft/hummingbird

并非所有的机器学习都是深度学习。通常,您的模型由scikit-learn中实现的更传统的算法(例如,Random Forest)组成,或者您使用诸如流行的LightGBM和XGBoost之类的梯度增强方法。
但是,深度学习领域正在发生许多进步。像PyTorch这样的框架正在以惊人的速度发展,并且硬件设备已经过优化,可以更快地运行张量计算并降低功耗。如果我们可以利用所有这些工作来更快、更高效地运行传统方法,那岂不是很好吗?
这是Hummingbird的用武之地。微软提供的这个新库可以将训练有素的传统ML模型编译为张量计算。这很棒,因为它使您无需重新设计模型。
到目前为止,Hummingbird支持转换为PyTorch,TorchScript,ONNX和TVM,以及各种ML模型和矢量化器。推理API也与Sklearn范例非常相似,可让您重用现有代码,但将实现更改为Hummingbird生成的代码。这是一个值得关注的工具,因为它获得了对模式模型和格式的支持!

9. HiPlot
https://github.com/facebookresearch/hiplot
几乎每个数据科学家在职业生涯中的某个时候都曾处理过高维数据。不幸的是,人脑没有足够的连线直观地处理这种数据,因此我们必须诉诸其他技术。
今年初,Facebook发布了HiPlot,这是一个库,可使用并行绘图和其他图形方式来表示信息,从而帮助发现高维数据中的相关性和模式。该概念已在其发布博客文章中进行了解释,但基本上,它是一种可视化和过滤高维数据的好方法。

HiPlot具有交互性,可扩展性,您可以从标准Jupyter笔记本电脑或通过其自己的服务器使用它。

10. Scalene
https://github.com/emeryberger/scalene
随着Python库生态系统变得越来越复杂,我们发现自己正在编写越来越多的依赖C扩展和多线程的代码。在衡量性能时,这成为一个问题,因为CPython内置的探查器无法正确处理多线程和本机代码。
那就是Scalene进行救援的时候。Scalene是用于Python脚本的CPU和内存探查器,能够正确处理多线程代码并区分运行Python和本机代码所花费的时间。无需修改代码,只需要在命令行中使用scalene运行脚本,脚本就会为您生成文本或HTML报告,显示代码每一行的CPU和内存使用情况。


荣誉提名:
  • Norfair
https://github.com/tryolabs/norfair
Norfair是一个可定制的轻量级Python库,用于实时2D对象跟踪。使用Norfair,您只需几行代码就可以为任何检测器添加跟踪功能。
  • quart
https://gitlab.com/pgjones/quart/
一个兼容Flask API的异步Web框架。一些现有的Flask扩展程序甚至可以直接使用!
  • alibi-detect
https://github.com/SeldonIO/alibi-detect
监视生产模型中的异常值和分布漂移,以获取表格数据,文本,图像和时间序列。
  • einops
https://github.com/arogozhnikov/einops
einops于2020年普及,可让您编写张量操作以获得可读且可靠的代码,并支持numpy,PyTorch,TensorFlow等。
  • stanza
https://github.com/stanfordnlp/stanza
斯坦福提供的支持60多种语言的自然语言处理工具。针对不同任务的多个可用的预训练模型。
  • datasets
https://github.com/huggingface/datasets
来自HuggingFace的轻量级可扩展库,可轻松共享和访问数据集和自然语言处理(NLP)等评估指标
  • pytorch-forecasting
https://github.com/jdb78/pytorch-forecasting
借助神经网络简化了针对实际案例和研究的时间序列预测。
  • sktime
https://github.com/alan-turing-institute/sktime
提供了专用的时间序列算法和scikit-learn兼容工具,用于构建,调整和评估组合模型。还要检查其配套的sktime-dl软件包,以获取基于深度学习的模型。
  • netron
https://github.com/lutzroeder/netron
神经网络,深度学习和机器学习模型的可视化工具。支持的格式比我所知道的还要多。
  • pycaret
https://github.com/pycaret/pycaret
包装了几个常见的ML库,使您的工作效率大大提高,节省了数百行代码。
  • tensor-sensor
https://github.com/parrt/tensor-sensor
通过改善错误消息并提供可视化效果,帮助您正确确定张量数学的尺寸。

更多阅读



Top 10 沙雕又有趣的 GitHub 程序


5分钟掌握 Python 对象的引用


程序运行慢?你怕是写的假 Python

特别推荐





点击下方阅读原文加入社区会员

浏览 6
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报