【译Py】2017年10大Python库

简介: 原文作者:Tryolabs  原文链接年底啦,又该交年终总结了。对于码农来说,当然是关注今年新推出了哪些开源库,还有就是新近又有什么又流行又好用的好东西啦。
img_0a391e323af9b3034ade3b2be04a8c7d.png

原文作者:Tryolabs  原文链接

年底啦,又该交年终总结了。对于码农来说,当然是关注今年新推出了哪些开源库,还有就是新近又有什么又流行又好用的好东西啦。

前两年,我们在博客贴出了Python社区里流行的好作品。现在,为2017年做个总结。

这次的榜单充满了浓浓的机器学习风,请非机器学习库的大神见谅,不过,这次我们确实有点儿偏心:)。为了公平起见,请大家在评论区为本文没有提及的优秀软件摇旗呐喊吧。

废话少说,干货来了!

1Pipenv

第一名非它莫属,这是年初才发布一款工具,但它已经开始影响每个Python开发者的工作流了,现在连Python.org都官方推荐Pipenv作为支持库的管理工具!

Pipenv最开始不过是大神Kenneth Reitz周末搞的项目,本意是将npm或yarn这些包管理器的优势引入Python。以后再也不用virtualenv、virtualenvwrapper管理requirements.txt文件,更别提根据支持库的版本来确保复用性了(点击此处了解更多)。有了Pipenv,就不需要用命令行来增加、删除或更新支持库了,一个Pipfile文件就能搞定所有的支持库。这个工具会生成Pipfile.lock文件,确保编译的库都是最终版,还能避免因为漏掉一些边边角角的支持库而导致的bug。

当然,Pipenv还有其他不少好功能,它的文档也很赞。赶紧去了解一下,用它来支持你的Python项目吧,我们已经在Tryolabs用上啦:)

2PyTorch

img_d8908330a1c17ccebbca28c0881939a5.png

要说今年深度学习社区里面哪个库实现了大爆发,那必须是PyTorch,这个深度学习框架是Facebook今年才推出的。

PyTorch是基于流行一时的Torch框架构建和改进的,与Lua相比,它基于Python。近年来,越来越多的人开始用Python开展数据科学工作,PyTorch让深度学习更平易近人了。

值得注意的是,采用了全新动态计算图范式的PyTorch已经成为很多研究者的专用框架。使用TensorFlow、CNTK和MXNet等框架写代码时,必须先定义计算图,这个计算图指定了代码运行的所有操作,随后在框架中进行编译与优化,使它能进行GPU并行处理,运算速度更快,这种范式被称为静态计算图。它的好处在于可以利用各种优化,而且,因为构建与执行是分开进行的,此图一旦被构建即可在不同设备上运行。然而,对于诸如自然语言处理等任务,其工作量是可变的,将图片应用于算法前,可以将图片调整为固定尺寸,但是无法将不同长度的句子进行类似的处理。PyTorch和动态图的优势在于可在代码中使用标准Python控制指令,在执行指令时定义动态图,这就给了你更多自由,对于多任务,这点至关重要。

和其他现代深度学习框架一样,PyTorch还可以进行梯度计算,它的运行速度极快,还能扩展,既然如此,还不赶紧试试?

3Caffe2

img_84c2c7569c98e1b797fa091047a3b31e.png

听上去有些不可思议,但Facebook今年确实还发布了另一款重磅深度学习框架。

多年前,Caffe框架就已被广泛应用,并以无可比拟的性能和通过实战检测的代码库著称。然而,深度学习的最新趋势使得这个框架在某些方向陷入了停滞。Caffe2试图将Caffe引入现代世界。

它支持分布式训练及部署,包括多种移动平台、最新的CPU与CUDA适配的硬件。PyTorch更适合研究,Caffe2则适用于Facebook那种大规模部署。

还可以了解一下ONNX(微软与Facebook共同推出的开源项目,全称为Open Neural Network Exchange”) 近期的努力。用PyTorch构建和训练模型,再用Caffe2进行部署,是不是挺棒?

4Pendulum

img_3dfef651f0287dc634320d33b9ba8e03.png

去年,Arrow荣登本榜,这个库可以让Python更简单地处理datetimes。今年,轮到Pendulum了。

Pendulum的一大优势是内嵌式取代Python的datetime类,可以轻易地将它整合进已有代码,并且只在需要的时候才进行调用。作者精心调校了时区,确保时区准确,让每个实例都对能区分时区,默认使用UTC。还有就是提供了扩展的timedelta,使datetime计算更加容易。

与其他库不同,它提供了可预测行为的API,这样就可以知道后面会发生什么。如果正开发使用datetimes的复杂项目,这个库能让你更轻松!想要了解更多,请查阅文档

5Dash

img_c7d3467e99948a62095bce3baf969ed3.png

从事数据科学工作,少不了使用Pandas、scikit-learn这些Python生态系统中的利器,还有就是控制工作流的Jupyter Notebooks,毋庸置疑,大家都爱用这些工具。但是,要想将工作成果分享给不会用这些工具的人,那该怎么办?怎么才能构建一个人人都能够轻松上手的界面,操控数据和可视化?以前,为实现这一目的,需要一个精通Javascript的专职前端团队来搭建GUI,以后就用不着啦。

今年发布的Dash是在纯Python环境中构建数据可视化Web APP的开源库。该库基于Flask、Plotly.js和React构建,提供抽象层,无需学习上述框架即可快速上手开发。它在浏览器中进行渲染和响应,因此还适用移动端。

如果你想知道Dash都能实现什么效果,这个样例库可以让你大饱眼福。

6PyFlux

很多Python库都适用于数据科学和机器学习,但当数据点是随着时间进化的矩阵时,比如股价或从设备获取的测量数据等,这就是另一回事儿了。

PyFlux是专门处理时间序列的Python开源库。时间序列是统计学与计量经济学的子域,其目标是描述时间序列行为(主要是关于潜在成分或利息特征),并且预测未来它们如何演化。

PyFlux允许通过概率方式进行时间序列建模,并且实现了几个像GARCH这样的现代时间序列模型。是个不错的好东西。

7Fire

做项目的时候经常需要制作命令行界面(Command Line Interface~CLI)。除了传统的argparse,Python还有类似click或docopt等工具。谷歌今年发布的Fire,使用另一个视角来解决同样的问题。

Fire是一个为任意Python项目自动生成命令行界面的开源库。请注意,重点是自动构建命令行界面,基本上不用再写代码或文档说明啦。只要调用一个Fire方法,把它传输给需要生成命令行界面的内容即可,比如,函数、对象、类、字典,就算没有参数都可以,这样Fire就会为所有代码生成一个命令行界面(CLI)。

请仔细阅读此指南,通过例子理解它如何运作。密切关注这个库,它绝对能给你节省不少时间。

8imbalance-learn

理想状态下,我们有均衡的数据集可以用来训练模型,一切都很如意。可惜,真实世界不是这样的,现实任务更多是非均衡数据。比如,在预测伪造信用卡交易时,预期超过99.9%的绝大多数交易是合法的。如果只是训练朴素机器学习算法会让你很糟心,因此需要格外关注这类数据集。

好在这个问题已经解决了,还有各种不同的技术解决方案。Imbalanced-learn 这个Python包提供了多种技术解决方案,可以让开发工作变得更轻松。它与scikit-learn兼容,并且是scikit-learn-contrib项目的一部分。有用!

9FlashText

一般来说,查找或替换文本可以使用正则表达式。正则表达式能妥妥的完成这项任务。但是,需要查找几千个术语时,正则表达式就慢死了。

FlashText能够更好地解决这个问题。在作者最初的基准测试中,它大幅提高了整个操作运行时间,从5天缩减到5分钟。

FlashText的美妙之处在于不论查找多少术语,其运行时间都是一样的,而正则表达式的运行时间则会随着术语数量的增加而线性增加。

FlashText证明了算法和数据结构设计的重要性,由此可知,即便是简单的问题,更好的算法也可以比更强的CPU有效。

10Luminoth

声明:本库是由Tryolab研发中心开发的。

当今世界图片满天飞,一些APP急需理解这些图片的内容。多亏深度学习技术的发展,图像处理技术也取得了长足的进步。

Luminoth是基于TensorFlow和Sonnet构建的计算机视觉处理工具箱。目前,它通过快速R-CNN模型支持对象检测。

Luminoth不仅实现了这个特定模型,它还是基于模块化构建的,可以扩展。因此,自定义现有组件或结合新的模型来解决复杂问题是可行的,好好复用这些代码吧。在构建深度学习模型时,它提供了必要的开发工具:转换图像数据为适用的格式,以供数据管道(TensorFlow的tfrecords)处理,进行数据增强,在一个或多个GPU上进行训练(在处理大型数据集时,必须使用分布式训练),运行评估指标,轻松地在TensorFlow中实现可视化,通过简单的API或浏览器界面部署训练模型,供人操作。

还有,Luminoth可以很简单地整合谷歌云机器学习引擎,就算你没有强大的GPU,也可以和在本机一样,轻松一个指令就能在云端进行模型训练。

如果你对此感兴趣,可以阅读发布博文或观看我们在ODSC上的访谈视频来了解更多信详情。

更多优秀库:这些也不错

PyVips

可能你从没听说过libvips这个库,这么说吧,它是个像Pillow或ImageMagick这样的图像处理库,并且支持很多图片格式。然而,和其他库相比,libvips更快,占用内存更少。比如说,基准测试显示它比ImageMagick快3倍,占用内存仅为1/15。有关libvips的优势,请点此查阅

PyVips是近期发布的Python版libvips,兼容Python2.7和3.6,还有PyPy。使用pip安装,内嵌式兼容绑定的老版本,无需修改代码。

如果在APP中进行图像处理,那一定要关注它。

Requestium

声明:本库为Tryolabs发布。

有时,你可能会在网上实现一些自动化操作。比如抓取网站,进行应用测试,或在网上填表,但又不想使用API,这时自动化就变得很必要。Python提供了非常优秀的Requests库可以辅助进行这些操作。可惜,很多网站采用基于JavaScript的重客户端,这就意味着Requests获取的HTML代码中根本就没有用来自动化操作的表单,更别提自动填表了!它取回的基本上都是React或Vue这些现代前端库在浏览器中生成的空DIV这类的代码。

虽然可以通过反向工程处理JavaScript生成的代码,但这需要花几个小时来编译。处理这些丑陋的JS代码,谢谢,还是算了吧。还有一个方法就是使用Selenium库,允许以程序化的方式和浏览器进行交互,并运行JavaScript代码。用了这个库就没什么问题了,但它比占用资源极少的Requests慢太多了。

如果能以Requests为主,只在需要Selenium的时候才无缝调用,这样不是更好?看看Requestium吧,它以内嵌方式取代Requests,而且干的不错。它整合了Parsel,用它编写的页面查询元素选择器代码特别清晰,它还为诸如点击元素和在DOM中渲染内容这些通用操作提供了帮助。又一个网页自动化省时利器!

skorch

喜欢scikit-learn的API,但又得用PyTorch干活儿?别担心,skorch这个打包器为PyTorch提供了像sklearn一样的界面。只要你熟悉这些库,一定会觉得它的句法直白易懂。有了skorch,就可以将一些代码抽象化,从而把精力集中在真正重要的事上,比如干点儿数据科学的事儿。

结论

今年!如果你认为还有别的库也可以上榜,赶紧在去评论区里发表意见吧,这世界变化太快,我们也有些跟不上潮流啦。最后,再次感谢社区中每个人所做的贡献!

最后,别忘了订阅我们的简报,不要错过我们的机器学习内容哦。

相关文章
|
13天前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
1天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
12 5
|
9天前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
23 3
|
22天前
|
Shell Python
Python 的 os 库的应用实例
Python 的 os 库的应用实例
19 3
|
22天前
|
Linux Python Windows
Python sys 库的应用实例
Python sys 库的应用实例
24 3
|
14天前
|
Linux Android开发 开发者
【Python】GUI:Kivy库环境安装与示例
这篇文章介绍了 Kivy 库的安装与使用示例。Kivy 是一个开源的 Python 库,支持多平台开发,适用于多点触控应用。文章详细说明了 Kivy 的主要特点、环境安装方法,并提供了两个示例:一个简单的 Hello World 应用和一个 BMI 计算器界面。
23 0
|
19天前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
46 0
|
19天前
|
算法 数据可视化 计算机视觉
Python中医学图像处理常用的库
在Python中,医学图像处理常用的库包括:ITK(及其简化版SimpleITK)、3D Slicer、Pydicom、Nibabel、MedPy、OpenCV、Pillow和Scikit-Image。这些库分别擅长图像分割、配准、处理DICOM和NIfTI格式文件、图像增强及基础图像处理等任务。选择合适的库需根据具体需求和项目要求。
34 0
|
19天前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
43 0
|
19天前
|
计算机视觉 Python
Python中Pillow库的常见用法和代码示例
Pillow是Python中广泛使用的图像处理库,支持丰富的图像操作功能,包括但不限于打开、保存、缩放、裁剪、旋转、调色等。本文通过一系列示例介绍Pillow的基本用法,涵盖图像的加载与显示、尺寸调整、裁剪与旋转、亮度调整、格式转换、滤镜应用、图像合成及像素级操作等。首先需通过`pip install pillow`安装库,随后可通过导入`PIL.Image`等模块开始图像处理任务。无论是初学者还是进阶用户,都能从Pillow提供的强大功能中获益。
19 0