书名:Anaconda数据科学实战
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 [美]严玉星(Yuxing Yan)
[美]詹姆斯·严(James Yan)
译 李 晗
责任编辑 胡俊英
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
Copyright ©2018 Packt Publishing. First published in the English language under the title Hands-On Data Science with Anaconda.
All rights reserved.
本书由英国Packt Publishing公司授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。
版权所有,侵权必究。
Anaconda是一个强大的开源数据科学平台,它将很多好的工具整合在一起,极大地简化了使用者的工作流程,并能够帮助使用者解决一系列数据科学难题。
本书旨在通过一系列示例,引导读者在编码和图表中了解Anaconda的强大之处。本书包括12章,结合R、Python、Octave和Julia等4种编程语言,从平台的安装和配置开始,循序渐进地引导读者掌握数据集的获取、数据可视化、统计建模、管理包、Anaconda的优化、无监督学习、监督学习、数据预测分析、云、分布式计算等内容。
本书示例丰富,讲解细致,作者不仅在金融领域有着深厚的积累,还有着丰富的教学经验。对于那些有兴趣了解金融领域数据科学的读者,以及普通的数据分析师或数据科学从业者,本书都是一个不错的选择。在阅读本书之前,我们希望读者具备R或Python的基本编程知识,以及线性代数相关的基本知识。
感谢Mark Zaporowski (凯尼休斯学院)、K.G. Viswanathan (霍夫斯特拉大学)、Lisa Fairchild(洛约拉大学)、John Doe(沃顿商学院)、David Ding(南洋理工大学)和Ben Amoako-Adu(劳里埃大学)。
——严玉星(Yuxing Yan)
感谢我的父亲、母亲和姐姐。
—— 詹姆斯·严(James Yan)
严玉星博士毕业于麦吉尔大学,获得金融学博士学位。他曾在加拿大、新加坡和美国的8所大学教授各种金融课程,发表23篇研究和教学相关的论文,并著有6本书。他最近出版的两本书分别是Python for Finance和Financial Modeling Using R。此外,他还精通R、Python、SAS、MATLAB、Octave和C语言,是金融数据分析方面的专家。
感谢Ben Amoako-Adu、Brian Smith、Jin-Chun Duan、Jerome Detemple、Lawrence Kryzanowski、Chris Schull、Mark Keintz、Dong Xu、Eric Zhu、Paul Ratnaraj、Premal Vora、Shuguang Zhang、Mireia Gine、Shaojun Zhang、Qian Sun、Shaobo Ji、Xing Zhang、Changwen Miao、Karyl Leggio、K. G. Viswanathan、Mark Lennon、Qiyu Zhang、Xiaoning(作者的妻子)、Jing(作者的女儿)和James(作者的儿子),感谢他们的帮助和支持。
James Yan是多伦多大学的一名本科生,当前在攻读计算机科学和统计学双学位。他拥有Python、R、Java、MATLAB和SQL的实践经验。在多伦多大学期间,他学习了很多相关课程,例如数据分析方法、统计学方法、数据库导论、人工智能导论和数值方法,包括一门关于AI在临床医学应用方面的课程。
李晗,一个普通码农,主要从事软件开发、数据分析工作。闲暇之余,对量化金融、机器学习、网络安全和技术翻译怀有浓厚兴趣。
Justin Lee在韩国科学技术院获得了计算机科学学士和硕士学位。在微软工作期间,与LG电子合作,他参与开发了韩国版的Windows CE 1.0和2.0。在后来7年多的时间里,他开始经营自己的企业,并提出了根据数据分析定制金融投资组合的理念。随后,他供职于多家保险公司,包括在三星人寿担任首席营销官,负责基于 CRM 的营销。目前,他正在深入研究基于机器学习的大数据金融分析和区块链的金融应用。
Anaconda是一个开源的数据科学平台,它将数据科学中的好工具集中在一起。它是一个数据科学栈,包含100多个基于Python、Scala和R的工具包。在它的包管理器conda的帮助下,用户能够使用数百个不同语言的包,并轻松地进行数据预处理、建模、聚类、分类和验证。
本书将带领你学习Anaconda,并教你如何使用它在现实世界中执行数据科学操作。首先,你将为Anaconda、Jupyter搭建环境,并安装相关的软件包。然后,学习数据科学基础和线性代数,为执行数据科学任务做准备。一旦准备完毕,你将开始进行数据科学操作,例如清理、排序和数据分类。接着,你将学习如何执行数据科学任务,例如聚类、回归、预测、创建机器学习模型并优化它们。此外,你也会学习如何可视化数据及共享项目。
在本书中,你将学习如何在Anaconda平台上使用不同的软件包获得最佳结果。你还将学习如何有效地使用conda——Anaconda的包管理器。另外,书中还将介绍Anaconda的几个强大特性,例如附加项目、项目附加组件、共享项目驱动以及强大的计算节点,这些节点存在于付费版本中,可用来完成高级数据处理流程。此外,你将学习如何构建可伸缩的和功能强大的包,以及如何进行各种各样的数据探索、分布式计算等。你还将通过发现和共享包、Notebook和环境来提高工作效率。最后,你还将学习Anaconda的加速,这是一种能够帮助你轻松优化计算能力的特性。
在本书中,我们将介绍4种编程语言——R、Python、Octave和Julia,这样做有几个原因。首先,这4种语言都是开源的,这是未来的一个趋势。其次,使用Anaconda平台最明显的优势之一就是我们可以实现用多种语言编写程序。然而,对于很多初学者来说,同时学习4种语言会很有挑战性,所以最好的策略是先关注R和Python。一段时间后,或者读完整本书后,再学习Octave或Julia。
如果你是一位正在寻找执行数据科学操作最佳工具的开发者,那么本书就是为你准备的。对于那些想通过使用多种语言的库来提高数据科学应用效率的数据分析师和数据科学专业人士,这也是他们的理想选择。在阅读本书之前,读者需要具备R或Python的基本编程知识,以及线性代数的基本知识。
第1章,Anaconda生态系统,介绍了一些基本概念,例如使用Anaconda的原因,使用完整版的Anaconda和其子版本Miniconda的优势。然后,本章还介绍了Anaconda在无须安装情况下的在线使用方法。此外,我们还测试了一些用R、Python、Julia和Octave编写的简单程序。
第2章,Anaconda安装,展示了如何安装Anaconda、测试安装是否成功、如何启动Jupyter并使用它启动Python、如何启动Spyder和R,以及如何查找帮助。这些概念或程序大部分都比较简单,所以对掌握它们非常有信心的读者可以跳过本章,直接进入下一章。
第3章,数据基础,讨论了开放的数据源,包括美国劳工统计局、美国人口普查局、French教授的数据库、美联储的数据库和UCI(加州大学欧文分校)的机器学习库。然后解释了如何输入数据、如何处理缺失数据、如何排序、切割数据集,以及如何合并不同的数据集和数据输出。对于不同的语言,例如Python、R、Julia和Octave,本章也介绍并讨论了一些与数据操作相关的包。
第4章,数据可视化,讨论了各种类型的可视化表示,包括用不同语言(如R、Python和Julia)编写的简单图表、条形图、饼图和直方图。由于视觉呈现可以帮助读者更好地理解数据,所以对于很多复杂的概念或理论,可以使用视觉表现来帮助解释它们的逻辑和复杂性,一个典型的例子就是所谓的二分法或二分搜索。
第5章,在Anaconda中统计建模,解释了很多与统计相关的重要问题,例如T分布、F分布、T检验和F检验。我们还讨论了线性回归、如何处理缺失数据、如何处理异常值、共线性及其处理方法,以及如何进行多变量线性回归。
第6章,管理包,解释了管理包的重要性,如何查找R、Python和Julia的所有可用包,以及如何查找每个包的使用手册。此外,我们还讨论了包依赖的问题,以及在处理包时如何使编程更容易一些。
第7章,Anaconda的优化,讨论了几个优化主题,包括一般优化问题、将各种优化问题表示为LPP,以及二次优化。为了使我们的讨论更加深入实践,书中还给出了几个例子,例如如何选择最优的股票组合、如何优化财富和资源以促进可持续发展,以及政府实际应该收多少税。此外,我们还介绍了R、Python、Julia和Octave中用于优化的一些包。
第8章,Anaconda中的无监督学习,讨论了层次聚类和k-均值聚类。此外,我们详细学习了R和Python的几个相关包,包括R包rattle、Rmixmod和randomUniformForest,以及Python包Scipy.cluster、Contrastive和sklearn。
第9章,Anaconda中的监督学习,讨论了分类、k-最近邻算法、贝叶斯分类器、强化学习,以及特定的R和Python相关模块(如RTextTools和sklearn)。此外,读者还将学习它们的R、Python、Julia和Octave实现。
第10章,数据预测分析:建模和验证,本章涵盖了数据预测分析、建模和验证、一些有用的数据集、时间序列分析、如何预测未来事件、季节性问题,以及如何可视化数据。此外,书中也提到了Python包prsklearn和catwalk、R包datarobot、LiblineaR和 eclust、Julia包QuantEcon及Octave包ltfat。
第11章,Anaconda云,讨论的主题包括:深入学习Jupyter Notebook、Jupyter Notebook的不同格式,如何与同伴共享Notebook,如何在不同平台上共享不同的项目,如何共享你的工作环境,以及如何在本地复制其他人的环境。
第12章,分布式计算、并行计算和HPCC,涵盖了分布式计算和Anaconda加速。当数据或任务变得更复杂时,我们需要一个好的系统或一组工具来处理数据和运行复杂的算法。为此,分布式计算是一种解决方案。另外,我们将解释计算节点、项目附加组件、并行处理以及用于数据并行化的高级Python特性。
本书需要一台内存为8GB或16GB(内存越大越好)的个人计算机或Mac。此外,你的计算机应该至少具有一个2.2 GHz的Core i3或i5处理器,或者一个等配的AMD处理器。
在本书中,你会发现多种用以区分不同信息类型的文本样式。下面是这些样式的一些例子,以及对它们含义的解释。
文本中的代码单词、数据库表名、文件夹名称、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter账号如下所示:“图形和图像方面使用最广泛的Python包为matplotlib。”
代码块的样式如下所示:
import matplotlib.pyplot as plt
plt.plot([2,3,8,12])
plt.show()
当我们希望代码块的某个特定部分能够引起你的注意时,相关的行或项目会设置成 粗体:
import matplotlib.pyplot as plt
plt.plot([2,3,8,12])
plt.show()
任何命令行输入或输出都如下所示:
install.packages("rattle")
粗体:表示在屏幕上看到的新术语、一个重要单词或一些单词。例如,菜单或对话框中的单词就会像这样出现在文本中。举个例子:“对于数据源,我们从7种可能的格式中进行选择,例如File、ARFF、ODBC、R Dataset、RData File,我们可以从那里加载数据。”
警告或重要说明是这样的。
提示和技巧是这样的。
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
本书提供配套资源,要获得该配套资源,请在异步社区本书页面中单击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,单击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/ selfpublish/submission即可)。
如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。
异步社区
微信服务号
在前言中,我们提到本书是为那些寻找数据科学领域工具的读者而设计。对于那些希望通过使用多种语言的最佳工具来提高数据科学应用效率的数据分析师和数据科学专业人士来说,本书也有很大的参考价值。我们将分章节详细讨论Anaconda平台,以及Python、R、Julia或Octave等计算工具。由于这些编程语言都是开源且可自由下载的,所以这将为读者带来诸多便利。在本章中,我们将从最简单的介绍开始。针对本书,我们假设读者已经掌握了这几种编程语言(例如R和Python)的一些基础知识。此外,还有很多书可供读者学习,例如Python for Data Analysis和Python for Finance。
本章包含以下主题:
当前,我们正被大量的信息所淹没,即当前的流行语“大数据”。然而,由于当前对“大数据”存在很多种解释,所以它的定义仍然具有争议。Davenport和Patil建议,如果你的组织存储了大量PB(拍字节)级别的数据,如果最重要的业务信息并非以数字的行和列的形式存在,或者如果解决问题需要结合多项分析工作,那么你已经面临着大数据带来的挑战和机遇。
目前,虽然很多数据科学或数据分析的用户正在学习多种编程语言,例如R和Python,但是他们如何同时使用这两种语言呢?打个比方,如果约翰当前使用R语言,而他的队友则使用Python,那么他们之间如何交流呢?团队成员如何共享他们的包、程序,甚至他们的工作环境呢?由于Anaconda拥有一些神奇的特性,所以在本书中,我们将通过介绍Anaconda来尽力为这些挑战性任务提供一个解决方案。
通常来说,R是一种用于统计计算和绘制图形的编程语言,它由R统计计算基金会支持。而Python则是一种类似于Perl的解释性的、面向对象的编程语言。Python语法清晰、可读性强,因此备受用户欢迎。此外,Julia擅长数值计算并包含大量的数学函数,可以用来进行并行计算和云计算。而Octave是用于数值计算以及面向数学和批处理的语言。最后,R、Python、Julia和Octave这4种语言都是免费的。
在数据科学或数据分析中,我们通常工作于一个团队中。这意味着每个开发人员、研究人员或团队成员可能都有自己最喜欢使用的编程语言,例如Python、R、Octave或Julia。如果我们拥有一个平台来运行所有这些语言,那将是一件非常棒的事情。幸运的是,Jupyter就是一个这样的平台,它可以容纳40多种语言,包括Python、R、Julia、Octave和Scala。
在第2章中,我们将展示如何通过Jupyter运行这4种语言。当然,使用Anaconda还有其他好处:我们能够更少关注安装包的依赖关系、更有效地管理包,并共享我们的程序、项目和工作环境。此外,Jupyter Notebook可以通过电子邮件、Dropbox、GitHub和Jupyter Notebook查看器与他人共享。
在第2章中,我们将讨论如何通过Anaconda来安装Jupyter。不过,我们偶尔也可以在没有预先安装Jupyter的情况下启动它,此时只需要访问网页 https://jupyter.org/try即可。
1.首先会出现欢迎界面,其中包含了尝试不同语言的各种选项。
2.例如,通过单击“Try Jupyter with Julia”图像,我们将看到图1.1所示的界面。
3.为了节省空间,截图中只显示了界面的一部分,读者可以执行前面两个步骤来查看整个界面。另外,如果我们单击“Try Jupyter with R”图像,将显示图1.2所示的界面。
图1.1 Jupyter Julia界面
图1.2 Jupyter R界面
4.在选择“Try Jupyter with Python”后,你将看到同样的欢迎界面。
5.接下来,我们将展示如何在R、Python和Julia中执行一些简单的命令。例如,可以通过R来使用平台运行一些简单的命令行。在下面的例子中,我们输入pv=100、r=0.1以及n=5,如图1.3所示。
图1.3 在R中执行简单命令示例
6.单击菜单栏上的“Run”按钮后,我们将这些值赋值给3个变量。然后我们可以估计这个表达式的计算结果,如图1.4所示。
图1.4 R中运行结果
7.类似地,我们可以尝试使用Python,如图1.5所示。
图1.5 使用Python执行简单命令示例
在前面的示例中,我们导入了名为scipy的Python包,并将其简写为sp。虽然也可以使用其他简写名称来表示scipy包,但使用sp是一种惯例。然后,我们使用了该Python包中所包含的sqrt()函数。
对于Julia,我们可以尝试以下代码(如图1.6所示)。同样地,在单击菜单中的“File|New”命令后,我们选择“Julia 0.6.0”。截至2018年5月9日,0.6.0是Julia的最新版本。请注意,在读者阅读本书时, Julia的最新版本可能会不同。
图1.6 Julia使用示例
在代码中,我们定义了一个名为sphere_vol
的函数,它只有一个输入值r(以弧度为单位)。当输入值是2.5时,其结果为64.45。
Anaconda是Python的一种完整发行版,安装时自带了1000多个开源包。因此,安装后其总大小超过了3GB。如果我们打算下载并预安装大量包,那么Anaconda是一个不错的选择。另一方面,Miniconda仅仅包含Python以及其他运行conda本身所必需的库。此外,Miniconda的大小大约是400MB,比完整版的Anaconda小很多,所以必须根据需要下载并安装额外的包。
很多原因可以解释为什么一个新用户可能更喜欢精简版的Anaconda。例如,他们可能并不需要那么多包,另一个原因则是用户可能没有足够的空间。为此,这些用户可以下载Miniconda。同样地,在第2章中,我们将详细讨论如何安装Anaconda,以及运行不同语言所编写的程序,例如Python、R、Julia和Octave。
在第2章中,我们将更详细地解释Anaconda云。此功能主要用来与不同的用户或小组成员协作开发。例如,我们有一个由10名开发者组成的小组,他们工作于同一个项目组。因此,我们必须共享程序、命令数据集和工作环境,此时可以使用Anaconda云来实现。在访问Anaconda官网时,我们将直接打开Anaconda主页。
注意,用户必须在Anaconda上注册后才能使用此功能。注册之后,我们可以看到图1.7所示的界面。
图1.7 登录之后的Anaconda主页
在本书的后续部分,我们将用整整一章来学习它。
有很多网站可以供我们访问来寻求帮助。我们可以在相关网站上找到用户指南,并且会看到图1.8所示的4个条目。
通过选择上述4个条目之一,我们可以查找大量信息。例如,在点击“Getting started with Anaconda”后,我们会看到图1.9所示的信息。
从左边的导航栏中,我们可以打开任务(Tasks)页面,然后就可以看到图1.10所示的条目。
图1.8 用户指南界面
图1.9 开始学习Anaconda页面
图1.10 任务页面
例如,单击“Installing conda packages”之后,我们可以看到图1.11所示的信息(为节省空间,仅仅显示了文档的第一部分)。
图1.11 安装conda包页面
在本章中,我们介绍了一些基本概念,例如使用Anaconda的理由,以及使用完整版的Anaconda和其精简版的Miniconda的优势。然后,展示了在无须安装Anaconda的情况下,我们仍然可以通过访问指定的网站来使用它。在该网站上,我们也可以测试用R、Python、Julia或Octave编写的简单程序。
在第2章中,我们将展示如何安装Anaconda,并测试安装是否成功。此外,我们还将展示如何启动Jupyter、如何启动Python、Spyder和R,以及如何查找相关帮助。由于这些概念或过程大多数是比较基础的,所以熟悉这些基本概念的读者可以跳过这一章,直接进入第3章进行学习。
1.Anaconda是什么?我们如何使用它的平台?
2.Anaconda附带了多少个开源包?
3.如何安装Anaconda?Anaconda安装完成后,我们应该单独安装Python和R吗?
4.完整版Anaconda安装占用多大空间?
5.我们为什么要关注Miniconda?
6.Jupyter是什么?我们如何在不安装的情况下启动它?
7.初学者在哪里可以找到更多关于Anaconda的有用信息?
8.如何获取关于Julia编程语言的更多信息?
9.如何通过Jupyter编写一个简单的Julia程序?
10.如何通过Jupyter编写一个简单的R程序?
11.如何查找关于Jupyter的帮助信息?
12.什么是conda速查表?在哪里可以下载它?
13.我们可以在不安装Anaconda的情况下运行一个简单的R程序吗?
14.我们可以在不预先安装Anaconda的情况下运行它吗?
15.尝试执行以下两行Python代码:
import numpy as np
print(np.sqrt(2))
16.尝试执行以下简单的R代码:
x<-1:500
mean(x)
sd(x)
17.尝试执行以下Julia代码:
x=1:500
mean(x)
18.尝试执行以下R代码:
dd<-Sys.Date()
dd+40
在本章中,我们将讨论如何安装Anaconda,以及如何使用它的各种组件,例如Python、IPython、Jupyter和Spyder。在本书中,我们不会介绍R、Python、Julia或者Octave这些编程语言的知识。因此,我们假设读者已经掌握了与这些编程语言相关的基础知识,尤其是Python和R。此外,读者也可以阅读其他图书,例如Python for Finance及Financial Modeling Using R。
本章包含以下主题:
首先,访问Anaconda官网,我们可以看到该页面中右上角的“Download Anaconda”。基于个人不同的操作系统,用户应下载对应的安装包即可。
根据偏好,你可以下载Python 3或Python 2.7。通常情况下,对于初学者来说,下载新版本是个不错的主意(本书在编写时采用的版本为Python 3.6)。此外,这种规则同时适用于Mac和基于Linux的操作系统。
请参考以下步骤。
1.对于个人用户,单击Windows后,你会看到不同的版本下载选项。
截至2018年5月9日,Anaconda附带的Python 3.6和Python 2.7两个版本都可下载,如果没有特殊要求或限制,最好下载Python 3.6。另外,还同时提供了64位和32位系统的两种安装包。
如果你的系统是32位的,并且试图在上面安装64位版本,将会收到一条错误消息。
2.在安装过程中,我们可以选择默认设置。安装结束之后,单击All Programs及Anaconda3
(32
位)文件夹,我们可以看到图2.1所示的信息(针对Windows版本)。然而,不同读者或用户的设置可能略有不同。
图2.1 Windows系统中Anaconda3文件夹信息
3.点击Anaconda Prompt后,可以输入conda info
命令,安装信息如图2.2所示。
同样需要注意,读者或用户的结果可能会有很大不同,这取决于各自的计算机系统和安装包。
图2.2 查看当前conda安装信息
测试Python的步骤如下。
1.对于个人计算机用户,在依次点击All Programs、Anaconda3.6及Anaconda Prompt后,我们将看到图2.3所示的内容。
注意,不同用户可能会得到不同的路径。
图2.3 Anaconda提示符界面
2.然后只需输入python
,我们就可以启动它,如图2.4所示。
图2.4 启动python界面
3.图2.4中结果表明当前的Python 3.6.3版本是可用的。我们也可以尝试import scipy as sp
来查看是否预装了scipy
包,如图2.5所示。
图2.5 检查是否预装scipy包
4.在输入import scipy as sp
命令后,未出现错误消息,这表明该包是预先安装的。命令sp.sqrt(3)
将为我们计算3的平方根。另一个例子及相关的图形如下所示。
import scipy as np
from pylab import *
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
c,s=np.cos(x),np.sin(x)
plot(x,c),plot(x,s)
show()
上述代码将输出图2.6所示的结果。
图2.6 scipy
例子结果图
对于Windows版本,在从All Programs导航到Anaconda3并单击IPython之后,就可以看到图2.7所示的界面。
图2.7 IPython命令行界面
你也可以通过在启动Anaconda Prompt后输入ipython来达到相同的目的。
图2.7显示当前的Python版本是3.6.3,IPython的版本是6.1.0。我们可以输入一些命令来测试它。例如,如果我们今天投资100美元,投资期限为5年,年收益率为10%,那么我们预期的未来值是多少呢?对于给定的现值,未来值计算公式如下:
其中FV为未来值,PV为现值,R为周期收益率,n为周期数:
图2.8中第一行命令pv=100
表示将100赋值给PV。第5行中,我们输入了一条命令pv*(1 + r)^n
。但是,我们收到了一条错误消息TypeError: unsupported operand type(s) for ^: 'float' and 'int'
。该错误消息告诉我们Python无法将操作符^识别为幂操作,因为Python中幂的对应操作符是两个乘号,即**。此外,还有一个power()
函数类似于**,如图2.9所示。
图2.8 资金投资计算例子
图2.9 power()函数使用示例
我们将展示如何通过Jupyter编写简单的Python代码。
1.在单击Anaconda之后,我们可以在菜单中找到一个名为Jupyter Notebook的条目。单击该条目后,可以看到图2.10所示的界面。
图2.10 Jupyter Notebook界面
2.如果我们单击右边的New,就可以看到几个选项。选择Python 3后,我们会得到图2.11所示的开始文件。
图2.11 Jupyter中的Python界面
3.现在我们可以在文本框中输入Python命令。如果想执行这些指令,请按Shift+Enter组合键(如图2.12所示)。
图2.12 单行Python代码执行示例
4.我们还可以输入多条命令并执行它们,如图2.13所示。
图2.13 多行Python代码执行示例
对关键字、括号和值的着色和特殊处理使得我们的编程更加简单。
我们可以通过选择菜单栏中的“File|Save and Checkpoint”来保存程序。类似地,我们可以通过直接从菜单栏中选择“File | Revert to Checkpoint”来加载之前保存的程序,或者在Jupyter主页下的“Files”选项卡下找到程序。
在Anaconda3菜单中,最后一个条目是Spyder。单击它之后,我们就可以启动Spyder,如图2.14所示。
图2.14 Spyder启动界面
图2.14中显示了3个面板。左边的面板用于编写和编辑我们的程序,右下角的面板用于编辑命令行(我们可以在此处输入简单的命令),右上角的面板用于显示定义变量。例如,在输入pv=100
后,它将显示变量名、类型、大小和值,如图2.15所示。
图2.15 Spyder中变量信息展示
我们还可以编写Python程序,并通过左上角的面板调试和运行它们。例如,我们可以运行一个带有pv_f()函数的程序来估计一个未来现金流的现值,如图2.16所示。
在图2.16中,绿色的播放按钮用于运行整个Python程序,而第二个黄绿色的按钮用于部分运行程序。这个特性使得我们的调试工作稍微容易一些,对于代码量大而复杂的程序尤其如此。
图2.16 Spyder中Python程序编写示例
假设我们要调试这样一个程序。那么首先,把它分成几个逻辑块。然后,突出显示第一个逻辑块并运行它。当确定它没有漏洞后,我们再运行下一个逻辑块。一直重复这项操作,直到调试完整个程序为止。
R包的安装步骤如下。
1.需要注意的是,R包并没有随着Anaconda的安装而预先安装,如图2.17所示。
图2.17 Anaconda中未预先安装R
2.为了安装R软件,我们必须在单击Anaconda Prompt后执行以下命令。
conda install r-essentials
3.安装完成后,我们可以看到图2.18所示的界面。
4.我们可以尝试运行一些命令。例如,在图2.19中,我们首先使用关键字function生成一个R函数pv_f()。对于该函数,我们有3个输入值:fv代表未来值,r代表利率,n代表周期数。
图2.18 安装R后的界面信息
图2.19 R中定义并使用函数示例
安装Julia的步骤如下。
1.首先,访问Julia官网下载页面进行下载。
2.我们可以选择不同系统的版本,如图2.20所示。
图2.20 不同系统下的Julia版本
3.同样地,根据操作系统(Windows、Mac或Linux)不同,请选择合适的版本并下载对应的可执行包。
4.单击可执行文件,我们就可以安装Julia包。为了启动Julia,我们只需单击Julia.exe
即可。
5.在Julia环境中,我们可以输入println("Hello World")
命令,如图2.21所示。
图2.21 Julia中打印Hello World示例
对于Windows用户来说,我们可以单击All Programs | Julia来启动它。此外,我们还可以将Julia复制粘贴到桌面上。
6.此外,启动Julia的另一种方法是通过DOS窗口。在此之前,我们必须将包含Julia.exe
的路径添加到path环境变量中。例如,为了通过Jupyter使用Julia,我们必须输入图2.22所示的命令。
图2.22 安装IJulia包
7.安装IJulia
包大约需要10分钟。在那之后,我们启动Jupyter并单击New,就可以看到图2.23所示的界面。
图2.23 Jupyter中启动Julia的界面
8.然后我们就可以启动Julia,并在其中输入println("This is great!")
命令行,如图2.24所示。
图2.24 Jupyter中运行Julia命令
在第7章中讨论Anaconda优化时,我们将使用Julia中的优化包解决一些问题。
按照以下步骤安装Octave。
1.为了安装链接到Anaconda的Octavekernel,在Anaconda Prompt下,我们通过输入Anaconda登录命令进行登录。需要注意的是,为了登录,用户必须首先在Anaconda官网上进行注册。登录到Anaconda后,我们可以输入以下命令:
pip install octave_kernel
2.在启动Jupyter并单击右侧的New之后,我们可以看到Octave及其他语言,如图2.25所示。
图2.25 Jupyter中启动Octave的界面
3.现在我们可以用Octave测试一个简单的程序:
x=-9:0.1:9;
y=sin(x);
plot(x,y)
4.对应的输出如图2.26所示。
图2.26 Jupyter中Octave示例程序结果图
1.在第1章中,我们展示了Anaconda用户指南。
2.在页面中,你会看到4个条目,如图2.27所示。
3.可以输入conda help
来查找关于Conda用法的信息。在Windows系统中,单击All Programs|Anaconda|Anaconda Prompt。在提示符中,输入conda help
,如图2.28所示。
图2.27 用户指南页面
图2.28 查看conda命令用法
4.为了查找与Conda环境关联的所有包,我们可以输入命令conda list
。
5.由于包的数量相当庞大,因此更好的解决方案是生成一个文本文件。为此我们可以输入命令conda list >c:/temp/list.txt
,如图2.29所示。
图2.29 将与Conda环境关联的所有包信息导入到文本文件
6.输出文件list.txt中的前几行内容如图2.30所示。
图2.30 list.txt文件中前几行内容
7.我们可以编写一个R程序来读取这个文本文件:
x<-read.csv('c:/temp/list.txt',skip=2)
> head(x)
X_ipyw_jlab_nb_ext_conf....0.1.0............py36ha9200a3_0
1 alabaster 0.7.10 py36hedafc74_0
2 anaconda 5.0.1 py36h2419598_2
3 anaconda-client 1.6.5 py36hb3b9584_0
4 anaconda-navigator 1.6.9 py36hfabed4d_0
5 anaconda-project 0.8.0 py36h88395f3_0
6 asn1crypto 0.22.0 py36hee29ec9_1
> dim(x)
[1] 380 1
8.要了解如何使用Jupyter,我们可以在启动Jupyter后单击菜单栏上的Help。
9.从条目列表中,我们可以找到关于Python和IPython的菜单,以及关于Python包NumPy、SciPy、Matplotlib
的信息等。
10.单击Keyboard Shortcuts后,我们可以看到图2.31所示的界面。
图2.31 快捷键展示界面
在本章中,我们展示了如何安装Anaconda,并测试了安装是否成功。此外,我们研究了如何启动Jupyter,以及如何使用它启动Python、Spyder和R,以及如何查找帮助。由于这些概念或过程大多数是比较基础的,所以对此比较熟悉的用户可以跳过本章,直接进入第3章进行学习。
在第3章中,我们将首先讨论开放的数据源,如加州大学欧文分校(University of California at Irvin,UCI)机器学习库和劳工统计局。然后,我们将介绍Python的Pandas包。接着,会详细讨论很多问题,例如如何处理缺失的数据、如何排序、如何切片和切块数据集、如何合并不同的数据集,以及数据的输入和输出。最后,还将介绍并讨论几个与数据操作相关的包。
1.Jupyter是什么?如何启动它?
2.如何从Jupyter启动Python?
3.Spyder是什么?如何启动它?
4.编写一个Python程序来估计年金的现值,如下面公式中所示:
其中,pv(annuity)是年金的现值,C是周期支付,R是折现率,n是周期数。
5.新用户在哪里可以找到更多关于Anaconda的信息?
6.Julia编程语言是什么?
7.如何安装Julia?怎么从Jupyter调用Julia?
8.如何安装Octave并将其链接到Jupyter?
9.如何查找Jupyter的帮助信息?
10.在哪里可以找到很多开源的数据?
11.对于Python和R,如何计算23的值(2的3次方)。
12.如何独立启动R?
13.如何使用Spyder加载Python程序并运行它?