本节书摘来自异步社区《数据科学实战手册(R+Python)》一书中的第1章,第1.1节,作者【美】Tony Ojeda(托尼·奥杰德) , Sean Patrick Murphy(肖恩·派特里克·墨菲) , Benjamin Bengfort(本杰明·班福特) , Abhijit Dasgupta(阿布吉特·达斯古普塔),更多章节内容可以访问云栖社区“异步社区”公众号查看
第1章 准备你的数据科学环境
数据科学实战手册(R+Python)
本章涵盖如下内容:
- 理解数据科学管道
- 在Windows、Mac OS X和Linux上安装R
- 在R和RStudio中安装扩展包
- 在Linux和Mac OS X上安装Python
- 在Windows上安装Python
- 在Mac OS X和Linux上安装Python数据分析库
- 安装更多Python包
- 安装和使用virtualenv
简介
传统意义上的食谱,就是作者擅长的烹饪菜谱,用于帮助读者学习新菜的做法。很多人相信,对于一份食谱而言,它最终的产出就是食谱所对应的菜品本身,而读者在阅读本书时也可以想象是在阅读一份食谱。本书的每一章都会介绍基于不同目标、在不同数据集上使用数据科学管道的各种阶段来完成的实际应用案例,指导读者实践。同时,和做菜的过程一样,最终的产品可以是针对某一个特定数据集的分析应用。
然而,我们希望读者能有一个更广泛的视角。数据科学家是在实践中不断学习的,每一次的迭代和验证假设都可以增进实践者的知识。在本书中,我们使用两种不同的编程语言(R和Python)来对不同的数据集采用多种数据科学管道。希望通过这样的方式,读者可以开始抽象出分析模式,看到一幅更广阔的图景,并且对数据科学这一尚未明确定义的领域有更深刻的认识。
我们同时也希望读者能够知道,不同于传统的烹饪食谱,数据科学的食谱是含混不清的。当主厨开始制作某道菜时,他们是明确知道要使用什么食材,以及成品的品相如何的。然而对于数据科学家而言,情况往往不同。数据科学家往往不知道要处理的数据集是什么样的。数据科学家的菜单是深入挖掘数据的某种可能实现方式,而要开始在这条路上深挖数据,首先你要能够问出对的问题。
如果你是统计学或者数学背景,那么本书提供的建模技术可能不会令你感到兴奋。你应该关注那些更偏重实践的数据科学管道,比如如何加载一个很大的数据集,以及如何使用可扩展工具以及已知算法来实现实际的数据应用、交互式可视化图形展示以及Web应用,而不仅仅是报告或者论文。我们希望这些视角可以扩展你的价值,加深对于数据科学的理解,以及能够更好地在你的领域应用数据科学。
实际的数据科学家会使用丰富多样的工具来完成他们的工作。数据源的搜罗、数据清洗、可视化、建模以及使用各种工具完成大量的任务。如果你问过绝大多数数据工作者,你会知道,这些工具中最重要的部分是对数据进行分析和建模的编程语言。回答哪种编程语言最适合做特定的数据分析和建模,有点像回答世界上哪个宗教是最正确的,当然这不会造成大规模流血事件。
本书中,我们会同时关注两种非常不同的编程语言——R和Python——读者可以选择自己喜欢的。在整个过程中,我们会针对特定任务所适合的编程语言给出一些提示。同时,我们也会对不同编程语言,在同样数据集上使用类似分析方法得出的结果加以比较。
当你学习新的概念和技术时,总要在学习的深度和广度之间做权衡。同样的时间和精力,你到底是应该同时学习 R 和 Python,达到一个中等水平,还是选择其一深入研究?从我们的经验来看,我们强烈推荐你精通掌握一门语言,同时对另一门语言也有一些认知。那么,这是否意味着本书中一些章节你可以跳过呢?显然不是!然而,当你开始阅读本书时,请选择一门语言,并且深入研究,不仅掌握这门语言,并且能流利地使用它。
为了继续本章的内容,请保证你的电脑有足够的空间,可以在合理的时间内下载几个GB的软件。
理解数据科学管道
在开始安装各种软件之前,我们需要对本书中使用的那些在数据分析中可重复的步骤和方法有所了解。
处理流程
以下五步是数据分析的关键。
1.获取:数据科学管道的第一步是从不同来源获取数据,包含传统数据库、NoSQL、文件、网页抓取、分布式文件存储系统(如Hadoop平台上的HDFS、RESTful API、文本文件),甚至还包括PDF(当然但愿不要是这种形式)。
2.探索和理解:第二步是要理解你要分析的数据,以及要理解数据是如何采集的;这一步经常需要做一些显著性的探索。
3.改写、整合以及处理:这一步往往是数据科学管道中最费时的。数据几乎从来不会是你想要的格式。
4.分析和建模:这一步是比较有意思的,数据科学家会从数据中得到变量之间的统计关系,并且施展他们的机器学习技能来聚类、分类、预测等。
5.交流和实施:在管道的最后一步,我们需要交付我们的结果,而结果需要一定的形式和结构。这些结果有时是交付给自己的,从而开启下一轮的迭代,有时是发送给各种不同的用户的。数据产品可以是一次性的报告,也可以是可扩展的 Web 产品,而这些 Web产品有可能会被成千上万的人使用。
工作原理
尽管上文提到的五个步骤是有顺序的,但是不要认为每一个项目都会严格地按照上面的顺序线性进行。事实上,敏捷型数据科学家会知道这些过程都是交织在一起的。通常数据探索会让我们知道数据是如何清洗的,清洗之后的数据可以继续做更多的探索和更深入的理解。这两步哪一步优先,是基于你一开始对数据熟悉的程度。如果你使用生产和采集数据的系统工作过,那么数据探索和理解这个阶段也许会非常短,除非系统发生了什么问题。相反,如果你对要处理的数据没有任何背景知识,那么数据探索和理解这个阶段会花费一些时间(其中的很多时间是不用编程的,例如和系统开发者进行沟通)。
下图展示了数据科学管道。
也许你已经得知,数据的改写、整合和处理常常会耗费总项目80%的时间和资源。在一个完美世界中,通常我们可能收到完美的数据,然而,不幸的是,这种情况从来没有发生过。而且数据中存在的问题是不可穷举的。有时,一个数据字典可能会发生改变,也有可能会丢失。在这种情况下,想要理解数据取值的含义,是不可能的。一些数据域中可能存在垃圾,或者一些值已经转到另外的域中。如一个Web产品改版升级,也许会产生一些bug,导致之前的数据无法正常采集,从而导致几百上千行的数据缺失。如果这一步发生问题,那么你分析的数据就会包含这些错误的信息。
最后一步,交流和实施,是非常重要的。但是这一步错综复杂,往往不受重视。请注意,数据科学管道的最后一步,并不是数据可视化,不是做一些炫酷的图形,或者做一些本身就看起来非常复杂的图形展现。相反,数据可视化会和数据一起,成为数据科学家要讲的故事大图中的一部分。更进一步,有一些数据科学家会更加深度地推动他分析结果的落地,因为如果你不去试着用你从数据中发现的知识去说服决策者做出某种决策,那么你的数据科学工作将毫无价值。
在Windows、Mac OS X、Linux上安装R
R项目的主页上对R的定义是“R是一个用于统计计算和绘图的编程语言和环境”。并且R已经变成了统计分析和数据分析的首选语言。对于本书而言,前半部分都会选择R作为默认的工具。
准备工作
请确保你的电脑已经连接了网络,因为你可能要下载一个大于200MB的软件。
处理流程
安装R是很简单的;请执行如下步骤。
1.请访问CRAN(Comprehensive R Archive Network),并且下载你的操作系统所对应的最新版本的R。
对于Windows操作系统,访问http://cran.r-project.org/bin/windows/base/。
对于Linux操作系统,访问http://cran.us.r-project.org/bin/linux/。
对于Mac OS X系统,访问http://cran.us.r-project.org/bin/macox。
截至本书写作的2014年2月,最新版本的R是3.0.2版本。该版本是2013年9月发布的。
2.当你下载好之后,请按照CRAN提供的非常好的指导文档,在你的平台上安装R。对于Windows和Mac用户,只要双击安装包即可。
3.安装好R之后,打开它。你将看到一个类似下图的窗口。
4.你可以就此停止,但是你会错过一款非常出色的R语言的集成开发环境(IDE)——RStudio。访问http://www.rstudio.com/ide/download/下载RStudio,按照网上提供的安装指南来进行安装。
5.安装好之后,请运行RStudio。下面的截图展示了作者个性化配置的RStudio界面,控制台在左上角,编辑器在右上角,当前空间的变量列表在左下角,当前路径在右下角。
工作原理
R是一种交互式编程语言,最初出现在1993年,是对S统计编程语言的集成。而S语言则是在20世纪70年代诞生于Bell实验室(S-PLUS是S语言的商业版本)。R是专注于统计分析和可视化的领域语言(DSL)。因为拥有开源证书,它有时候又被称为GNU S。当然,你也可以用R做许多并非直接和统计分析相关的工作(如网页爬取)。即便如此,R依然是一个领域语言,并且没有打算成为一门通用语言。
R同时也受到CRAN的支持,CRAN是Comprehensive R Archive Network(http://cran.r- project.org/)的首字母组合。CRAN包含了以往版本的R,并且提供下载。当需要使用旧版的软件做可重复性的分析时,就可以使用旧版本的R。除此之外,CRAN包含了成百上千个可以免费下载的扩展包。事实上,正是因为近几年,很多新的统计算法都是首先集成在R中,才使得R成为多个领域中数据分析开发平台的首选。
RStudio(http://www.rstudio.com/)可以在GNU Affero通用公共许可证V3版下获取。它是开源的,可以免费使用。RStudio公司除了提供R的商业支持之外,也提供了额外的工具和服务。
参考资料
参考Getting Started with R文章:http://supoort.rstudio.com/hc/en-us/articles/ =201141096-Getting-Started-With-R。
访问RStudio的主页:http://rstudio.com/。
参考Stages in the Evolution of S文章:http://cm.bell-labs.com/cm/ms/departments/ sia/S/history.html。
参考A Brief History of S PS文档:http://cm.bell-labs.com/stat/doc/94.11.ps。
在R和RStudio中安装扩展包
R有一个数量庞大的扩展包,用以增加其功能。事实上,很多国家的大学统计系中,R都是其默认首选语言。因此,当有新的算法被发明时,R都是第一个用于实现这种算法的语言。更幸运的是,安装新增的R包非常简单,介绍如下。
准备工作
只要你的R和RStudio已经安装完毕,那你就已经准备好了。
处理流程
在R中安装新增包非常简单:
1.打开R的交互环境,或者RStudio。
2.假如我们要安装ggplot2,只要输入如下命令,按下回车即可:
install.packages ("ggplot2")
请注意,我们假设,在本书后面的章节,每当我们键入一行文本时,都会在末尾键入回车键。
3.此时,你会在电脑屏幕上看到如下文字。
trying URL 'http://cran.rstudio.com/bin/macosx/contrib/3.0/
ggplot2_0.9.3.1.tgz'
Content type 'application/x-gzip' length 2650041 bytes (2.5
Mb)
opened URL
==================================================
downloaded 2.5 Mb
The downloaded binary packages are in
/var/folders/db/z54jmrxn4y9bjtv8zn_1zlb00000gn/T//Rtmpw0N1dA/
downloaded_packages
4.也许你已经注意到了,你需要知道包的准确名称,如刚才例子中的ggplot2。访问http://cran.us.r-project.org/web/packages/available_packages_by_name.html,确保你输入的包名是准确的。
5.RStudio提供了安装包更为简单的机制。如果你还没有打开它,那么现在打开RStudio。
6.在菜单上选择Tools,选择Install Packages,则会弹出一个窗口,如下图所示。
7.当你开始键入包名时,RStudio则会自动展示一列可能的包名。这种自动补全功能简化了包的安装过程。更好的是,类似包名的包,或者是和你要安装的包名前几个字母相同的老版本或者新版本的包,你都会看得到。
8.现在我们安装一些新的包,这些包都是我们强烈推荐的。输入如下命令。
install.packages("lubridate")
install.packages("plyr")
install.packages("reshape2")
下载样例代码
如果你在www.packtpub.com拥有一个账户,那么对于所有的Packt图书,都可以下载样例代码。如果你在别处获取了这本书,那么你可以访问www.packtpub.com/support注册之后,通过电子邮件获取。
工作原理
无论你是使用RStudio的图形界面还是直接使用install.package命令,你做的事情是一样的。你告诉R,针对你目前的R版本,找到一个合适的库来安装。当你使用命令语句来安装包时,R会报告一个在CRAN上找到的包的地址,以及这个包在你的电脑上下载的路径。
更多内容
R最有力的力量来源是其社区,这里再回顾两个网站。R-bloggers是一个整合了R相关新闻、入门指南的网站,这个网站上目前有超过450篇博客。如果你对R有新的问题,在这里你可以找到很多的信息。此外,Stack Overflow(http://www.*.com)是一个很好的问答网站,在这个网站中,使用标签rstat,可以找到很多关于R的问答。
最后,当你的R技能增长之后,你可能希望构建一个R包给别人使用。本书的内容并不包含如何构建R包,但是请记住,R语言的核心正是R社区由用户提交的丰富而广泛的包。
参考资料
10 个我希望更早知道的 R 包:http://blog.yhathq.com/posts/10-R-packages-I-wish-I-knew-about-earlier.html。
R-blogger网站:http://www.r-bloggers.com/。
生成自己R包的帮助文档:http://cran.r-project.org/doc/contrib/Leisch-Creating-Packages.pdf。
2013年top100的R包:http://www.rbloggers.com/top-100-r-packages-for-2013-jan-may/。
学习R的博客网址:http://learnr.wordpress.com。
在Linux和Mac OS X上安装Python
对于我们来说,很幸运的一点是,在大多数Mac OS X版本以及很多Linux的版本(包含最新的Ubuntu和Fedora都安装了Python 2.7或者最新版本)都已经预装了Python。因此,我们在这一步不需要做太多的事,只需要检查是否一切都已经安装好了。
对于本书而言,我们使用Python 2.7.x版本,而不使用Python 3版本。因此,如果你默认安装的是Python 3,那么你要确认你使用的是Python 2.7。
准备工作
请确保你的网络连接正常,我们可能需要安装一些工具。
处理流程
请执行以下步骤。
1.打开一个新的窗口,输入如下命令:which python。
2.如果你已经安装了Python,那么你可能会看到如下内容:/usr/bin/python。
3.接下来,查看你的Python版本python-version。在我的MacBook Air上,看到如下信息:Python 2.7.5。
工作原理
如果你打算使用OS X,那么你可能会因为以下几个原因,从而希望安装一个独立的Python版本。首先,每次苹果升级你的操作系统时,它会删掉你已经安装的Python包,这样你就必须重新安装你已经安装过的包。其次,Python的新版本发布频率会比苹果自身的更新频率要高。因此,如果你需要紧随着Python的更新而更新,那么最好安装自己独立的版本。最后,苹果的Python版本和Python官方的版本有一点不同,其在硬盘上的位置并不似官方Python那样有一个标准。
网上有很多指南可以帮助你在你的Mac上安装Python。我们推荐一个很棒的指南:http://docs.python-guide.org/en/latest/starting/install/osx/。
更多内容
Python现在有两个版本,这一点有点令人困惑。Python 3.0版本和2.5版本在本质上有差异。然而,因为Python在很多操作系统上被广泛使用,因此Python的基础架构准备逐渐向3.0版本迁移,迁移的过程会保留版本回滚的功能。从2.6版本开始,Python 2.x越来越像Python 3。最新的版本是Python 3.4,而且很多人期待到3.5版本Python会统一。不用担心Python 2.x和3.x之间的差异会对你的学习带来不便。尽管本书主要使用2.x版本,但是我们保证本书中的Python代码只需要稍作修改,就可以在2.x和3.x版本之间便捷地迁移。
参考资料
Python初学者指南:http://www.python.org/about/ gettingstarted/。
Python便捷入门指南:http://docs.python-guide.org/ en/latest/。
Mac OS X Mavericks10.9下的Python开发环境:http://hackercodex.com/guide/python- development-environment-onmac-osx/。
在Windows上安装Python
在Windows下安装Python比较复杂,有三种选择。第一,你可以选择一个标准的Windows版本,然后从python.org(http://www.python.org/download/releases/)下载Python的可执行安装包进行安装。这种方式的潜在问题在于安装路径,有可能配置文件的路径和标准的Python安装路径不一致。很多Python包的安装都会遇到路径问题。此外,很多网上关于Python的教程都不适用于Windows,你需要自己填坑。我们看到很多学生在Windows上安装Python时遇到非常多的问题。除非你是专家,否则我不建议你这样做。
第二个选项是安装一个已经集成好所有科学、数值以及数据相关包的Python预装版本。目前有两个比较合适的预装版本,一家来自Enthought公司,另一家来自Continuum Analytics公司。Enthought提供了配适Windows 32位和64位的Canopy(华盖)版本。这个版本的免费版叫作Canopy Express,其中预装了50多个Python包,包含pandas、Numpy、SciPy、IPython和matplotlib。对于本书的内容来说,这些包已经足够了。Canopy Express还有一个自己的集成开发环境,类似于MATLAB或者RStudio。
Continuum Analytics提供的Anaconda,是一个完全免费的集成Python 2.6、2.7以及3.3版本,包含100多个包,这些包可以做科学计算、数学、工程、数据分析等。Anaconda包含Numpy、Scipy、pandas、Ipython、matplotlib和更多的包。对于本书而言,这些包绰绰有余。
第三个选项,也是最佳选项,就是在Windows上使用一个Linux的虚拟机。可以使用Oracle提供的免费的VirtualBox(https://www.virtualbox.org/wiki/Downloads)。这样你可以选择你喜欢的Linux版本来运行Python。这种方法的缺点是在虚拟机上的操作可能会有延迟,此外你还需要掌握Linux命令行的操作。当然,这也是一个数据科学家应该掌握的。
处理流程
按照如下方法,使用VirtualBox安装Python。
1.从Oracle软件免费下载VirtualBox:https://www. virtualbox.org/wiki/Downloads。
2.参考如下指导,在 Windows 下进行安装:https://www.virtualbox. org/manual/ ch01.html#intro-installing。
3.安装好之后,完成指南中1.6开启VirtualBox和1.7 生成你的第一个虚拟机,以及1.8 运行你的虚拟机的部分。
4.当你的虚拟机开始运行,那么就参考在Linux和Mac OS X上安装Python那一章的内容进行Python的安装。
如果你想要安装Continuum Analytics的Anaconda版本,请参考如下步骤。
1.在如下链接下载64位或者32位的版本:http:// continuum.io/downloads。
2.参考这份详尽的指南来进行安装:http://docs.continuum. io/anaconda/install.html。
工作原理
对很多读者而言,基于他们不同的经验,他们可以很轻松地选择安装虚拟机或者是安装一个预装的Python版本。然而,如果你对这个选择还有所困惑的话,那么请往下看。如果你之前只使用过Windows操作系统,也不太熟悉命令行操作,那么基于虚拟机的操作对你来说会是一个挑战,这也会极大地丰富你的技能。这需要很多的努力,但是对于成为一名数据科学家而言,是很有用的(请相信我们)。如果你有时间,也有相关的知识,那么最好所有的工作都在虚拟机上执行,这将帮助你更快地成为一名数据科学家,也会帮助你更快地在生产环境部署你的代码。如果你没有时间,或者没有相关知识,那么可以使用备选方案,安装Anaconda版本。很多人也是这样选择的。
在本书后续的内容中,我们往往会首先介绍基于Linux/Mac OS X的Python包的安装方法,其次才会介绍Anaconda的安装。因此,对于Windows用户,我们会假设你要么安装了虚拟机,要么安装了Anaconda版本。如果你选择了其他的环境,那么我们也很赞赏你探索未知的勇气并且祝你好运。Google会常伴你左右。
参考资料
Anaconda的网页:https://store.continuum.io/cshop/ anaconda/。
Enthought的Canopy Express的网页:https://www.enthought.com/canopy-express/。
虚拟机:https://www.virtualbox.org/。
Windows下多种包的安装方式:http://www.lfd.uci.edu/~gohlke/pythonlibs。
在Mac OS X和Linux上安装Python数据分析库
Python常常被称为“自带电池的”,其自带的包往往不能发挥这个语言在数据分析上的强大功能。在这一节,我们会安装一个被称为SciPy的“兵器库”,包括NumPy、SciPy、pandas、matplotlib和IPython。
准备工作
我们假设你已经安装了标准的Python。
如果在前一节,你决定安装Anaconda版本(或者Python的其他自带所需库的版本),那么你可以忽略这部分。
为了检查特定的Python包是否被恰当地安装,请打开你的Python解释器,试着载入包。如果成功,则说明包已经成功安装在了你的机器上。为了实现这个操作,你可能需要通过sudo命令来获得机器的根访问权限。
处理流程
以下步骤将帮助你在Linux操作系统中安装Python数据分析库。
1.首先你需要知道你使用的Linux版本。Linux的版本常常决定了你使用的包管理系统,可能包括apt-get、yum以及rpm。
2.打开浏览器,输入http://www.scipy.org/install.html ,这里包含适用于多数操作系统的安装方案。
3.打开shell。
4.如果你在使用Ubuntu或者Debian,则输入如下代码。
sudo apt-get install build-essential python-dev python-
setuptools python-numpy python-scipy python-matplotlib ipython
ipython-notebook python-pandas python-sympy python-nose
5.如果你使用的是Fedora,则输入如下代码。
sudo yum install numpy scipy python-matplotlib ipython python-
pandas sympy python-nose
在你的Macintosh上安装Python数据分析库,有多种选择。
第一个选择是对每个工具都下载一个已经预编译过的安装包(.dmg)。然后像安装Mac应用一样,安装它们(我们推荐这种方法)。
第二个选择是,如果你的Mac上有MacPorts(一个安装软件的命令行工具系统),并且也安装了XCode。那么你只需要输入:
sudo port install py27-numpy py27-scipy py27-matplotlib py27-
ipython +notebook py27-pandas py27-sympy py27-nose
第三个选择是,Chris Fonnesbeck提供了一种已经被测试可行的安装方法,本书中所有的包都可以通过他的方式安装。请参考:http://fonnesbeck.github.io/ ScipySuperpack。
上述方法都会花费一些时间,因为会有大量的文件被安装。
工作原理
历史上,安装SciPy库曾经非常有挑战,因为安装过程非常繁复,甚至还需要Fortran。因此,我们不建议你自己从源代码进行编译,除非你自己乐于折腾这些内容。
现在,我们要问一个更恰当的问题:我们刚刚都安装了些什么?我们安装了NumPy、SciPy、matplotlib、Ipython、IPython Notebook、pandas、SymPy和nose的最新版本。这些包的描述如下。
- SciPy:这是一个基于Python生态的开源包,用于数学、科学、工程,以及一些很有用的机器学习、科学计算以及建模的库。
- NumPy:这是一个非常基础的Python包,提供了数值计算的功能。它提供的计算方式和C很像,所以速度非常快,尤其是当你需要处理高维数组和线性代数计算时。正是因为NumPy,Python才可以进行其他语言无法企及的如此高效的大规模数值计算。
- matplotlib:这是一个被很好地创建并且可以扩展的2D绘图库,而且其用法对于MATLAB用户来说是非常熟悉的。
- IPython:这个包提供了非常丰富并且强大的Python shell。对于标准Python REPL(Read-Eval-Print-Loop)而言,它是一个很好的代替。
- IPython Notebook:这是一个基于浏览器的Python工具,可以支持代码、格式化文件、markdown、图、图像、声音、影像以及数学表达式的编辑和记录。
- pandas:这个包提供了一个非常稳健的数据框对象,并且提供很多扩展工具,让统计分析变得更简单和快速。
- nose:这个库支持Python标准库的单元测试框架。
更多内容
在本章中,我们将更深入地讨论上述包。然而,如果我们不提Python IED,肯定会被人认为是玩忽职守的。简单来说,我们推荐在你最喜欢的写程序的文本编辑器中集成Python的IDE,比如来自GitHub的开源的Atom、sublime,或者Ruby程序员最爱的TextMate。Vim和Emacs也是非常棒的选择,因为它们除了功能强大之外,还可以很容易地在远程服务器上被使用(数据科学家经常使用这种工作方式)。这些编辑器都有很多插件,可以提供代码补全、高亮、缩进等功能。如果你一定要选择一个IDE,那么可以试试PyCharm(社区版本是免费的)。你会发现大多数Python IDE比处理数据更适合网页开发。
参考资料
- 你可以在http://pandas.pydata.org/ 的Python数据分析库这篇文章中看到pandas的更多信息。
- 请访问NumPy网站:http://www.numpy.org/
- 请访问SciPy网站:http://www.scipy.org/
- 请访问matplotlib网站:http://matplotlib.org/
- 请访问IPython网站:http://ipython.org/
- 请参考ScipPy的历史这篇文章:http://wiki.scipy.org/History_of_SciPy
- 访问MacPorts主页:http://www.macports.org/
- 访问XCode主页:https://developer.apple.com/xcode/features/
- 访问XCode下载页:https://developer.apple.com/xcode/downloads/
- 安装更多Python包
本书还需要一些其他的Python包。正如R有一个供社区提交构建包的仓库,Python也有一个类似的功能,以Python包指数(PyPI)的形式呈现。截至2014年8月28日,PyPI中包含48 054个包。
准备工作
在这里,你只要连接到互联网即可。除非特别指出,否则这里的步骤都假设你使用的是操作系统默认的Python版本,而且不是Anaconda。
处理流程
接下来的步骤将向你展示如何下载Python包,并用命令行进行安装。
1.下载包的源代码,可以将其下载到任何你喜欢的地方。
2.对包进行解压。
3.打开一个控制台。
4.到达源代码的路径。
5.输入如下命令:Python setup.py install
6.如果你需要根访问,输入如下命令:sudo python setup.py install
一种更便捷和简单的方法是使用pip安装。请按照如下步骤执行。
1.首先,检查你的管道是否已经安装好了,打开Python解释器,输入:>>>import pip
2.如果你发现没有错误,说明你的管道已经安装好了,那么你可以直接跳到第5步。如果你看到了报错,那么接下来我们快速地安装一下管道。
3.在你的机器上下载get-pip.py,下载地址:https://raw.github.com/pypa/pip/master/contrib/get-pip.py。
4.打开Windows命令行,到达下载路径,输入:python get-pip.py或者sudo python get-pip.py
5.如果管道已经安装好了,那么请保证你现在在系统命令行的提示符下。
6.如果你使用系统默认的Python版本,请输入:pip install networkx或者sudo pip install networkx
7.如果你使用的是Anaconda版本,输入如下命令:conda install networkx
8.现在,让我们试着安装其他的包,比如ggplot,输入:pip install ggplot或者sudo pip install ggplot
工作原理
安装Python包,你至少有两种不同的方法可选。比较古老的方法是,你下载包的源代码,在你自己的机器上拆包,然后运行带有安装标签的setup.py。如果你想,你也可以在文本编辑器中打开setup.py,看看这里的脚本到底在干什么。基于你当前环境的权限管理,你可能得需要sudo权限。
第二种方法是使用pip安装。这种方法会自动抓取远程库中的包,然后在你本机进行安装。如果这种方法可行,那么我们建议使用这种方法。
更多内容
管道很有用,所以我们建议读者阅读其在线的指南。特别注意其中非常有用的功能pip freeze > requirements.txt,这个功能可以让你和你的同事交流外部相关的依赖。
最后,conda是管理Anaconda版本Python的管道的替代品。其官方网站的介绍中说道,“它是一个跨平台的Python包的管理器”。Conda的理念非常高端,超越了Python本身。如果你在使用Anaconda,我们强烈建议你继续深入研究conda可以做什么,并且学会使用它,用它代替管道来作为你的包的管理器。
参考资料
管道用户手册:http://www.pip-installer.org/en/latest/ user_guide.html
conda的主页:http://conda.pydata.org
conda相关的博客:http://www.continuum. io/blog/conda
安装和使用virtualenv
virtualenv是一个变化了的Python工具。你一旦开始使用这个工具,你就会义无反顾地爱上它。virtualenv会生成一个本地的环境,它会在这个环境下安装其自带的Python版本。一旦从shell中激活这个环境,你就可以很方便地用pip install在本地安装包了。
首先,这听起来可能有点奇怪。为什么会有人想要这么做呢?因为这不仅可以帮助你处理涉及跨版本的Python包的依赖关系所带来的问题,而且可以让你能够在不破坏其他重要环节的前提下快速地试验。假设你建立了一个网页应用,用的是包awesom_template的0.8版本,但是你的新数据产品需要这个包的1.2版本。在这种情况下,你该怎么办?如果你使用virtualenv,你可以两者都用。
另外一个例子是,如果你在某台机器上没有管理员权限,那么你该怎么办?你没法用sudo pip install来安装包,因而没法进行数据分析。然而如果有virtualenv,则这些都不是事儿。
虚拟环境是软件开发者们高效协同的开发工具。环境可以保证软件在不同的机器上,以不同的依赖方式运行(比如生产或者开发服务器)。环境同时能够提醒其他开发者,这里有待开发的软件需求。Python的virtualenv保证了软件是在其历史环境中被创建的,可以独立测试、协同部署。
准备工作
假设你已经完成了前面的步骤,那么现在你已经准备好了。
处理流程
使用如下步骤,安装和测试虚拟环境。
1.打开一个shell的命令行,输入如下命令:pip install virtualenv或者sudo pip install virtualenv
2.安装完成后,输入virtualenv,则你将会看到如下截屏中的内容。
3.创建一个临时路径,用如下命令转变你当前的路径:mkdir temp cd temp
4.在这个路径下,创建你的第一个虚拟环境,命名为venv: virtualenv venv
5.你将会看到类似如下的文字:New python executable in venv/bin/ pythonInstalling setuptools, pip...done.
6.现在,新的本地的Python版本已经生成了。想要用它,只需要激活这个环境,使用如下代码:source ./venv/bin/activate
7.注意,活动的脚本无法直接执行,需要先用source命令激活。此外,注意你的shell命令提示符可能已经发生了变化,前缀变成了venv,这表明你现在正在虚拟环境下工作。
8.要验证这一点,使用which命令来看看Python的位置:which python你将看到如下输出:/path/to/your/temp/venv/bin/python
9.接下来,安装些什么:pip install flask Flask是一个微型网站框架,用Python写的。这个命令同时会安装很多Flask用到的包。
10.最后,我们验证一下虚拟环境和管道带来的版本控制的力量:pip freeze > requirements.txtcat requirements.txt输出应该如下:Flask==0.10.1 Jinja2==2.7.2 MarkupSafe== 0.19Werkzeug==0.9.4 itsdangerous==0.23 wsgiref==0.1.2
11.请注意,不仅仅包名被捕捉到了,包括包的版本也被捕捉到了。requirements.txt的优美之处在于,如果我们有了一个新的虚拟环境,我们只要简单地输入如下命令,就可以安装列出来的不同版本的Python包了:pip install -r requirements.txt
12.如果你要注销你的虚拟环境,你只需要输入命令:deactivate
工作原理
virtualenv生成自己的虚拟环境,有自己独立的安装路径,并且可以不依赖操作系统环境进行独立的操作。如果你想试验新的库,使用virtualenv就可以避免污染你系统层面的Python版本。更棒的是,如果你有一个应用刚刚好可以工作,而且你希望就这样了,那么你可以使用virtualenv来让你的应用在它特有的虚拟环境下运行。
更多内容
virtualenv是一个很不错的工具。对于任何一个Python程序员来说,它都是无价的。然而,我们还是要提醒诸位,为了提升程序性能,Python提供了很多工具来和C对象打通。因此,在你的虚拟环境下安装特定的Python包,比如NumPy和SciPy,需要安装和编译额外的依赖,这是由系统来指定的。比较顺利的时候,这些编译也是非常繁冗的。也就是说,维护一个虚拟环境是非常有必要的。更糟糕的是,如果某些依赖没有安装,那么编译就会失败,而且如同外星语言一般的报错信息,复杂的依赖链条会让你非常困扰。即便是有经验的数据科学家,也会对此产生畏惧。
一个简单的解决方案是,在系统环境下使用包管理器来安装复杂的库。这些工具使用第三方包的预编译格式。如果你在系统环境安装了这些Python包,那么当你初始化一个虚拟环境时,可以用--system-site-packages来做标记。这个标记告诉virtualenv来使用系统已经安装的包,并且设法避免对新增安装包的编译。要在你的环境下使用系统已经安装的包(比如,当你想要使用一个包的新版本),使用pit install -I,在虚拟环境下安装依赖,并且忽视全局的包。当你需要在系统上安装大规模的包,但是同时使用virtualenv来做其他类型开发时,这种技术是比较有效的。
本书剩余的部分,我们将假设你已经安装了virtualenv以及本章提到的工具。因此,我们不会太过强调或者纠结虚拟环境的细节。你只要知道,虚拟环境是一个你可以单独执行本书中所有示例的安全环境。
参考资料
- virtualenv的介绍:http://www.virtualenv.org/en/ latest/virtualenv.html
- 探索virtualenvwrapper:http://virtualenvwrapper.readthedocs.org/ en/latest/
- 探索virtualenv:https://pypi.python.org/pypi/virtualenv