前言 Preface

“塔尔山上有黄金!”[1]

欢迎阅读本书!在本书中,读者将学习当今最引人注目的前沿计算技术,并使用Python进行编程。Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。

开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。

几十年来,一些趋势已经强有力地显现出来。计算机硬件已经迅速变得更快、更便宜、更小;互联网带宽已经迅速变得越来越大,同时也越来越便宜;优质的计算机软件已经变得越来越丰富,并且通过“开源”方式免费或几乎免费;很快,“物联网”将连接数以百亿计的各种可想象的设备。这将导致以快速增长的速度和数量生成大量数据。

在今天的计算技术中,最新的创新都是关于数据的—数据科学、数据分析、大数据、关系数据库(SQL)以及NoSQL和NewSQL数据库,我们可以通过Python编程的创新处理方式解决每一个问题。

需要数据科学技能的工作

2011年,麦肯锡全球研究院发表了报告“Big data: The next frontier for innovation, competition and productivity”。报告认为:“仅美国就面临着14万到19万深度分析人员的缺口,以及150万能分析大数据并可根据分析结果做决策的经理和分析师的缺口。”[2]目前情况仍然如此。2018年8月的“LinkedIn Workforce Report”称,美国数据科学人员的缺口超过15万[3]。来自IBM、Burning Glass Technologies和商业高等教育论坛的2017年报告称,到2020年,美国有数十万个需要数据科学技能的新工作岗位[4]

模块化结构

本书的模块化结构(见下图)有助于满足各种专业读者的多样化需求。

第1~10章介绍Python编程。在这些章中,每一章都包括一个简短的数据科学入门部分,用于介绍人工智能、基础的描述性统计、集中趋势度量、离中趋势度量、模拟、静态和动态可视化、用于数据探索和数据整理的pandas、使用CSV文件、时间序列和简单线性回归。这些内容将帮助读者为第11~16章中数据科学、人工智能、大数据和云案例研究方面的学习做好准备,读者通过学习完整的案例研究可学会使用真实的数据集。

在学习完关于Python编程的第1~5章所有内容及第6~7章的部分关键内容之后,读者将能够理解第11~16章中的大部分案例研究。前言后面的“章节依赖性”部分将帮助教师在本书独特的结构背景下规划他们的专业课程。

第11~16章充满了酷炫、强大、新颖的例子,提供了多种主题的实践案例研究,如自然语言处理,Twitter数据挖掘,IBM Watson认知计算,包括分类和回归在内的有监督机器学习,聚类无监督机器学习,卷积神经网络深度学习,递归神经网络深度学习,包括Hadoop、Spark、NoSQL、物联网在内的大数据等。在此过程中,读者将掌握广泛的数据科学术语和概念,从简短的定义到在小型、中型和大型程序中使用的概念。通过浏览本书详细的目录和索引能够了解本书所覆盖的内容。

主要特点

保持简单(KIS)、保持小规模(KIS)、保持前沿(KIS)

  • 保持简单—在本书的每个方面,我们都力求简洁明了。例如,当介绍自然语言处理时,我们使用简单直观的TextBlob库而不是更复杂的NLTK。在深度学习中,我们使用Keras而不是TensorFlow。通常,当可以使用多个库来执行类似的任务时,我们使用最简单的那一个。
  • 保持小规模—本书538个示例中的大多数都规模很小,通常只有几行代码,且后面跟着IPython的即时交互式运行结果。书中也包含了40个较大的脚本和深入的案例研究。
  • 保持前沿—我们阅读了大量最新的Python编程和数据科学书籍,浏览、阅读或观看了大约15,000篇最新文章、研究论文、白皮书、视频、博客文章、论坛帖子和文档片段。这使我们能够掌握Python、计算机科学、数据科学、人工智能、大数据和云社区的“脉搏”。

即时反馈:用IPython探索、发现和实验

  • 学习本书的理想方法是,在阅读的同时运行代码示例。在整本书中,我们始终使用IPython解释器,它提供了友好的即时反馈交互模式,以便快速探索、发现和实验Python及其大量的库。
  • 大多数代码都是在小型交互式IPython会话中呈现的。对于每个代码段,IPython会立即读取、执行并输出运行结果。这种即时反馈有助于保持读者的注意力、促进学习、促进快速原型化并加速软件开发过程。
  • 本书始终强调实时代码方法,专注于具有实时输入和输出的、完整的、能正常运行的程序。IPython的“神奇之处”在于,当读者每输入一行代码时,代码都会被实时地执行,这对学习和提高编程实验效果都有积极作用。

Python编程基础

  • 本书全面覆盖了Python编程基础知识。
  • 讨论了Python的编程模型,包括过程编程、函数式编程和面向对象编程。
  • 使用最佳实践方式,强调当前的习惯用法。
  • 全书都使用了函数式编程风格。4.17节中的表列出了Python函数式编程的大部分关键功能,以及介绍它们的章。

538个代码示例

  • 通过538个真实例子(从单个代码段到大量的计算机科学、数据科学、人工智能和大数据案例),读者将看到富有挑战性和趣味性的关于Python的生动介绍。
  • 读者将使用人工智能、大数据、云技术(如自然语言处理、Twitter数据挖掘、机器学习、深度学习、Hadoop、MapReduce、Spark、IBM Watson),以及关键数据科学库(NumPy、pandas、SciPy、NLTK、TextBlob、spaCy、Textatistic、Tweepy、scikit-learn、Keras)、关键可视化库(Matplotlib、Seaborn、Folium)等来完成重要任务。

避免烦琐的数学,倾向于文字解释

  • 关注数学的概念本质,并将其用于例子中。通过使用诸如statistics、NumPy、SciPy、pandas以及其他许多库来实现这一点,这些库隐藏了数学本身的复杂性。因此,读者可以直接利用线性回归等数学技术解决问题,而无须了解其背后的数学知识。在机器学习和深度学习的例子中,我们专注于创建用于数学运算但隐藏数学细节的对象。

可视化

  • 67个静态、动态、动画和交互式可视化数据(图表、图形、图片、动画等),可帮助读者理解概念。
  • 聚焦于Matplotlib、Seaborn、pandas和Folium(用于交互式地图)所产生的高级可视化效果,而不包括对低级图形编程的处理。
  • 使用可视化作为教学工具。例如,通过动态模具轧制模拟和条形图使大数定律更加生动形象。随着卷数的增加,读者将看到每个面占总卷数的百分比逐渐接近16.667%(1/6),并且代表百分比的条形的大小逐渐均衡。
  • 可视化对于大数据中的数据探索和展示可重复的研究结果至关重要,其中数据项的数量可以是数百万、数十亿甚至更多。一个常见的说法是,一图胜千言—在大数据中,一个可视化结果相当于数据库中数十亿、数万亿甚至更多的数据项。可视化使读者能够“在4万公里的高空看数据”,即以更宏观的方式查看并了解这些数据。描述性统计对掌握数据概况有所帮助,但可能会产生误导。例如,Anscombe的四重奏通过可视化展示出:显著不同的数据集可能具有几乎相同的描述性统计
    结果。
  • 展示了可视化和动画化代码,以便读者可以实现自己的代码。本书还在源代码文件和Jupyter Notebook中提供动画,因此读者可以方便地自定义代码和动画化参数,重新执行动画并查看更改的效果。

数据实验

  • 第11~16章的数据科学入门和案例研究部分提供了丰富的数据实验。
  • 读者将使用许多真实数据集和数据源。可以在线获得各种各样的免费开源数据集以进行相关实验。书中引用的一些网站列出了数百或数千个数据集。
  • 读者可以将使用的许多库与热门数据集捆绑在一起,以方便进行实验。
  • 读者将学习如何进行下列操作:数据获取和分析前的数据准备,使用多种技术分析数据,调整模型并有效地展示结果(尤其是通过可视化),等等。

GitHub

  • GitHub是查找开源代码以将其合并到你的项目中(以及将代码贡献给开源社区)的绝佳场所。它也是软件开发者库中的一个关键元素,其中包含版本控制工具,可帮助开发者团队管理开源(和私有)项目。
  • 读者将使用各种免费、开源的Python库和数据科学库,以及软件和云服务的免费版、免费试用版和免费增值服务。许多库都托管在GitHub上。

云计算实践

  • 大部分的大数据分析都发生在云端,可以轻松地动态扩展应用程序所需的硬件和软件数量。读者将使用各种基于云的服务(直接的或间接的),包括Twitter、Google Translate、IBM Watson、Microsoft Azure、OpenMapQuest、geopy、Dweet.io和PubNub。
  • 我们鼓励读者使用免费、免费试用或免费增值云服务。我们更喜欢那些不需要使用信用卡支付的服务,因为这样不会存在意外收到大笔账单的风险。如果读者决定使用需要信用卡支付的服务,请确保免费升级的服务不会自动跳转到付费升级。

数据库、大数据和大数据基础设施

  • 根据IBM(2016年11月)的报道,世界上90%的数据都是在过去两年中创建的。证据表明,数据创建的速度正在迅速加快。
  • 根据AnalyticsWeek 2016年3月的文章,五年内将有超过500亿台设备连接到互联网。到2020年,我们将为地球上的每个人每秒生成1.7MB的新数据![5]
  • 本书包含使用SQLite处理关系数据库和SQL的内容。
  • 数据库是对待处理的大量数据进行存储和操作的关键大数据基础设施。关系数据库用于处理结构化数据,而不适用于大数据应用程序中的非结构化和半结构化数据。因此,随着大数据的发展,NoSQL和NewSQL数据库被创建,以有效地处理这些数据。本书包括关于NoSQL和NewSQL的概述以及使用MongoDB JSON文档数据库的实际案例研究。MongoDB是最受欢迎的NoSQL数据库。
  • 第16章将讨论大数据硬件和软件基础设施。

人工智能案例研究

  • 在第11~15章的案例研究中,给出了人工智能主题的内容,包括自然语言处理、通过Twitter数据挖掘做情感分析、使用IBM Watson进行认知计算、有监督机器学习、无监督机器学习和深度学习。第16章介绍了大数据硬件和软件基础设施,使计算机科学家和数据科学家能够实施基于AI的尖端解决方案。

内置类型:列表、元组、集合、字典

  • 目前大多数应用程序开发人员都没有自己创建数据结构的必要。本书用两章篇幅对Python的内置数据结构(列表、元组、字典和集合)进行了详细介绍,使用这些数据结构可以完成大多数任务。

使用NumPy数组和pandas的SeriesDataFrame进行面向数组的编程

  • 我们还关注来自开源库的三个关键数据结构,包括NumPy数组、pandas Series和pandas DataFrame。它们被广泛用于数据科学、计算机科学、人工智能和大数据。NumPy提供的数组比内置Python列表在性能上高出两个数量级。
  • 第7章对NumPy数组进行了详细介绍。许多库(如pandas)都是基于NumPy构建的。第7~9章中的数据科学入门部分介绍了pandas的SeriesDataFrame,在其他章节中它们会与NumPy数组组合使用来解决一些问题。

文件处理和序列化

  • 第9章介绍了文本文件处理,然后展示了如何使用流行的JSON(JavaScript Object Notation,JavaScript对象表示法)格式序列化对象。JSON在数据科学章节中会被频繁使用。
  • 许多数据科学库提供内置的文件处理功能,用于将数据集加载到Python程序中。除了纯文本文件之外,我们还使用Python标准库的csv模块和pandas数据科学库的功能,以流行的CSV(逗号分隔数据值)格式处理文件。

基于对象的编程

  • 我们强调使用Python开源社区已经打包到行业标准类库中的大量有价值的类。读者将专注于了解有什么库可以使用、选择应用程序所需要的库、根据已有的类创建对象(通常使用一行或两行代码),并使它们在程序中发挥作用。基于对象的编程使读者能够快速、简洁地构建功能强大的应用程序,这是Python所具有的主要吸引力之一。
  • 使用这种方法,读者将能够使用机器学习、深度学习和其他人工智能技术快速解决各种有趣的问题,包括认知计算挑战,如语音识别和计算机视觉。

面向对象编程

  • 开发自定义类是一项关键的面向对象编程技能,同时还包括继承、多态性和鸭子类型。第10章将讨论这些问题。
  • 第10章包括关于使用doctest做单元测试的讨论,以及一个有趣的洗牌和分牌模拟的问题。
  • 第11~16章只需要定义一些简单的自定义类。在Python中,读者可能会使用更多的基于对象的编程方法,而不是完全面向对象的编程。

可重复性

  • 在一般的科学研究,特别是数据科学研究中,需要复现实验和研究的结果,并结合这些结果进行有效的交流。Jupyter Notebook是实现这一目标的首选方法。
  • 我们将在整本书中讨论编程技术和软件(如Jupyter Notebook和Docker)的可重复性。

性能

  • 在几个示例中,我们使用%timeit分析工具比较不同方法执行相同任务的性能。其他性能相关的讨论包括生成器表达式、NumPy数组与Python列表、机器学习和深度学习模型的性能,以及Hadoop和Spark分布式计算性能。

大数据和并行化

  • 在本书中,读者不必编写自己的并行化代码,而是让像Keras这样的库运行在TensorFlow上,让Hadoop和Spark这样的大数据工具自动为你进行并行化操作。在这个大数据/人工智能时代,为了满足海量数据应用程序的处理需求,需要利用多核处理器、图形处理单元(GPU)、张量处理单元(TPU)和云中的大型计算机集群提供的真正并行性。一些大数据任务可以在数千个处理器上并行处理,以便快速完成大量数据的分析。

章节依赖性

如果你是一名为专业培训课程规划教学大纲的培训师,或者是一名要决定阅读哪些章节的开发人员,下面的内容将帮助你做出最佳决策。请阅读前面的模块化结构图,你将很快熟悉这本书独特的结构。按顺序讲授或阅读本书是最容易的,但是,第1~10章末尾的数据科学入门部分和第11~16章中的案例研究的大部分内容只需要第1~5章的知识和下面讨论的第6~10章的小部分知识。

第一部分:Python基础知识快速入门

建议读者按照以下顺序阅读各章:

  • 第1章介绍基本概念,为第2~10章中的Python编程以及第11~16章中的大数据、人工智能和基于云的案例研究奠定基础。本章还包括IPython解释器和Jupyter Notebook的使用方法。
  • 第2章通过说明关键语言特性的代码示例介绍了Python编程的基础知识。
  • 第3章介绍了Python的控制语句,并介绍了基本的列表处理方法。
  • 第4章介绍了自定义函数、随机数生成的仿真技术以及元组的基础知识。
  • 第5章更详细地介绍了Python内置的列表和元组类型,并开始介绍函数式编程。

第二部分:Python数据结构、字符串和文件

下面总结了第6~9章的章节间依赖性,这里假设读者已经阅读了第1~5章:

  • 第6章的数据科学入门部分不依赖于本章的内容。
  • 第7章的数据科学入门部分需要用到字典(第6章)和数组(第7章)的知识。
  • 第8章的数据科学入门部分需要原始字符串和正则表达式(见8.11节和8.12节)的知识,以及7.14节的pandas SeriesDataFrame功能。
  • 第9章中,对于JSON序列化,有必要了解字典的基础知识(6.2节)。此外,数据科学入门部分需要用到内置的open函数和with语句(9.3节),以及7.14节的pandas DataFrame功能。

第三部分:Python高级主题

下面总结了第10章的章节间依赖性,这里假设读者已经阅读了第1~5章:

  • 第10章的数据科学入门部分需要用到7.14节的pandas DataFrame功能。希望只涵盖类和对象的培训师,可以选讲10.1~10.6节;希望涵盖更高级主题(如继承、多态性和鸭子类型)的培训师,可以选讲10.7~10.9节;10.10~10.15节提供了更多的高级功能。

第四部分:人工智能、云和大数据案例研究

下面总结了第11~16章的章节间依赖性,这里假设读者已经阅读了第1~5章。第11~16章的大部分内容还需要6.2节的字典基础知识。

  • 第11章使用7.14节的pandas DataFrame功能。
  • 第12章使用pandas DataFrame功能(7.14节)、字符串的join方法(8.9节)、JSON基础(9.5节)、TextBlob(11.2节)和词云(11.3节)。一些例子需要通过继承来定义一个类(第10章)。
  • 第13章使用内置的open函数和with语句(9.3节)。
  • 第14章使用NumPy数组的基础知识和unique方法(第7章)、pandas DataFrame功能(7.14节)和Matplotlib的subplots函数(10.6节)。
  • 第15章需要NumPy数组的基础知识(第7章)、字符串的join方法(8.9节)、第14章的一般机器学习概念和14.3节介绍的一些功能。
  • 第16章使用了字符串的split方法(6.2.7节)、Matplotlib FuncAnimation(6.4节)、pandas SeriesDataFrame功能(7.14节)、字符串的join方法(8.9节)、json模块(9.5节)、NLTK停用词(11.2.13节),以及第12章中的Twitter认证、用于流媒体推文的Tweepy的StreamListener类、geopyfolium库。一些例子需要通过继承来定义类(第10章),但是读者可以简单地模仿我们提供的类定义,而不必阅读第10章。

Jupyter Notebook

为了方便读者,我们在Python源代码(.py)文件中提供了本书的代码示例,供命令行IPython解释器使用,以及作为Jupyter Notebook(.ipynb)文件使用,读者可以将其加载到Web浏览器中执行。

Jupyter Notebook是一个免费、开源的项目,它使我们能够将文本、图形、音频、视频和交互式编码功能结合起来,以便在Web浏览器中快速方便地输入、编辑、执行、调试和修改代码。文章“What Is Jupyter?”中介绍过:

Jupyter已经成为科学研究和数据分析的标准。它将计算和参数打包在一起,让我们构建“计算故事”;……并简化了将工作软件分发给队友和同事的问题。[6]

根据我们的经验,这是一个很好的学习环境和快速原型制作工具。出于这个原因,我们使用Jupyter Notebook而不是传统的IDE,例如Eclipse、Visual Studio、PyCharm或Spyder。学者和专业人士已经广泛使用Jupyter来分享研究成果。Jupyter Notebook是通过传统的开源社区机制[7]提供支持的(参见后面的“获取Jupyter帮助”部分)。有关软件安装的详细信息,请参阅前言后面的“开始阅读本书之前”;有关运行本书示例的信息,请参
阅1.5节。

协作和共享结果

团队合作和交流研究结果对开发人员来说是很重要的,对于在工业界、政府部门或学术界担任或准备担任数据分析师职位的开发人员来说:

  • 通过复制文件或GitHub,你创建的笔记本很容易在团队成员之间共享。
  • 研究结果(包括代码和见解)可以通过nbviewer(https://nbviewer.jupyter.org)和GitHub等工具共享为静态网页,这两种工具都自动将笔记本呈现为网页。

可重复性:Jupyter Notebook的有力案例

在数据科学和一般科学中,实验和研究应该是可重复的。这已经在文献中提过多年,包括:

  • Donald Knuth 1992年的计算机科学出版物—Literate Programming[8]
  • 文章“Language-Agnostic Reproducible Data Analysis Using Literate Programming”[9]中提到:“Lir(文学、可重复的计算)是以Donald Knuth提出的文学程序设计理念为基础的。”

从本质上讲,可重复性捕获了用于生成结果的完整环境,包括硬件、软件、通信、算法(尤其是代码)、数据和数据来源(起源和沿袭)。

Docker

在第16章中,我们将使用Docker。Docker是一个将软件打包到容器中的工具,而容器可以方便地、可重复地和跨平台可移植地将执行软件所需的所有内容捆绑到该软件中。我们在第16章中使用的一些软件包需要复杂的设置和配置。对于其中的许多软件包,读者可以下载已有的免费Docker容器。这使读者可以避免复杂的安装问题,并在台式机或笔记本电脑上进行本地软件的执行,使Docker成为帮助你快速方便地开始使用新技术的好方法。

Docker还有助于可重复性。读者可以创建自定义Docker容器,这些容器配置了每个软件的版本以及你在研究中使用的每个库。这将使其他开发人员能够重新创建你使用的环境,然后重现你的工作,并帮助你重现自己的结果。在第16章中,你将使用Docker下载并执行一个预配置的容器,以便使用Jupyter Notebook编写和运行大数据Spark应用程序。

特殊功能:IBM Watson分析和认知计算

在早期研究中,我们对IBM Watson的兴趣日益增长。我们调查了竞争性服务,并发现了Watson对于“免费升级”的“无须信用卡支付”政策,这使其成为读者最友好的选择之一。

IBM Watson是一个广泛应用于各种实际场景的认知计算平台。认知计算系统模拟人类大脑的模式识别和决策能力,以便在“消耗”更多数据时“学习”[10]。本书包含一个重要的
Watson动手实践示例。我们使用免费的“Watson Developer Cloud:Python SDK”,它提供的API使我们能够以编程方式与Watson的服务进行交互。Watson使用起来很有趣,也是传播你的创意成果的绝佳平台。本书将演示或使用以下Watson API:对话、发现、语言翻译、自然语言分类器、自然语言理解、个性洞察服务、语音转文本、文本转语音、语调分析器和视觉识别。

Watson的Lite层服务和一个很酷的Watson案例研究

IBM通过为其许多API提供免费的Lite层来鼓励大家学习并进行实验[11]。在第13章中,读者将尝试许多Watson服务的演示程序[12]。然后,你将使用Watson的文本转语音、语音转文本和翻译服务的Lite层,实现一个“旅行者助理”翻译应用程序。你以英语问一个问题,然后该应用程序会将你的语音转换为英语文本,再将该文本翻译为西班牙语并朗读。接下来,你将以西班牙语回复(如果你不会说西班牙语,我们会给你提供可以使用的音频文件),然后该应用程序快速把语音转换为西班牙语文本,再将该文本翻译为英语并用英语朗读。很酷的案例!

教学方法

本书包含大量从许多领域提取的示例。读者将使用真实的数据集来完成有趣的、真实的示例。本书注重良好的软件工程规范和程序可读性。

使用字体进行强调

关键术语以粗体显示,方便读者参考相关内容,Python代码以特殊字体显示,例如,x = 5

538个代码示例

本书的538个示例包含大约4000行代码。对于包含这么多内容的一本书来说,这个代码量相对较小,这是因为Python是一种表达性语言。此外,本书的编码风格是尽可能地使用强大的类库来完成大部分工作。

160个图、表

本书提供了丰富的图、表。

编程智慧

本书将两位作者丰富的编程和教学经验融入编程智慧的讨论中,包括:

  • 良好的编程实践和首选的Python惯用语法,可帮助读者编写出更清晰、更易于理解和维护的程序。
  • 常见的编程错误可以降低读者犯这些错误的可能性。
  • 避免错误的提示,提供有关发现错误并将其从程序中删除的建议。其中许多提示都描述了避免编程错误的技巧。
  • 性能提示,突出使程序运行更快或最小化它们所占用内存量的方法。
  • 软件工程观察,突出了软件构建中的架构和设计问题,特别是大型系统。

本书使用的软件

本书使用的软件适用于Windows、macOS和Linux,可从互联网免费下载。本书的示例是使用免费的Anaconda Python发行版编写的。该发行版包括读者需要的大多数Python库、可视化库和数据科学库,以及IPython解释器、Jupyter Notebook和Spyder,这些被认为是最好的Python数据科学IDE中的一部分。本书仅使用IPython和Jupyter Notebook进行程序开发。前言后面的“开始阅读本书之前”讨论了安装Anaconda的方法以及使用书中示例所需的一些其他项目。

Python文档

在阅读本书时,你会发现以下文档特别有用:

  • Python语言参考:https://docs.python.org/3/reference/index.html
  • Python标准库:https://docs.python.org/3/library/index.html
  • Python文档列表:https://docs.python.org/3/

获取问题答案

有关Python及其常规编程的流行在线论坛包括:

  • python-forum.io
  • https://www.dreamincode.net/forums/forum/29-python/
  • StackOverflow.com

此外,许多供应商为其工具和库提供论坛。本书使用的许多库都在github.com上进行管理和维护。一些库维护者通过该库的GitHub页面上的“Issues”选项卡提供技术支持。如果读者无法在线找到问题的答案,请参阅我们的网页http://www.deitel.com[13]

获取Jupyter帮助

Jupyter Notebook通过以下方式提供相关支持:

  • Project Jupyter Google Group,https://groups.google.com/forum/#!forum/jupyter
  • Jupyter实时聊天室,https://gitter.im/jupyter/jupyter
  • GitHub,https://github.com/jupyter/help
  • StackOverflow,https://stackoverflow.com/questions/tagged/jupyter
  • Jupyter for Education Google Group(适合使用Jupyter教学的教师),https://groups.google.com/forum/#!forum/jupyter-education

补充

为了充分利用本书,读者应该阅读书中的相应讨论并执行每个代码示例。在本书的网页http://www.deitel.com上,我们提供了:

  • 用于本书代码示例的可下载的Python源代码(.py文件)和Jupyter Notebook(.ipynb文件)。
  • 入门视频演示了如何在IPython和Jupyter Notebook中使用代码示例。1.5节也介绍了这些工具。
  • 博文和书籍更新。

有关下载说明,请参阅前言后面的“开始阅读本书之前”。

联系作者

如有疑问或想提交勘误,请发送电子邮件给我们:

deitel@deitel.com

或通过社交媒体与我们互动:

  • Facebook(http://www.deitel.com/deitelfan)
  • Twitter(@deitel)
  • LinkedIn(http://linkedin.com/company/deitel-&-associates)
  • YouTube(http://youtube.com/DeitelTV)

致谢

感谢Barbara Deitel长时间致力于本项目的互联网研究。我们也很荣幸能够与Pearson的专业出版团队合作。感谢我们的朋友兼同事、培生IT专家组的副总裁Mark L. Taub的工作和25年来的指导。Mark和他的团队在Safari服务(https://learning.oreilly.com/)上发布了我们的专业书籍、LiveLessons视频产品和学习路径。他们还赞助了我们的Safari在线培训研讨会。Julie Nahil负责管理本书的出版。英文原书的封面由Chuti Prasertsith设计。

感谢审稿人的辛勤工作。Patricia Byron-Kimball和Meghan Jacoby招募审稿人并管理了审核流程。审稿人严格审查书稿,为提高本书的准确性、完整性和及时性提供了无数的建议。

审稿人

书籍审稿人

Daniel Chen,Lander Analytics 公司的数据科学家

Garrett Dancik,东康涅狄格州立大学计算机科学系与生物信息学系副教授

Pranshu Gupta,迪西尔斯大学计算机科学系助理教授

David Koop,马萨诸塞大学达特茅斯分校助理教授、数据科学委员会副主任

Ramon Mata-Toledo,詹姆斯·麦迪逊大学计算机科学系教授

Shyamal Mitra,得克萨斯大学奥斯汀分校计算机科学系高级讲师

Alison Sanchez,圣地亚哥大学经济学专业助理教授

José Antonio González Seco,IT顾问

Jamie Whitacre,独立数据科学顾问

Elizabeth Wickes,伊利诺伊大学信息科学学院讲师

提案审稿人

Dr. Irene Bruno,乔治·梅森大学信息科学与技术系副教授

Lance Bryant,西盆斯贝格大学数学系副教授

Daniel Chen,Lander Analytics 公司的数据科学家

Garrett Dancik,东康涅狄格州立大学计算机科学系与生物信息学系副教授

Dr. Marsha Davis,中康涅狄格州立大学数学科学系主任

Roland DePratti,东康涅狄格州立大学计算机科学系兼职教授

Shyamal Mitra,得克萨斯大学奥斯汀分校计算机科学系高级讲师

Dr. Mark Pauley,内布拉斯加大学奥马哈分校跨学科信息学院生物信息学高级研究员

Sean Raleigh,威斯敏斯特学院数学系副教授、数据科学系主任

Alison Sanchez,圣地亚哥大学经济学专业助理教授

Dr. Harvey Siy,内布拉斯加大学奥马哈分校计算机科学系、信息科学与技术系副教授

Jamie Whitacre,独立数据科学顾问

在你阅读本书时,欢迎你提出评论、批评、更正和改进建议,请发送邮件至deitel@deitel.com,我们会及时回复。

再次欢迎你来到激动人心的Python编程开源世界,希望你喜欢使用Python、IPython、Jupyter Notebook、数据科学、人工智能、大数据和云计算进行先进的计算机应用程序开发。

Paul Deitel和Harvey Deitel


[1] 来源不明,经常被误认为是马克·吐温所说。

[2] https://www.mckinsey.com/~/media/McKinsey/Business%20Functions/McKinsey%20Digital/Our%20Insights/Big%20data%20The%20next%20frontier%20for%20innovation/MGI_big_data_full_report.ashx (P3).

[3] https://economicgraph.linkedin.com/resources/linkedin-workforce-report-august-2018.

[4] https://www.burning-glass.com/wp-content/uploads/The_Quant_Crunch.pdf (P3).

[5] https://analyticsweek.com/content/big-data-facts/.

[6] https://www.oreilly.com/ideas/what-is-jupyter.

[7] https://jupyter.org/community.

[8] Knuth, D., “Literate Programming” (PDF), The Computer Journal, British Computer Society, 1992.

[9] http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0164023.

[10] http://whatis.techtarget.com/definition/cognitive-computing.

[11] 请务必查看IBM网站上的最新条款,因为条款和服务可能会更改。

[12] https://console.bluemix.net/catalog/.

[13] 如果网页不能打开或读者找不到所需的东西,请直接发送电子邮件至deitel@deitel.com。