您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

用于数据科学的六种必备Python工具

时间:2021-07-29 14:34:06  来源:51CTO  作者:

如果您想使用甚至掌握数据分析技能的话,Python/ target=_blank class=infotextkey>Python一定是您的最佳选择。它不但容易被学习,而且具有广泛且活跃的社区支持。目前,大多数数据科学库、以及机器学习框架,都能够提供Python接口。

在过去的数月中,不少用于数据科学的Python项目,都相继发布了针对主要功能的更新版本。它们有些是关乎实际数字运算;有些则是让开发者能够更轻松、更快速地编写出针对数据科学的任务代码。下面,让我们来讨论其中最为典型的6种Python工具。

1.SciPy1.7

由于NumPy能够为Python用户提供快速而强大的数学库,因此SciPy使用NumPy来为常见的、面向数学和数据科学的编程任务提供各种代码库。其中包括:线性代数、统计工程、以及信号处理等方面。

SciPy如何协助数据科学

作为便捷且被广泛使用的数学和统计工具,SciPy长期以来停留在1.0版本上。当然,该版本具有很强的跨版本向后兼容性。

根据其核心开发人员--Ralf Gommers的说法,SciPy项目的1.0版不但整合了项目的治理和管理方式,而且包含了一个与macOS和windows的不同的持续集成过程,以及对预构建的Windows二进制文件的适当支持。这就意味着,Windows用户可以直接使用SciPy,而无需考虑额外的环节。

自2017年发布1.0版本以来,该项目已经交付了七个主要版本,它们持续在如下方面进行改进与优化:

  • 放弃了对于Python 2.7的支持,跟进了对应的代码库。
  • 不断改进和更新SciPy的子模块,使之具有更多的功能、更好的文档、以及更多的新算法。例如,新的快速傅立叶变换模块(fast Fourier transform module,)具有更好性能、以及更友好的界面。
  • 更好地支持LAPACK(Linear Algebra PACKage,线性代数包,是一个用于解决常见线性方程问题的Fortran包。请参见--http://performance.NETlib.org/lapack/)中的各个函数。
  • 能够更好地兼容替代Python运行时的PyPy(包括了一个可用于更快地长期运行代码的JI编译器,请参见--https://www.infoworld.com/article/3385127/what-is-pypy-faster-python-without-pain.html)。

从哪里下载SciPy

我们既可以从GitHub的链接处获得源代码,又可以从Python Package Index的链接处,下载SciPy的二进制文件,然后在命令行中输入“pip install sciPy”以完成安装。

2.Numba 0.53.0

Numba允许通过LLVM(Low Level Virtual Machine,低级虚拟机)编译器框架,将Python函数或模块编译为汇编语言,以便随时运行Python程序。在此方面,Numba与Cython(不但可以被Python调用,而且能够让被加速的代码更易于分发给第三方,下文会详细讨论)极其相似。当然,Numba会更易于使用。

Numba如何协助数据科学

Numba帮助数据科学家的方式主要体现在,它加速了编写Python的各项操作。也就是说,您可以使用纯Python,对项目进行原型设计,然后使用Numba对其进行注释,以便快速地投入生产环境。

同时,Numba也可以快速地运行在那些为机器学习和数据科学应用所构建的硬件上。Numba的早期版本曾可以支持编译出CUDA(Compute Unified Device Architecture)加速代码。不过其最新版本则采用了新的、更为高效的GPU代码缩减算法。它不但能够加快编译速度,还支持Nvidia CUDA和AMD ROCm的API。

此外,Numba还可以通过优化JIT编译函数,以实现跨CPU内核的并行执行。当然,您的代码需要添加一些额外的语法,才能正确地完成。

从哪里下载Numba

我们既可以从GitHub的链接处获得源代码,又可以在Python Package Index的链接处下载Numba,然后在命令行中输入“pip install numba”以完成安装。其预构建的二进制文件可以支持Windows、MacOS、以及通用的linux。此外,它还被当作了Anaconda Python发行版的一部分。用户可以在命令行中输入“conda install numba”以完成安装。

3.Cython3.0(beta版)

Cython是将Python代码转换为可以更快地运行、大数量级的C语言代码。这种转换对于重数学量(math-heavy)的代码、或是在各种紧密循环中运行的代码,都非常方便。值得一提的是,这两种情况在为工程、科学、以及机器学习编写的Python程序中,也是十分常见的。

Cython如何协助数据科学

从本质上说,Cython代码实际上是带有一些额外语法的Python代码。这些Python代码不但可以被Cython编译成C语言,而且能够通过使用Cython的类型注释,让其性能得到了几十倍、甚至几百倍的改进。

在Cython 3出现之前,Cython使用的是0.xx的版本编号方案。不过,Cython 3不再支持Python 2的语法了。尽管Cython 3目前仍处于测试阶段,但是已有Cython的拥护者强烈建议人们使用该版本,去代替其早期的版本。同时,鉴于Cython的许多(尽管不是全部)函数都可以使用与Python完全兼容的语法,因此Cython 3强烈建议用户更多地去使用“纯Python”模式。

同时,Cython还支持与IPython和Jupyter notebooks的集成。由Cython编译的代码,可以通过内联注释的方式,在Jupyter notebooks中被使用,就像使用Python代码一样。

此外,您还可以在启用了配置文件引导优化(profile-guided optimization)的情况下,为Jupyter编译Cython模块。使用该方式构建的模块,可以根据其生成的分析信息,进行各种快速的编译和优化。值得注意的是,该方式仅能够在与GCC编译器共同使用时,被Cython所使用。而微软的VC环境尚对此并不支持。

从哪里下载Cython

我们既可以从GitHub的链接处获得源代码,又可以在Python Package Index的链接处下载Cython,然后在命令行中输入“pip install cython”以完成安装。其二进制文件可以支持包括32位和64位的Windows、通用的Linux、以及MacOS。值得注意的是,您的系统平台上必须已安装了C预言编译器,方可使用Cython。

4.Dask 2021.07.0

近年来,我们的硬件处理能力虽然比以往任何时候都强大,可关键问题是,我们将如何通过横跨多个CPU内核、物理处理器、以及计算节点的方式,以最高效率完成数据科学的相关计算任务。

对此,Dask工具能够接受一项Python作业,并在多个系统之间有效地予以调度。由于那些被用于启动Dask作业的语法、与在Python中用于执行其他各项操作的语法几乎相同,因此我们在使用Dask时,几乎无需对现有的代码进行任何修改。

Dask如何协助数据科学

Dask能够为Python中许多流行的机器学习、以及科学计算库,提供了各种自有版本的接口。例如,它的DataFrame对象能够与Pandas库中的相同,它的Array对象则可以与NumPy的相一致。可见,您只需针对Dask修改几行代码,即可来快速兼容现有的代码。

同时,Dask不但允许并行地写入纯Python的作业,而且其Bag等对象类型,也能够优化诸如:map、filter、以及groupby等通用Python对象集合的操作。

从哪里下载Dask

我们既可以从GitHub的链接处获得源代码,又可以在Python Package Index的链接处下载Cython,然后在命令行中输入“pip install dask”以完成安装。此外,作为Anaconda Python发行版的一部分,用户还可以在其命令行中输入“conda install dask”,以完成安装。

5.Vaex 4.30

根据NumPy或Pandas的数据帧格式,Vaex允许用户对大型表格的数据集(例如有数十亿行的数据量),通过执行lazy操作,以零数据复制、最少的内存使用量、以及内置的可视化工具等方式,高效地完成各项操作。

Vaex如何协助数据科学

在Python中,处理大型数据集,特别是只涉及数据的某个子集(例如,表中的一列)时,通常会耗费大量的内存、以及处理能力。而Vaex则能够根据实际需要,以按需的方式执行计算,从而充分地利用好有限的可用计算资源。

从哪里下载Vaex

我们可以在Python Package Index的链接处下载Cython,然后在命令行中输入“pip install vaex”以完成安装。值得注意的是,为了获得最佳的效果,您既可以在虚拟环境中安装Vaex,又可以直接使用Python的Anaconda发行版。

6.Intel SDC

作为高性能分析工具包,Intel的可扩展数据帧编译器(Scalable Dataframe Compiler,SDC)是一个针对数据分析、以及加速集群机器学习的实验项目。它使用Open MPI项目中的mpirun的实用程序,将Python的子集编译为代码。这些代码可以在集群之间自动实现并行化。

Intel SDC如何协助数据科学

作为一个使用Python编写的、基于编译器的大数据框架, HPAT用到了前面提到的Numba。不过与Cython不同的是,它并不会按照原样去编译Python。相反,它用到了Python语言的受限子集:NumPy数组和Pandas数据帧,并通过对其优化,以实现横跨多个节点的运行。

与Numba类似,HPAT自带有@jit装饰器(decorator),可以将特定功能转化到优化的代码中。此外,它还包含了一个可用于读取和写入HDF5(并非HDFS)文件的本地 I/O模块。

从哪里下载Intel SDC

我们可以从GitHub的链接处获得源代码。不过SDC并未提供对应的二进制文件。



Tags:Python工具   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
▌简易百科推荐
近几年 Web3 被炒得火热,但是大部分人可能还不清楚什么是 Web3,今天就让w3cschool编程狮小师妹带你了解下 Web3 是什么?与我们熟知的 Web1 和 Web2 又有什么区别呢?web3.0什么是...【详细内容】
2022-07-15  编程狮W3Cschool    Tags:Web3.0   点击:(2)  评论:(0)  加入收藏
1、让我们一起来看下吧,直接上图。 第一眼看到是不是觉得很高逼格,暗黑画风,这很大佬。其实它就是------AidLearning。一个运行在安卓平台的linux系统,而且还包含了许多非常强大...【详细内容】
2022-07-15  IT智能化专栏    Tags:AidLearning   点击:(2)  评论:(0)  加入收藏
真正的大师,永远都怀着一颗学徒的心! 一、项目简介 今天说的这个软件是一款基于Python+vue的自动化运维、完全开源的云管理平台。二、实现功能 基于RBAC权限系统 录像回放 ...【详细内容】
2022-07-14  菜鸟程序猿    Tags:Python   点击:(3)  评论:(0)  加入收藏
前言今天笔者想和大家来聊聊python接口自动化的MySQL数据连接,废话不多说咱们直接进入主题吧。 一、什么是 PyMySQL?PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,P...【详细内容】
2022-07-11  测试架构师百里    Tags:python   点击:(19)  评论:(0)  加入收藏
aiohttp什么是 aiohttp?一个异步的 HTTP 客户端\服务端框架,基于 asyncio 的异步模块。可用于实现异步爬虫,更快于 requests 的同步爬虫。安装pip install aiohttpaiohttp 和 r...【详细内容】
2022-07-11  VT漫步    Tags:aiohttp   点击:(15)  评论:(0)  加入收藏
今天我们学习下 Queue 的进阶用法。生产者消费者模型在并发编程中,比如爬虫,有的线程负责爬取数据,有的线程负责对爬取到的数据做处理(清洗、分类和入库)。假如他们是直接交互的,...【详细内容】
2022-07-06  VT漫步    Tags:Python Queue   点击:(34)  评论:(0)  加入收藏
继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基...【详细内容】
2022-07-06  至尊小狸子    Tags:python   点击:(25)  评论:(0)  加入收藏
点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。本文1553字,阅读约需4分钟 Hi,大家好,我是CoCo。在上一篇Python自动化测试系列文章:Python自动化测试之P...【详细内容】
2022-07-05  CoCo的软件测试小栈    Tags:Python   点击:(27)  评论:(0)  加入收藏
第一种方式:res = requests.get(url, params=data, headers = headers)第二种方式:res = requests.get(url, data=data, headers = headers)注意:1.url格式入参只支持第一种方...【详细内容】
2022-07-05  独钓寒江雪之IT    Tags:Python request   点击:(19)  评论:(0)  加入收藏
什么是python类的多态python的多态,可以为不同的类实例,或者说不同的数据处理方式,提供统一的接口。用比喻的方式理解python类的多态比如,同一个苹果(统一的接口)在孩子的眼里(类实...【详细内容】
2022-07-04  写小说的程序员    Tags:python类   点击:(28)  评论:(0)  加入收藏
站内最新
站内热门
站内头条