【翻译】2018年,20大Python数据科学库都做了哪些更新?

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介:

Python今年依旧保持着数据科学领域的领先地位。去年,我们在博客上列出了15个顶级Python数据科学库的榜单,当时大家都觉得非常好。这次,介绍一下这些顶级数据科学Python库今年有哪些更新,同时,我们还为这个榜单添加了一些新库。

实际上,这次的榜单不止20个库,主要是因为现在某些领域里有多个库都能解决相同的问题,而且暂时也不好说哪个库能成为领头羊,因此,我们将这些库分为一组,供大家选择。

核心库与统计库

1. NumPy (提交修改: 17911, 贡献者: 641)

按惯例,本榜单首先列出科学应用库,Numpy是这一类的首选,它是处理大型多维数组、矩阵及高级数学函数的工具集合,提供了多种数据操作方法。

今年,Numpy进行了很多改进。除了修复Bug和加强兼容性外,关键的改进是增加了可选样式,即Numpy对象的打印格式。此外,还增加了新的功能,只要是Python支持的编码,Numpy就可以处理使用这些编码的文件。

2. SciPy (提交修改: 19150, 贡献者: 608)

科学计算的的另一个核心库是SciPy。SciPy基于Numpy,扩展了Numpy的功能,它的核心数据结构是用Numpy实现的多维数组。这个库包含了一组处理线性代数、概率论、积分学等任务的工具。

SciPy的主要改进包括对不同操作系统的集成,增加了新的函数与方法,值得一提的是,SciPy更新了优化器。此外,还打包了不少新的BLAS[1]和LAPACK[2]函数。

3. Pandas (提交修改: 17144, 贡献者: 1165)

Pandas提供了高层数据结构和大量的分析工具。这个库最牛的地方是可以用一两条命令实现很多复杂的数据分析操作。Pandas内建了很多方法,比如分组、筛选、合并数据及时间序列等功能,并且,这些操作的运算速度都非常快。

今年,Pandas进行了数百项优化,包括增加了新特性、修复了Bug、改进了API。这些优化主要集中在提升Pandas分组和排序数据的能力,提供了更适用的apply方法的输出结果,还为操作自定义类型提供了支持。

4. StatsModels (提交修改: 10067, 贡献者: 153)

Statsmodels是进行统计数据分析的Python模块,比如,评估统计模型、执行统计测试等。有了Statsmodels,就可以实现很多机器学习方法,探索不同图形的绘图可能性。

Statsmodels还在不断开发升级,将来会提供越来越多的新特性。今年,Statsmodels引入了时间序列和新的技术模型,如,广义泊松、零膨胀模型、负二项式分布等,它还提供了一些新的多元方法,如,因子分析、多元方差分析(MANOVA)和方差分析(ANOVA)的重复测量等。

可视化

5. Matplotlib (提交修改: 25747, 贡献者: 725)

Matplotlib是创建二维图形的底层库。使用Matplotlib可以创建直方图、散点图、非笛卡尔坐标图等多种图形,并且,大部分流行绘图库都与Matplotlib兼容,可以进行交互操作。

今年,Matplotlib优化了颜色、字体、尺寸、图例等样式。比如,它对外观的优化包括了自动对齐图例,还改进了色彩,新采用的色相环即便是色盲也可以看。

97215db458ba26100cf457d47dd1d1b1712a661d

6. Seaborn (提交修改: 2044, 贡献者: 83)

Seaborn是基于Matplotlib开发的高层API,与Matplotlib相比,它提供了更多实用的默认图形,包括诸如时间序列、Jointplot和小提琴图这样的可视化图。

2018年上半年,Seaborn的升级主要是修复Bug。同时,还改进了FaceGrid和PairGrid与Matplotlib增强型交互后端的兼容性,并为可视化图增加了参数和选项。

8471f7a164b955f569408b10a001b9c26c318f66

7. Plotly (提交修改: 2906, 贡献者: 48)

使用Plotly可以轻易地生成复杂的图形,这个库可以用来开发交互式的网页应用,还可以生成非常华丽的等高线图、三角图及3D图。

今年,Plotly的优化主要在于提供了很多新的图形和特性,引入了对动画与串扰集成等多重链接视图的支持。

8. Bokeh (提交修改: 16983, 贡献者: 294)

Bokeh使用JavaScript Widget,用于创建可在浏览器中查看的交互式、矢量化的可视化图。通过链接图形、添加Widget和回调函数等实用特性,Bokeh提供了很多图形、样式以及交互功能。

Bokeh今年优化的交互功能还是可圈可点的,比如说,旋转式类别图例标签,缩放工具、增强型自定义工具提示字段等。

a0ecc8463d6a06087d857363ee7878600a78327e

9. Pydot (提交修改: 169, 贡献者: 12)

Pydot是生成复杂定向图与非定向图的库,它是Python开发的Graphviz[3]接口。有了Pydot,就可以展示结构化的图形,构建神经网络图与基于算法的决策树等图形。

机器学习

10. scikit-learn (提交修改: 22753, 贡献者: 1084)

scikit-learn是最强大的数据处理库之一,它是基于Numpy和SciPy的Python模块。scikit-learn提供了很多标准机器学习与数据挖掘算法,比如,分类、聚类、回归、降维与模型选择等。

2018年上半年,scikit-learn做了很多改进。优化了交叉验证,使其可以使用一个以上的指标;完善了最近邻和逻辑回归等几个训练方法;还有一点是终于推出了通用术语与API元素术语表,有了这个术语表就可以很方便地了解scikit-learn的专业术语和使用约定。

11. XGBoost / LightGBM / CatBoost (提交修改: 3277 / 1083 / 1509, 贡献者: 280 / 79 / 61)

梯度增强是机器学习里最流行的算法,这个算法是基于决策树等持续精化的基本模型集合构建的。因此,现在出现了一些为了快速、便捷实现这种方法而设计的专用库。我们认为 XGBoost、LightGBM与CatBoost值得特别关注。它们都是解决梯度增强问题的竞争者,使用方式也几乎相同。XGBoost这几个库提供了高度优化、可扩展、可快速实现的梯度增强算法,这些优势让它们在现在的数据科学界里非常流行;甚至,由于其算法对赢得Kaggle比赛有很大帮助,现在很多参赛者也喜欢用这些库来解决Kaggle比赛问题。

12. Eli5 (提交修改: 922, 贡献者: 6)

机器学习模型预测的结果往往并不一目了然,无法让人轻易就能理解,Eli5就是为了解决这一痛点而开发的。Eli5用于将机器学习模型进行可视化,并进行Debug,可以一步一步追踪算法的执行步骤。Eli5支持scikit-learn、XGBoost、LightGBM、lightning和sklearn-crfsuite等库,能够为这些库执行不同的监控任务。

深度学习

13. TensorFlow (提交修改: 33339, 贡献者: 1469)

TensorFlow是谷歌大脑开发的、超级火爆的深度学习与机器学习框架,它使用人工神经网络处理多重数据集。TensorFlow广泛应用于对象识别、语音识别等业务,现在还出现了不少基于TensorFlow创建的高层辅助器,比如tflearn、tf-slim和skflow等。

TensorFlow还在快速迭代,今年发布了不少更新版本,提供了很多新特性。比如,最新的版本修复了潜在的安全隐患,改进了TensorFlow与GPU的集成,可以让TensorFlow在一台机器上使用多个GPU运行评估期模型。

14. PyTorch (提交修改: 11306, 贡献者: 635)

PyTorch是一个大型框架,允许用户使用GPU加速张量计算、创建动态计算图、自动计算梯度值。PyTorch还提供了丰富的API接口,用于解决神经网络的相关应用。

PyTorch是基于Torch这个开源深度学习开源库创建的,2017年才引入了Python API接口。从那时起,PyTorch就变得非常流行,吸引了越来越多的数据科学家用户。

15. Keras (提交修改: 4539, 贡献者: 671)

Keras是运行在TensorFlow和Theano之上的高层神经网络库,最新版本还可以将CNTK和MxNet作为后端。Keras简化了任务操作,大大地减少了编写代码的工作量。然而,对于一些复杂的任务,Keras并不是十分适用。

今年,Keras优化了性能、可用性、文档和API,增加了Conv3D转置层、MobileNet应用与自归一网络等新特性。

分布式深度学习

16. Dist-keras / elephas / spark-deep-learning (提交修改: 1125 / 170 / 67, 贡献者: 5 / 13 / 11)

如今,越来越多的用例处理工作需要消耗极为庞大的资源与时间,因此,大规模数据的深度学习问题已经变得非常严峻了。然而,随着Apache Spark等分布式计算系统拓展到深度学习领域,处理这种大规模数据就变得简单了。因此,dist-keras、elephas和spark-deep-learning这样的库很快就应运而生,开发速度也非常快。只不过这些库现在都旨在解决同样的问题,目前还看不出来谁能够脱颖而出。这些库可以通过Keras直接调用Apache Spark训练神经网络,Spark-deep-learning还提供了构建Python神经网络管道的工具。

自然语言处理

17. NLTK (提交修改: 13041, 贡献者: 236)

NLTK是自然语言处理的平台。可以使用NLTK处理、分析文本,进行分词、标记、信息提取等工作,还可以使用NLTK搭建原型和调研系统。

NLTK今年的改进不多,主要是优化了API和兼容性,以及提供了一个新的CoreNLP的接口。

18. SpaCy (提交修改: 8623, 贡献者: 215)

SpaCy这个自然语言处理库提供了很多好用的例程、API文档和应用Demo。SpaCy是使用Cython开发的,支持超过30种语言,可以轻松地与深度学习集成,还能保证稳健、精准的结果。

SpaCy还有一个非常实用的特性,就是它的设计架构很好,不需要将文档分段就可以处理整个文档。

19. Gensim (提交修改: 3603, 贡献者: 273)

Gensim是基于Numpy和Scipy的Python库,可以进行语义分析、主题建模和向量空间建模。它提供了word2vec等NLP算法。虽然Gensim有自己的models.wrappers.fasttext,但是fasttext这个库也可以用于高效的词表征学习。

数据采集

20. Scrapy (提交修改: 6625, 贡献者: 281)

Scrapy是用来构建爬虫机器人扫描网页,采集结构化数据的Python库,Scrapy还可以通过API提取数据。Scrapy支持扩展和移植,用起来非常顺手。

今年Scrapy有很多升级,优化了Proxy服务器,改进了错误提示与问题识别系统,推出了使用Scrapy解析元数据设置的新功能。

结论

以上就是我们的2018年上半年的Python数据科学库榜单。与去年相比,经典的数据科学库仍在不断地完善、优化,与此同时,这个领域里也出现了不少新兴的数据科学库。

最后,给大家呈上Github上这些库的活跃表。

f84fe922a339c5e4c41cfde9724aebd3ff0e16c8

ActiveWizards是由数据科学家和数据工程师组成的团队,关注于大数据、数据科学、机器学习、数据可视化等数据项目。我们的核心专业领域包括数据科学(数据研究、机器学习算法与数据开发),数据可视化(D3.js、Tableau等)、大数据开发(Hadoop、Spark、Kafka、Cassandra、HBASE、MongoDB等)及数据密集型Web应用开发(RESTful API、Flask、Django和Meteor等)。

1. BLAS的全称是Basic Linear Algebra Subprograms,即基础线性代数子程序,是一系列API规范,如向量、矩阵之间的乘法等。

2. LAPACK的全称是linear algebra package,即线性代数库,其底层是BLAS,在此基础上定义了很多矩阵和向量高级运算的函数,如矩阵分解、求逆和求奇异值等。LAPACK是科学计算(矩阵运算)的接口规范,运行效率比BLAS更高。 ↩

3. Graphviz是一个知名的绘制网络图、软件工程、数据库、网页设计及机器学习架构图的可视化工具。


原文发布时间为:2018-08-19

本文作者:呆鸟【翻译】

本文来自云栖社区合作伙伴“Python爱好者社区”,了解相关信息可以关注“Python爱好者社区”。

相关文章
|
17天前
|
机器学习/深度学习 数据可视化 数据处理
从基础到进阶:探索Python在数据科学中的应用
【10月更文挑战第18天】从基础到进阶:探索Python在数据科学中的应用
33 1
|
26天前
|
机器学习/深度学习 数据采集 数据可视化
Python 数据分析:从零开始构建你的数据科学项目
【10月更文挑战第9天】Python 数据分析:从零开始构建你的数据科学项目
51 2
|
5天前
|
调度 开发者 Python
Python中的异步编程:理解asyncio库
在Python的世界里,异步编程是一种高效处理I/O密集型任务的方法。本文将深入探讨Python的asyncio库,它是实现异步编程的核心。我们将从asyncio的基本概念出发,逐步解析事件循环、协程、任务和期货的概念,并通过实例展示如何使用asyncio来编写异步代码。不同于传统的同步编程,异步编程能够让程序在等待I/O操作完成时释放资源去处理其他任务,从而提高程序的整体效率和响应速度。
|
8天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
29 0
|
1天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
11 4
|
1天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
8 2
|
7天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
27 7
|
23天前
|
网络协议 数据库连接 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
|
7天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
18 3
|
10天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
29 5

热门文章

最新文章