0%

2015年排名前10的Python开发库

来源:http://blog.tryolabs.com/2015/12/15/top-10-python-libraries-of-2015/
作者:Alan
翻译:Louis Xu

随着新的一年即将到来,我们常常坐下来思考到底2015年我们做了些什么。毋庸置疑,如果不是基于开源社区的伟大贡献,我们很多的项目不会像现在这样成功,更不会提供出如此多可靠的,经过实践检验的开发库。

似乎很多人都在写他们心目中排名前10的列表,当然我们也不能免俗。下面介绍的是我们在2015年使用过的10个最好的Python库,我们觉得有义务让大家都熟悉他们(以下排名不分先后)。我们也会避免介绍那些太过出名的库,诸如Django, Flask, Django Rest框架等,而是将重点放在那些不太为大家所熟知的开发库上。详情如下:

  1. jupyter
    试想一下,如果让一个画家在创作的时候不能立刻看到自己的画作,他的内心会如何抓狂。Jupyter Notebooks正是为了解决编写代码的时候遇到的类似问题。它使得代码,绘图和程序运行的结果可以更加直观地展现出来,而且它正越来越成为数据科学家们偏爱的工具库。所谓的Notebook就是代码和对应文档组合在一起的文档,基于这个特性,它是我们快速创建原型或者教程的得心应手的工具。
    尽管我们仅仅将jupyter用来编写Python代码,但是截至目前,它已经添加了针对其他编程语言诸如Julia和Haskell的支持。

  2. retrying
    顾名思义,retrying库可以帮你避免一切不必要的重复劳动:它为你实现了重试的行为。它提供了一个通用的修饰器,这使得它能够毫不费力地赋予任何方法重试的能力,同时你可以对各种各样的属性进行配置以获得所需的重试行为。比如最多尝试次数,延迟,回退休眠,错误条件等等。它既轻量级又使用方便。

  3. aiohttp
    截至2015年,最重要的开发库都被移植到了Python 3,所以我们也开始拥抱这种趋势。我们非常喜欢使用asyncio包通过协同程序(coroutines)来编写并发程序,所以我们有必要有一个使用相同并发模式的HTTP客户端(比如HTTP请求)和服务器端。aiohttp开发库正是这样一个为asyncio提供了易于使用的HTTP客户机/服务器的开发库。

  4. Plumbum
    为了能够在Python程序里调用其他脚本或者可执行文件,我们已经尝试了多种将subprocess打包的方法,但是随着plumbum模式的出现,之前的方法都已无用武之地。
    通过一个易于使用的语法,你可以执行本地或者远程的命令,从而以跨平台的方式得到输出结果或者错误代码。如果这些还无法满足需求,你可以通过组合的方式(按照shell管道的方式)和一个界面来创建命令行应用程序。不妨一试!

  5. Phonenumbers
    和电话号码打交道以及验证电话号码是一件真正痛苦的事情,因为这需要考虑国际冠码和区号,而且可能还有其他需要考虑的事情。该phonenumbers开发库是基于Google的libphonenumber移植而来并通过Python实现,值得庆幸的是该库大大简化了Google的libphonenumber库。它可以通过少量代码来用于解析,格式化和验证电话号码。更重要的是,phonenumbers可以区分一个电话号码是否是独一无二的(遵循E.164格式)。它同时适用于Python 2和Python 3。
    我们已经在很多项目中广泛使用了这个库,主要是通过它和django-phonenumber-field接口的结合来解决几乎一直弹出的繁琐问题。

  6. Networkx
    图和网络通常用于许多不同的场景,例如组织数据或者展示数据流,抑或展示不同数据实体间的关系。利用Networkx可以创建并操作图和网络。Networkx使用的算法使其具有高可扩展性,该特性使得当处理复杂的图结构时它成为一个理想的选择。此外,大量的图渲染选项也使得它成为一款非常出色的可视化工具。

  7. Influxdb
    如果你正在考虑将数据负载以时间序列为基础进行存储,那么InfluxDB是你需要考虑的工具。
    InfluxDB是一款时间序列数据库,一直以来,我们都在用它存储测量结果。只需要通过一个RESTful的API,我们可以轻易并有效地使用它。当谈论到大数据量的时候,这点尤为重要。此外,其内置的集群功能使得检索和数据分组都变得容易。这种官方的客户端通过调用API的方式抽象出了大部分的核心工作,尽管如此,我们还是希望看到它能够进一步改进成以Python化的方式来进行查询,而不是通过写原始的JSON来实现。

  8. elasticsearch-dsl
    如果你曾经使用过Elasticsearch,那你在检查冗长的JSON格式的查询语句时一定备受煎熬,浪费了大把时间想要找出到底是什么地方的解析出现了错误。Elasticsearch DSL客户端是完全建立在官方的Elasticsearch客户端基础之上,同时让你不需要被JSON语句的问题所困扰:你只需要使用Python定义的类或者类查询集的表达式即可。它还提供包装能够让你将文档作为Python的对象,映射关系等来进行处理。

  9. Keras
    深度学习是当前新的趋势,而这正是keras闪光的地方。它可以在Theano上运行,并可以通过各种神经网络的架构来进行快速实验。通过高度模块化和简约性,它可以在CPU和GPU上无缝运行。针对2015年度我们所解决的一些研发项目,类似keras这样的一个组成部分是至关紧要的。

  10. Genism
    如果你对自然语言处理(NLP)感兴趣但是还没听说过Gensim,那你真是太与世隔绝了。它提供了一些最常用算法的快速,可扩展(独立内存)的实现,诸如tf-idf, word2vec, doc2vec, LSA等等,同时提供了一个易于使用且有据可查的接口。

最后的彩蛋: MonkeyLearn Python

最后我们不能不考虑MonkeyLearn开发库。它是Tryolabs出品的一款分支于自己公司的产品,它通过一个易于使用的RESTFul的API提供了云端的文本挖掘。通过它你可以得到诸如情绪观点,最重要的关键字的深入理解,还可以进行主题检测,以及其他一切你可以通过自定义的文本分类器可以做到的事情。MonkeyLearn Python是这个API的官方客户端,它同时支持Python 2和Python 3。