社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

2017年数据科学领域最热门的top15 python库

小象 • 7 年前 • 1188 次点击  

我  相  信  这  么  优秀  的  你 

 已  经  置 顶  了  我

翻译| 王晗 李慧妍  选文| 小象  

转载请联系后台


作者简介

Igor Bobriakov

数据科学家

IT企业家

ActiveWizards技术顾问


由于Python近年来在数据科学领域获得了很大的发展,我想根据最近的经验,为数据科学家和工程师们概述一些最有用的库。


而且,鉴于所有的库都是开源的,我们用Github上的提交数,贡献者数以及其他指标来衡量一个库的流行度。

核心库


1. Numpy(提交次数:15980,贡献者数:522)


当开始使用python处理科学任务时,我们免不了会想到SciPy Stack的用处,它是python中专门设计用于科学计算的软件集(不要与SciPy库搞混了,它与SciPy Stack是不同的,它只是SciPy Stack的一部分)。这样,我们先看看SciPy Stack都有什么。它其实相当庞大,包括十多个库在内,我们集中看一下它的核心库(特别是最重要的那几个库)。


Numpy(代表Numerical Python)是最基础的包,整个科学计算库的集合是基于它建立的。它提供了python中大量有用的功能:n维数组和矩阵操作的功能。该库提供了在NumPy数组类型上进行数学运算的矢量化功能,从而改善性能,因此加快了执行速度。


2. Scipy(提交次数:17213,贡献者数:489)


SciPy是一个工程和科学的软件库。你需要知道SciPy Stack和SciPy库之间的区别。SciPy Stack包含线性代数,优化、整合,统计等模块。SciPy库的主要功能的是建立在NumPy之上,使用了大量的NumPy的数组结构。它通过自身特定的子模块提供了高效的数值计算功能,像数值积分,优化等。另外,SciPy子模块中的所有功能都是可以通过文档进行查阅的。


3. Pandas(提交次数:15089,贡献者数:762)


Pandas是一个Python包,设计用来处理“标记”和“关系”数据,简单直观。Pandas是数据探索的完美工具。它设计用于快速简便的数据处理、聚合和可视化。

这个库中有两种主要的数据结构:


“Series”: 一维数据

“Data Frames”,两维数据


例如,当你想从这两种数据结构中得到一个新的DataFrame,因此你可以把一个Series作为新的一行追加到DataFrame后面就会得到这样的DF:


你可以用Pandas做以下几个事情:


•轻松的删除和添加DataFrame中的列

•转换数据结构为DataFrame

•处理缺失数据,例如用NaN代表缺失值

•强大的分组功能


Google Pandas使用趋势:

trends.google.com (下同)


GitHub拉取请求历史记录:

datascience.com/trends (下同)


可视化


4. Matplotlib(提交次数:21754,贡献者数:588)


另一个SciPy Stack的核心包,也是一个Python库,是专为简单而功能强大的可视化量身定做的。Matplotlib可以轻而易举的实现。它是一个一流的Python库,与NumPy、SciPy,和Pandas这些库一起,使得Python成为像Matlab或Mathematica这样的科学工具的强劲的竞争对手。


然而,这个库相当的初级,这意味着你需要编写更多的代码才能达到高级的可视化水平,而且你通常会比使用更高级的工具时要付出更多的努力,但整体的努力是值得的。

通过一点点的努力,你几乎可以做出任何你想要的可视化图像:


•线图

•散点图

•条形图和直方图

•饼图

•茎图

•等高线图

•场图

•谱图


Matplotlib还可以创建标签、网格、图例和许多其他格式化的实体。基本上,一切图表都是可以定制的。


不同的平台对Matplotlib库都有很好的支持,并能使用不同的GUI套件来展现所得到的可视化结果。各种IDE(像IPython)同样支持Matplotlib的功能。


还有一些其他的python库可以使可视化更容易。


5. Seaborn(提交次数:1699,贡献者数:71)


Seaborn主要功能集中在统计模型的可视化;这种可视化包括热力图,就是可以汇总数据但仍可描述总体分布的可视化。Seaborn是基于matplotlib库而且相当依赖它。


6. Bokeh(提交次数:15724,贡献者数:223)


另一个优秀的可视化库是Bokeh,其主要功能是交互式可视化。与之前的库不同的是,这个库不依赖matplotlib库。正如我们已经提到的,Bokeh的重点是它是可以互动的,它通过以数据驱动文档(d3.js)样式的现代浏览器来呈现。


7. Plotly (Commits: 2486, Contributors: 33)


这里,介绍一下Plotly。它是一个基于网页的用于构建可视化的工具盒,同时向一些编程语言(包括Python)开放应用程序接口(API)。在Plotly的网页上,有很多鲁棒的,不合规格的图片;如果你想使用Plotly,需要先创建一个自己的接口钥匙(API Key)。然后这些图片将被传送到服务器上,然后放在网上;当然这个过程也有一个阻止方法。



Google Plotly使用趋势:


Github 拉取请求的历史记录:


机器学习


8. SciKit-Learn (Commits: 21793, Contributors:842)


SciKit是用于图像处理和便于机器学习的Scipy堆栈设计的一个附加的包;在机器学习方面,这些程序包中最著名的就是SciKit-Learn。SciKit-Learni建立在Scipy的顶端,并使用了很多数学。这个程序包像一般的机器学习算法公开了一个简洁和一致的接口,使得机器学习语言运用到生产系统较为简单。这个包把高质量的代码和良好的文档结合起来,便于使用并且性能较高,符合Python编码的机器学习的行业标准。


Deep Learning—Keras / TensorFlow / Theano


在深度学习的方面,其中最著名和方便的Python包是Keras,可在TensorFlow和Theano上再搭建函数,接下来介绍一下这些包的细节。

 

9.Theano. (Commits: 25870, Contributors:300)


我们来介绍一下Theano。


Theano是Python的包,它定义了类似于Numpy的多维数组,数学操作和表达式;这个包已经被编译好,并且能在所有的设备上高效运行。它最先被蒙特利尔大学的机器学习小组开发,并被用于机器学习;值得注意的是Theano.在低级的操作中和Numpy紧紧地结合在一起。这个包同样的优化了GPU和CPU的使用,让数据密集型计算机能够更高效地运行;算法的稳定性和和效率使得计算的结果更加精确。

 

10. TensorFlow. (Commits: 16785,Contributors: 795)



它的开发人员来自谷歌。它是一个数据流图计算的开源库,专为机器学习设计。它被设计用来满足谷歌神经网络训练对环境的高度要求,也是DistBelief的继任者。然而,TensorFlow作为一个科研工具并不合适,它更倾向于实际应用;


TensorFlow的关键特性是具有多层的节点系统,能够快速训练有大量数据的人工神经网络。现在运用于谷歌的语音识别和图片中的目标识别。


11. Keras. (Commits: 3519, Contributors:428)


我们来看一下Keras。它是一个用Python编写的开源神经网络接口程序,并且有较好的可扩展性;它使用Theano或TensorFlow作为它的后端,但现在微软使其努力整合CNTK(微软的认知工具包)作为一个新的后端。设计中的简约方法旨在通过建立紧凑型系统进行快速简便的实验。Keras很容易上手,并且深入学习。它用纯Python 语言编写,高度模块化和可扩展,并且能够用于严肃的模型。Keras的一般想法是基于层次,其他一切都围绕着它们构建。数据以张量准备,第一层负责输入张量,最后一层负责输出,然后建立模型。


Google Plotly使用趋势:


Github 拉取请求的历史记录:


自然语言处理


12. NLTK (Commits: 12449, Contributors:196)


这套工具包的名称代表自然语言工具包,顾名思义,它用于符号和统计自然语言的常见任务处理。NLTK只在促进NLP及其相关领域(语言学,认知科学,人工智能等)的教学和研究,目前正在被重点关注。NLTK允许很多操作,例如文本标记,分类,名称实体标识,建立语言树,显示语言和句子的依赖性;所有的程序块都可以用来构建不同任务的复杂的搜索系统,例如,情绪分析,自动总结;

 

13. Gensim (Commits: 2878, Contributors:179)


它是一个Python的开源库,使用了向量空间建模和主题建模。程序库设计为高效的大文本,不仅可以实现内存处理,还可以通过使用Numpy和SciPy来提高效率。Gensim旨在与原始和非结构化数字文本一起使用,实现了诸如分层狄利克雷过程,潜在语义分析,潜在狄利克雷分配之类的算法,以及频率,随机投影等便于检查文本中的重复模式。所有的算法都是非监督的,不需要任何参数,唯一的输入是语料库。


Google Plotly使用趋势:


Github 拉取请求的历史记录:



数据挖掘与统计


14. Scrapy (Commits: 6325, Contributors:243)


Scrapy是用来从网络检索结构化数据的爬行程序的库,是用Python编写的开源程序。它最初被严格按照其名称进行设计,但它仍在完整的框架下发展,并能够从API采集数据。这个库在界面设计中严格遵循着“不要重复自己”的原则,它提示用户编写将要重复使用的通用代码,从而构建和缩放大型爬虫。


Scrapy的结构是围绕着Spider构建的,也就是说包含了怕星期跟踪的一系列指令。

 

15. Statsmodels (Commits: 8960,Contributors: 119)


正如你可能从名称中猜测的那样,Statsmodels是一个Python 库,能够使用户通过各种统计模型估计的方法进行数据挖掘并执行统计断言和分析。许多有用的模型是通过线性回归模型,广义线性模型,离散选择模型,鲁棒线性模型,时间序列分析模型,各种估计量的描述性和结果统计。Statsmodels库还提供广泛的绘图功能,专门用于统计分析和大数据的使用。

 

结论


这些库是许多数据科学家和工程师认为的顶级的资源库,值得关注。

一下是每个库在Github的详细资料


 


译者介绍

方小晗

数据挖掘攻城狮,机器学习爱好者,上海海事大学研究生,喜欢思考各种创新应用,挖掘大数据的价值,希望认识更多志同道合的小伙伴儿。

李慧妍


就读于复旦大学电路与系统专业,本科毕业于天津大学,攻读复杂网络方向。



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/n19PnJwpHp
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2975
 
1188 次点击