首页 > Python笔记 阅读数:32

Python常用的库有哪些?

Python 社区的生态已然非常完备,为我们提供了很多高质量的类库。这时,我们没有必要重复造轮子。对于一些优秀的类库而言,“他山之石,可以攻玉”,采用“拿来主义”,为我所用,不失为上策。

下面就介绍一下与机器学习相关的 Python 常用类库。

数值计算NumPy

NumPy 是“Numeric”(数值)和“Python”的混合简写。顾名思义,它是处理数值计算的 Python 库。

为了提高性能,NumPy 参考了 CPython(用 C语言实现的 Python 及其解释器)的设计,其本身也是用 C语言开发的,也就是说,Numpy 的数据处理速度和 C语言是同级别的。

NumPy 除了提供一些数学运算函数,还提供与 MATLAB(由美国 MathWorks 公司出品的著名商业数学软件)相似的功能与操作方式,可让用户高效地直接操作向量或矩阵。

但 NumPy 被定位为数学基础库,属于比较底层的 Python 库。如果想快速开发出可用的程序,可采用更为高阶的库— SciPy 和 Pandas,下面分别对它们进行简单介绍。

科学计算SciPy

SciPy 发音为“Sigh Pie”,它的取义类似于 NumPy,是“Science”(科学)和“Python”的组合,即面向科学计算的 Python 库。

SciPy 构建于 NumPy 之上,功能更为强大,在常微分方程求解、线性代数、信号处理、图像处理及稀疏矩阵操作等方面,均能提供强有力的支持。

相比于 NumPy 是一个纯数学层面的计算模块,SciPy 是一个更为高阶的科学计算库。比如说,如果要对矩阵进行操作,只用到纯数学的基础模块,可在 NumPy 库中找到对应的模块。但如果想要实现特定功能,如稀疏矩阵操作,那相应模块可能就需要在 SciPy 库中找了。

SciPy 库需要 NumPy 库的支持。出于这种依赖关系,NumPy 库的安装要先于 SciPy 库的安装。

数据分析Pandas

Pandas 在这里并不是“熊猫”之意,它的英文全称是“Python Data Analysis Library”。见名知意,Pandas 是一款面向 Python 的数据分析库,它同样基于 NumPy 库构建而成。

Pandas 库提供了操作大型数据集所需的高效工具,支持带有坐标轴的数据结构,这能防止由于数据没有对齐、采用不同索引而产生的某些处理错误。在数据预处理或数据清洗上,Pandas 提供了处理缺失值、转换、合并及其他类 SQL 的功能。这些功能大大减轻了一线机器学习研发人员的负担。

在某种程度上,Pandas 是实施数据清洗/整理(Data Wrangling)最好用的工具之一。

图形绘制Matplotlib与Seaborn

众所周知,MATLAB、R 及 gnuplot 等都具有非常出色的绘图功能。事实上,Python 也提供了绘图功能非常强大的类库 Matplotlib。使用它可以很方便地绘制散点图、折线图、条形图、直方图、饼图等专业图形。

类似于 NumPy 是 Pandas 的基础库一样,Matplotlib 也可以作为其他更高阶绘图工具的基础库。Seaborn 就是这样的高级库,它对 Matplotlib 做了二次封装。Matplotlib 功能虽然很强大,但想用好却有较高的门槛。比如,通过 Matplotlib 绘制的图形,如果还想更加精致,就需要做大量的微调工作。因此,在某些场合,可用 Seaborn 替代 Matplotlib 进行绘图。

scikit-learn

机器学习是当下的研究热点,Python 社区更是在此领域引领了潮流,scikit-learn 便是其中的佼佼者。

scikit-learn 构建于 NumPy 和 SciPy 之上,提供了一系列经典的机器学习算法,如聚类、分类和回归等,也提供了一些数据集供初学者学习、使用,如鸢尾花分类数据集、波士顿房价预测数据集、手写数字识别数据集等,还提供了统一的接口供用户调用。十多年来,先后有超过 40 位机器学习专家参与 scikit-learn 代码的维护和更新工作,它已成为当前相对成熟的机器学习开源项目。

事实上,除了前面提及的几个常用类库,Python 还提供一些其他实用库。比如,用于网站数据抓取的 Scrapy,用于网络挖掘的 Pattern,用于自然语言处理的 NLTK 和用于深度学习的 TensorFlow 等。

相关文章