
第1章 Anaconda生态系统
在前言中,我们提到本书是为那些寻找数据科学领域工具的读者而设计。对于那些希望通过使用多种语言的最佳工具来提高数据科学应用效率的数据分析师和数据科学专业人士来说,本书也有很大的参考价值。我们将分章节详细讨论Anaconda平台,以及Python、R、Julia或Octave等计算工具。由于这些编程语言都是开源且可自由下载的,所以这将为读者带来诸多便利。在本章中,我们将从最简单的介绍开始。针对本书,我们假设读者已经掌握了这几种编程语言(例如R和Python)的一些基础知识。此外,还有很多书可供读者学习,例如Python for Data Analysis和Python for Finance。
本章包含以下主题:
●简介
●Miniconda
●Anaconda云
●查找帮助
1.1 简介
当前,我们正被大量的信息所淹没,即当前的流行语“大数据”。然而,由于当前对“大数据”存在很多种解释,所以它的定义仍然具有争议。Davenport和Patil建议,如果你的组织存储了大量PB(拍字节)级别的数据,如果最重要的业务信息并非以数字的行和列的形式存在,或者如果解决问题需要结合多项分析工作,那么你已经面临着大数据带来的挑战和机遇。
目前,虽然很多数据科学或数据分析的用户正在学习多种编程语言,例如R和Python,但是他们如何同时使用这两种语言呢?打个比方,如果约翰当前使用R语言,而他的队友则使用Python,那么他们之间如何交流呢?团队成员如何共享他们的包、程序,甚至他们的工作环境呢?由于Anaconda拥有一些神奇的特性,所以在本书中,我们将通过介绍Anaconda来尽力为这些挑战性任务提供一个解决方案。
通常来说,R是一种用于统计计算和绘制图形的编程语言,它由R统计计算基金会支持。而Python则是一种类似于Perl的解释性的、面向对象的编程语言。Python语法清晰、可读性强,因此备受用户欢迎。此外,Julia擅长数值计算并包含大量的数学函数,可以用来进行并行计算和云计算。而Octave是用于数值计算以及面向数学和批处理的语言。最后,R、Python、Julia和Octave这4种语言都是免费的。
1.1.1 通过Anaconda使用Jupyter的理由
在数据科学或数据分析中,我们通常工作于一个团队中。这意味着每个开发人员、研究人员或团队成员可能都有自己最喜欢使用的编程语言,例如Python、R、Octave或Julia。如果我们拥有一个平台来运行所有这些语言,那将是一件非常棒的事情。幸运的是,Jupyter就是一个这样的平台,它可以容纳40多种语言,包括Python、R、Julia、Octave和Scala。
在第2章中,我们将展示如何通过Jupyter运行这4种语言。当然,使用Anaconda还有其他好处:我们能够更少关注安装包的依赖关系、更有效地管理包,并共享我们的程序、项目和工作环境。此外,Jupyter Notebook可以通过电子邮件、Dropbox、GitHub和Jupyter Notebook查看器与他人共享。
1.1.2 在无须预装的情况下使用Jupyter
在第2章中,我们将讨论如何通过Anaconda来安装Jupyter。不过,我们偶尔也可以在没有预先安装Jupyter的情况下启动它,此时只需要访问网页https://jupyter.org/try即可。
1.首先会出现欢迎界面,其中包含了尝试不同语言的各种选项。
2.例如,通过单击“Try Jupyter with Julia”图像,我们将看到图1.1所示的界面。

图1.1 Jupyter Julia界面
3.为了节省空间,截图中只显示了界面的一部分,读者可以执行前面两个步骤来查看整个界面。另外,如果我们单击“Try Jupyter with R”图像,将显示图1.2所示的界面。

图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。
1.2 Miniconda
Anaconda是Python的一种完整发行版,安装时自带了1000多个开源包。因此,安装后其总大小超过了3GB。如果我们打算下载并预安装大量包,那么Anaconda是一个不错的选择。另一方面,Miniconda仅仅包含Python以及其他运行conda本身所必需的库。此外,Miniconda的大小大约是400MB,比完整版的Anaconda小很多,所以必须根据需要下载并安装额外的包。
很多原因可以解释为什么一个新用户可能更喜欢精简版的Anaconda。例如,他们可能并不需要那么多包,另一个原因则是用户可能没有足够的空间。为此,这些用户可以下载Miniconda。同样地,在第2章中,我们将详细讨论如何安装Anaconda,以及运行不同语言所编写的程序,例如Python、R、Julia和Octave。
1.3 Anaconda云
在第2章中,我们将更详细地解释Anaconda云。此功能主要用来与不同的用户或小组成员协作开发。例如,我们有一个由10名开发者组成的小组,他们工作于同一个项目组。因此,我们必须共享程序、命令数据集和工作环境,此时可以使用Anaconda云来实现。在访问Anaconda官网时,我们将直接打开Anaconda主页。
注意,用户必须在Anaconda上注册后才能使用此功能。注册之后,我们可以看到图1.7所示的界面。

图1.7 登录之后的Anaconda主页
在本书的后续部分,我们将用整整一章来学习它。
1.4 查找帮助
有很多网站可以供我们访问来寻求帮助。我们可以在相关网站上找到用户指南,并且会看到图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包页面
1.5 总结
在本章中,我们介绍了一些基本概念,例如使用Anaconda的理由,以及使用完整版的Anaconda和其精简版的Miniconda的优势。然后,展示了在无须安装Anaconda的情况下,我们仍然可以通过访问指定的网站来使用它。在该网站上,我们也可以测试用R、Python、Julia或Octave编写的简单程序。
在第2章中,我们将展示如何安装Anaconda,并测试安装是否成功。此外,我们还将展示如何启动Jupyter、如何启动Python、Spyder和R,以及如何查找相关帮助。由于这些概念或过程大多数是比较基础的,所以熟悉这些基本概念的读者可以跳过这一章,直接进入第3章进行学习。
1.6 问题回顾及练习
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