《数据科学与分析:Python语言实现》 —2 Python:完全不同的编程语言

举报
华章计算机 发表于 2020/02/15 19:06:05 2020/02/15
【摘要】 本节书摘来自华章计算机《数据科学与分析:Python语言实现》 一书中第2章,第2.1.1节,作者是[英]赫苏斯·罗格尔–萨拉查(Jesús Rogel-Salazar),白 皓 刘江一 上官明乔 刁 娟 译。

第2章

Python:完全不同的编程语言

编程语言和范例从来都不缺乏,尽管如此,由Guido van Rossum在1989年开始的“业余爱好编程项目”仍慢慢拥有了生命力,以及一个非常活跃的社区,并适用于各种场合。它的成功可能要归功于其代码的紧凑性,或者是开源的事实,甚至是工具集的多样性。不管是什么原因,Python都是数据科学家不可或缺的工具组中的一部分。

Python名字的由来其实和世界上最大的无毒蛇没有任何关系。相反,它取自英国喜剧剧团Monty Python。创建Python是为了吸引UNIX / C程序员。今天,Python强调代码可读性和表达性的语法,使其成为一种通用的、高级的、面向对象的编程语言,可在多个平台上使用,并提供大量支持包和模块。

下面显示的就是Python语言的一些最具定义性的特性,包括使用缩进对语句进行分组,以及被称为Pythonic的编码样式(即由经验丰富的Python程序员使用的样式指南和习惯用法,也称为Pythonistas)。通过导入this模块,可以在任何Python安装中读取这些指导原则。该编程哲学是由Python创始人Tim Peters编写的。

 image.png

image.png

 

本书假定读者掌握一些基础的编程原理并在一定程度上熟悉Python。尽管如此,在本章中,我们也会简要回顾一下将在本书中使用的语言的一些概念和特性。如果你是一位经验丰富的Python程序员,可以跳过本章并继续下一章。但是,如果你有兴趣复习这些知识,请继续阅读以下内容,你可能会发现完全不同的东西。对于那些正准备开始Python之旅的读者来说,本章可能会激起你学习更多知识的兴趣。这里提供了足够的资源供你参考。

2.1 为何是Python?为何不是?

我们在上文提到了Python强调代码的可读性,这对生产力也是一种促进:不仅数据科学家能够创建脚本作为批处理执行,而且能够启动交互式控制台(例如iPython Shell)或笔记本电脑(iPython / Jupyter Notebook,参见2.1.2节)。此外,Python 还有各种扩展和增强语言的包以供选择。

例如,NumPy模块提供了可以操作数值数组和矩阵的函数。SciPy模块支持科学计算中通常需要的功能,如优化算法(optimisation)、线性代数例程、傅里叶变换等。

Python对分层模块化的支持使程序员和开发人员可以构建更多功能。一个很好的例子是Pandas包,它将NumPy数组扩展为数据帧,以便于进行数据处理和分析(参见2.5节)。我们将在本书的其余部分使用Pandas。同样,在本书中,我们将广泛使用Matplotlib、Statsmodels和Scikit-learn等软件包,分别实现绘图、统计模型和机器学习算法。

确实,Python是一种解释型语言,也就是说代码是逐行读取和执行的,因此代码执行速度可能通常比为针对机器架构先编译再执行的语言慢一些,但是Python中的源代码是动态解释的,其主要优点是灵活。这是数据科学工作流程中的一个重点,因为我们更关注实现时间而非执行时间:在许多情况下,我们更感兴趣的是掌握原始数据而不是针对特定的机器去调优执行时间。

这给我们带来了另一个优势:由于Python代码无须编译,因此具有可移植性。在一个环境中开发的脚本只需要进行适当安装(如安装Python解释器)即可在其他环境中执行。Python对于数据科学工作流中的绝大多数计算任务来说运行性能足以满足需求,但更重要的是确保逻辑正确,如果需要,以后可以执行得更快。

本书中假设你已经安装了Python,此外,还假设安装的版本是Python 3.x而不是Python 2.x。我想指出的是,尽管Python 2.x版本目前仍被广泛使用,但越来越多的用户正在使用Python 3.x。请注意,可能有一些软件包尚未更新以适应两个版本之间的不兼容性。希望在不久的将来,这些不一致之处得到解决,社区最终会转向使用Python 3.x版本。

特别地,我发现由Continuum Analytics构建的Anaconda distribution非常强大且完整,足以满足我们的需求。此外,它适用于Windows、MacOS和Linux。可以从http://continuum.io/获取安装包,并按照对应版本提供的步骤操作。请注意,其他软件包的Python 3.x安装同样适用于本书其余部分的讨论,我将明确提及所需的模块或软件包,以便经验丰富的用户能够使用pip、easy-install、Homebrew或其他适合他们的安装方法来完成环境的相应配置。

2.1.1 使用Shell或不使用Shell

上文中已经提及Python是一种解释型语言,因此可以与在会话过程中已经执行的不同命令进行交互。类似地,也可以先编写所有命令并在更传统的开发工作流程中逐一执行它们。这两种方法都有其优点和缺点,幸运的是你不必纠结到底选择哪一种方法,因为Python足够灵活,可以让你同时使用这两种方法。

如果有兴趣在编写代码时与代码进行交互,那么可以启动iPython Shell,它将允许用户输入命令,并可立即将其发送到解释器以供执行。然后,用户可以获取输出结果并继续分析。这种工作方式让我们可以边工作边看到命令的执行结果。这是在大型项目中实现代码原型的绝佳方式。

不幸的是,以这种方式工作只会使代码暂存于内存中,除非你发出命令将其保存到解释器。如果你有兴趣跟踪开发并重复执行一系列命令,则可以将这些命令保存在文本文件中以创建Python脚本,按照惯例,该脚本具有.py扩展名。执行这些脚本不需要使用Python Shell,而是可以通过以下语法直接从命令行执行:

 image.png

我们假设名为myscript.py的脚本保存在本地路径中。使用Python脚本可以更轻松地启动而不需要用户重复输入较长的作业指令。

在本书中,我们将采用交互式Shell(代码与Python / iPython Shell兼容)的方法,以便能够及时使用解释器给出的输出来解释我们正在采取的不同步骤,然后可以将这些单独的命令保存在可以稍后运行的脚本中。因此,我们将提供如下代码:

 image.png

请注意,尖括号“>”表示Python Shell提示符,其中下一行为代码行。此外,如果发送给解释器的命令需要打印结果,Shell将自动显示它。为了便于解释,在我们不期望结果或讨论要求我们分解代码的情况下,我们将以脚本样式显示它。换句话说,不会显示Shell提示符:

 image.png

Python中的注释使用哈希符号“#”来表示。解释器将忽略直到行尾的所有命令。在下面的示例中,我们在执行除法运算后输入注释:

 image.png

请注意,Python 2中的行为与此不同,因为上面的操作将导致整数除法:

 image.png

由于我们已经将两个整数传递给解释器,因此Python执行整数除法,仅返回整数部分。如果我们想要实现真正的除法,可以使用如下命令:

 image.png

在Python 2.x中,我们可以使用_ _future_ _模块从Python 3.x导入功能,如下所示:

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。