2018年数据科学前20名Python库
Python在解决数据科学任务和挑战方面继续处于领先地位。我们的选择实际上包含了20多个库,因为其中一些库是相互替代的,可以解决相同的问题。
核心库和统计数据
1. NumPy(Commits:17911,Contributors:641)
传统上,我们从科学应用程序库开始列表,而NumPy是这一领域的主要软件包之一。它用于处理大型多维数组和矩阵,并且大量的高级数学函数和实现方法使得可以用这些对象执行各种操作。
在这一年里,类库进行了大量改进。除了错误修复和兼容性问题之外,关键的变化还涉及样式可能性,即NumPy对象的打印格式。另外,一些函数现在可以处理Python中可用的任何编码的文件。
2. SciPy(Commits:19150,Contributors:608)
科学计算的另一个核心库是SciPy。它基于NumPy,因此扩展了它的功能。SciPy的主要数据结构又是一个由Numpy实现的多维数组。该软件包包含帮助解决线性代数,概率论,积分和更多任务的工具。
SciPy在不断集成到不同的操作系统、新的功能和方法以及(尤其重要的)更新优化器的形式中面临重大的构建改进。此外,还封装了许多新的BLAS和LAPACK函数。
3. Pandas(Commits:17144,Contributors:1165)
Pandas是一个Python库,提供高级数据结构和各种分析工具。这个软件包的重要特点是能够将相当复杂的操作与数据转换为一个或两个命令。熊猫包含许多用于分组,过滤和组合数据的内置方法,以及时间序列功能。所有这些都伴随着令人印象深刻的速度指标。
Pandas已有几个新版本,其中包括数百个新功能,增强功能,错误修复和API更改。改进的方面包括对数据进行分组和排序的能力、更适合应用方法的输出以及对执行自定义类型操作的支持。
4. StatsModels(Commits:10067,Contributors:153)
Statsmodels是一个Python模块,为统计数据分析提供了许多机会,例如统计模型估计,执行统计测试等。借助其帮助,您可以实现许多机器学习方法并探索不同的绘图可能性。
此类库不断发展,今年带来了时间序列改进和新计数模型,即GeneralizedPoisson,zero inflated models和NegativeBinomialP,以及新的多元方法 - 因子分析,多元方差分析和方差分析中的重复测量。
可视化
5. Matplotlib(Commits:25747,Contributors:725)
Matplotlib是一个用于创建二维图和图的低级库。借助它,您可以构建不同的图表,从直方图和散点图到非笛卡尔坐标图。此外,许多流行的绘图库被设计成与matplotlib协同工作。
在颜色、大小、字体、图例等方面都有风格上的变化。作为外观改进的一个例子,是对坐标轴图例的自动对齐,在显著的色彩改进中,还有一种新的对色盲友好的颜色循环。
6. Seaborn(Commits:2044,Contributors:83)
Seaborn本质上是一个基于matplotlib库的高级API。它包含更适合处理图表的默认设置。此外,还有丰富的可视化库,包括一些复杂类型,如时间序列、联合情节和小提琴图。
seaborn更新主要包括错误修复。然而,FacetGrid或PairGrid之间的兼容性有所改进,增强了交互式matplotlib后端,为可视化添加了参数和选项。
7. Plotly (Commits: 2906, Contributors: 48)
Plotly是一个流行的库,允许您轻松构建复杂的图形。该软件包适用于交互式web应用程序。在它非凡的视觉效果中有轮廓图、三元图和3D图。
该库不断增强了新的图形和特性,带来了对“多个链接视图”以及动画和串扰集成的支持。
8. Bokeh (Commits: 16983, Contributors: 294)
Bokeh库使用JavaScript小部件在浏览器中创建交互式和可伸缩的可视化。该库提供了图形、样式可能性、以链接图、添加小部件和定义回调等形式的交互能力以及许多更有用的特性。
Bokeh可具有改进的交互能力,如分类刻度标签的旋转,以及小型缩放工具和自定义工具提示字段增强功能。
9. Pydot (Commits: 169, Contributors: 12)
Pydot是一个用于生成复杂的定向图和非定向图的库。它是用纯Python编写的Graphviz接口。在它的帮助下,可以显示图形的结构,这是在构建神经网络和基于决策树的算法时经常需要的。
机器学习
10. Scikit-learn (Commits: 22753, Contributors: 1084)
这个基于NumPy和SciPy的Python模块是处理数据的最佳库之一。它为许多标准的机器学习和数据挖掘任务提供算法,如集群、回归、分类、降维和模型选择。
有许多增强功能。交叉验证已经被修改,提供了使用多个度量的能力。一些训练方法,比如最近邻和逻辑回归,都有一些小的改进。最后,一个主要的更新是完成了通用术语和API元素的术语表,这些术语和API元素熟悉了Scikit-learn中使用的术语和约定。
11. XGBoost / LightGBM / CatBoost(Commits: 3277 / 1083 / 1509, Contributors: 280 / 79 / 61)
梯度增强算法是最流行的机器学习算法之一,它是建立一个连续精化的基本模型,即决策树的集合。因此,为了快速方便地实施此方法而设计了特殊库。也就是说,我们认为XGBoost,LightGBM和CatBoost值得特别关注。些库提供了高度优化的、可伸缩的、快速的梯度增强实现,这使得它们在数据科学家和Kaggle比赛中非常流行,因为在这些算法的帮助下赢得了许多比赛。
12. Eli5 (Commits: 922, Contributors: 6)
机器学习模型预测的结果常常并不完全清楚,这是eli5库帮助处理的挑战。它是一个用于可视化和调试机器学习模型并逐步跟踪算法工作的软件包。它为scikit-learn、XGBoost、LightGBM、lightning和sklearn-crfsuite库提供支持,并为每个库执行不同的任务。
深度学习
13. TensorFlow (Commits: 33339, Contributors: 1469)
TensorFlow是深度和机器学习的流行框架,由Google Brain开发。它提供了使用多个数据集的人工神经网络的能力。最流行的TensorFlow应用包括对象识别,语音识别等等。在常规的TensorFlow(如tflearn、tf-slim、skflow等)上也有不同的分层辅助工具。
这个库新版本引入新的特性。最新的补丁包括潜在的安全漏洞和改进的TensorFlow和GPU集成,比如您可以在一台机器上的多个GPU上运行一个Estimator模型。
14. PyTorch (Commits: 11306, Contributors: 635)
PyTorch是一个大型框架,允许您使用GPU加速执行张量计算,创建动态计算图并自动计算梯度。在此之上,PyTorch提供了一个丰富的API来解决与神经网络相关的应用。
该库基于Torch,它是一个开源的深度学习库,在C中用Lua中的包装器实现。Python API于2017年推出,从那时起,该框架越来越受欢迎,并吸引了越来越多的数据科学家。
15. Keras (Commits: 4539, Contributors: 671)
Keras是一个用于处理神经网络的高级库,运行在TensorFlow、Theano之上,现在由于新版本的发布,也可以使用CNTK和MxNet作为后端。它简化了许多特定的任务,并且大大减少了monotonous代码的数量。然而,它可能不适合一些复杂的事情。
这个库面对性能、可用性、文档和API的改进。其中的一些新功能包括:conv3dlayer、new MobileNet应用程序和自规范化网络。
分布式深度学习
16. Dist-keras / elephas / spark-deep-learning (Commits: 1125 / 170 / 67, Contributors: 5 / 13 / 11)
随着越来越多的用例需要花费大量的精力和时间,深度学习问题变得越来越重要。然而,使用Apache Spark之类的分布式计算系统处理如此大量的数据要容易得多,这再次扩展了深入学习的可能性。因此,dist-keras、elephas和spark-deep-learning都在迅速流行和发展,而且很难挑出一个库,因为它们都是为解决共同的任务而设计的。这些包允许您在Apache Spark的帮助下直接训练基于Keras库的神经网络。Spark-deep-learning还提供了使用Python神经网络创建管道的工具。
自然语言处理
17. NLTK (Commits: 13041, Contributors: 236)
NLTK是一组库,一个用于自然语言处理的完整平台。在NLTK的帮助下,您可以以各种方式处理和分析文本,对文本进行标记和标记,提取信息等。
这个库的魅力包括api和兼容性的微小变化和CoreNLP的新接口。
18. SpaCy (Commits: 8623, Contributors: 215)
SpaCy是一个具有优秀示例、API文档和演示应用程序的自然语言处理库。库是用Cython语言编写的,Cython是Python的C扩展。它支持近30种语言,提供了简单的深度学习集成,保证了鲁棒性和高准确性。spaCy的另一个重要特性是为整个文档处理而设计的体系结构,不会将文档分解为短语。
19. Gensim (Commits: 3603, Contributors: 273)
Gensim是一个强大的语义分析,主题建模和矢量空间建模的Python库,建立在Numpy和Scipy之上。它提供了流行的NLP算法的实现,如word2vec。尽管gensim拥有自己的models.wrappers.fasttext实现,但fasttext库也可用于高效学习词语表示。
数据抓取
20. Scrapy (Commits: 6625, Contributors: 281)
Scrapy是一个库,用于创建扫描网站页面并收集结构化数据的蜘蛛程序。另外,Scrapy可以从API中提取数据。该库由于其可扩展性和可移植性而变得非常方便。
今年取得的进展包括代理服务器的几次升级和改进的错误通知和问题识别系统。在使用scrapy解析的元数据设置中也有新的可能性。
结论
这是我们在2018年丰富的用于数据科学的Python库集合。与前一年相比,一些新的现代化图书馆越来越受欢迎,而那些已经成为数据科学任务经典的库正在不断改进。
再次,有一张表格显示了github活动的详细统计数据。