1.3 Python类库

Python语言之所以能成为世界上最受欢迎的语言(至少现在看是这样),其中一个重要的原因,就是Python拥有规模庞大的第三方库,如科学计算中常用的Numpy和SciPy,以及机器学习中常用到的Scikit-Learn和Tensorflow。这些第三方库为Python的流行,做出了决定性的贡献。

然而,在Python发展的早期,第三方库却曾一度成为Python语言发展的绊脚石。之所以会出现这种情况,主要是因为,Python在版本更迭的过程中,由于第三方库由全球开发者分布式维护,缺乏统一管理,进而造成用户缺乏方便快捷的包管理工具,来使其获得第三方库所带来的便利。而随着Python核心团队推出pip包管理工具,这些曾经极大地制约Python发展与推广的困难,都得到了解决。

1.3.1 基本概念

为了理解类库,首先我们需要了解一些相关概念。

变量(variable):变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。

函数(Function):函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法

模块(Module):Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

包(Package):含有_init_.py文件的目录我们称之为包。可以使用import导入包,或者from + import来导入包中的部分模块。包目录下为首的一个文件便是 _init_.py。然后是一些模块文件和子目录,假如子目录中也有 _init_.py 那么它就是这个包的子包了。

库(Library):多个为处理某一类问题的*.py文件

图2.x描述了,上述术语的从属关系。

在后续讲解中,我们不再详细区分函数库(Library)和模块(Module),对于所有使用import导入的代码,我们都统称为“模块“。

1.3.2 常用Python类库

Python类库分为两种,一种为Python语言内置类库,也即标准库,另一种为第三方库。表2.1和表2.2分别列举了常用的标准库和常用的第三方数据科学类库。

表2.1 Python常用标准库

库类别库名称简介

系统

os

os模块可以令使用操作系统相关功能变得更加方便。该模块提供了读取,写入文件,操作路径等方法。

shutil

shutil提供高级文件和目录处理方法

sys

sys模块提供对某些由解释器使用或维护的变量的访问,以及对与解释器强交互的函数的访问。

文件通配符

glob

glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。

字符串处理

re

re提供了类似于Perl的正则表达式匹配操作。要匹配的模式和字符串可以是Unicode字符串以及8位字符串。

数学

math

数学库,包含基本数学函数如开方(sqrt),平方(square)

互联网

urlib

urllib 是一个收集了多个使用URL的模块的软件包:

smtplib

smtplib模块定义一个smtp客户机会话对象,该对象可用于使用smtp或esmtp侦听器守护程序向任何Internet计算机发送邮件。有关SMTP和ESMTP操作的详细信息,请参阅RFC821(简单邮件传输协议)和RFC1869(SMTP服务扩展)。

日期和时间

datetime

datetime 模块提供了用于以简单和复杂的方式操作日期和时间的类。在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。相关功能还可以参阅 timecalendar 模块。

数据压缩

zlib

此模块为需要数据压缩的程序提供了一系列函数,用于压缩和解压缩。

测试

doctest

doctest模块搜索看起来像交互式python会话的文本片段,然后执行这些会话以验证它们是否如图所示工作。

表2.2 数据科学常用类库

库类别库名称简介

科学计算

Numpy

Numpy(Numeric Python)是Python一个开源的科学计算扩展库。NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。

SciPy

Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。

SymPy

Sympy是一个用于符号数学运算的Python库。

Pandas

Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

数据可视化

Matplotlib

Matplotlib是一个python 2d绘图库,它以各种硬拷贝格式和跨平台的交互环境生成出版物质量图。matplotlib可以用于python脚本、python和ipython shell(_la matlab或mathematica)、Web应用程序服务器以及各种图形用户界面工具包。

Seaborn

Seaborn在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。

机器学习

GraphLab

GraphLab 作为一个基于图处理的并行计算框架,可以高效地运行机器学习相关的数据依赖性强,迭代型算法。

Scikit-Learn

Scikit-Learn是一个用Python语言编写的机器学习算法库。Scikit-Learn作为一款机器学习开源框架堪称机器学习库中的瑞士军刀。

Tensorflow

TensorFlow是一个端到端的开放源码平台,用于机器学习。它拥有一个由工具、库和社区资源组成的全面、灵活的生态系统,使研究人员能够在ML中推动最先进的技术,开发人员可以轻松地构建和部署基于ML的应用程序。

Keras

Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把研究人员的idea迅速转换为结果。

Last updated