查看原文
其他

数据分析项目工具箱浅析

计算机与网络安全 计算机与网络安全 2022-06-01

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:460500587



微信公众号:计算机与网络安全

ID:Computer-network

为了安装和维护方便,强烈建议使用开源软件Enthought Canopy Python数据分析开发环境。Canopy可运行于Linux、Microsoft Windows以及Mac OSX,拥有一个内置的Python集成开发环境,结合一个元数据包管理器,能确保依赖包和模块实时更新,并且和IPython一样有个控制台。对于那些不想使用开源解决方案的朋友,Enthought同样提供Canopy的商业版本。


Canopy应用程序安装完成后,首先需要做的是指导Canopy在IPython控制台里显示所有图像。这是可选的步骤,但可保证在Canopy环境下所有输出能正确显示。当打开Canopy编辑器会话时,可以从Preferences窗口里找到Python标签,选择Inline(SVG)选项,来调整PyLAb Backend的偏好设置(见图1)。

图1  Canopy IDE偏好设置

可以在编辑器的IPython控制台里运行如下代码来验证环境是否设置合适。

成功后的输出如图2所示。当完成这一切后,您已经搞定了基本的环境安装设置,可以开启数据分析之旅了。如果柱状图没有显示,应该检查您的安装步骤,或者验证刚刚提过的图像显示设置是否正常。

图2  测试IPython控制台输出

一、Python数据分析和可视化生态系统


虽然Python有很多可用的库,但是仅有少数库在处理数据方面很出色,而我们仍旧称这些库是一个生态系统,是因为每一个库的开发和支持来自不同的组织、社区或者个人,他们互相合作,却组织松散。


如下是一些几乎每一个项目都需要的库:


Numpy,可以为通用数据创造一个多维容器,支持对数据的多种操作,生成随机数。它也能够“广播”对于Python对象的操作,使其代码更简洁和高效。


SciPy库,Numpy的上层封装,便捷的面向数组操作,能够将Numpy广播操作扩展到Python语言中的其他类型的数据元素。另外它还附带统计相关的操作。


Maplotlib,一个Python强力的通用库使您的数据转化为产品级的图像。


Pandas,该库提供了更高的性能、易用的数据结构数据分析工具;pandas将Data.Frame类型引入Python的命名空间里。虽然这样会让那些Python的死忠阿谀pandas,但是本质上来看,Python更像R语言,会使我们更简单地在两者间切换。


这些模块,结合IPython,有时会被SciPy栈的核心组件引用(自从它包含了SciPy库以后,这有点费解)。


当您用自己的方法采用此生态系统时,会发现如下代码:

import段的代码会载入库里的函数和变量,使其名称和功能性在当前Python工作会话里生效,as组件能使模块里的变量、函数和对象能简单地被引用。


假如您的许多程序组件,都要引用每一个Scipy程序包里的基本常规模块,可以创建一个文本作为基本模板,包含这些imports和其他(以后)能重复使用的代码来节省打字的时间。


将来当然会使用软件包来连接数据库、读取文件、执行一些功能,可以花一些时间在Python Package Index(PyPI)上细读所有灵巧的模块,但如果它是和SciPy栈有联系的,它将会成为您数据科学之旅上一个常规的老伙计。

Python的“难点”


Python有两个特性容易让新手受挫。第一个“难点”是空白缩进,空格在Python代码里是非常重要的。对于代码段,没有{}或begin/end来标记开始和结束。您必须保持一致的缩进来区分一起执行的代码段,不一致的缩进会导致解释器输出错误信息,程序代码出现异常。现在大部分文本编辑器或者IDE都可以配置提示功能。


第二个“难点”是在使用变量前缺少声明,将一个变量breaches初始化为某个值,不经意间引用该变量,breaches在解释器里不会出错,但是输出的结果却不符合预期。


Canpy的包管理器易于进行Python核心安装和相关的模块的实时更新。但是假如您选择手动安装,需要依赖操作系统的包管理器来安装Python解释器。升级独立的附加模块可以使用如下Python代码完成:

关于Python版本


这里的例子基于Python2.7。现在Python有两个主要的版本,2.7.x和3.3.x,Python 3和Python2.7对默认行为做了很多改变,许多包也完成了更新以便与新版本兼容。但是仍旧有许多包只兼容Python2.7,所以稳定性和广泛性使得Python2.7版本成为了数据分析的好选择。


二、设置R语言环境


需要下载安装R,Rstudio,来构建R/RStudio环境。它们包含下面的核心特性。


内置的IDE

数据结构和工作空间探索工具

R控制台的快速访问

R帮助界面

图形画板界面

文件系统浏览器

包管理器

集成版本控制系统


RStudio有桌面和服务器模式,它们的主要区别是:一个是单用户产品(RStudio Desktop);另一个(RStudio Server)是装在服务器上,可以通过浏览器访问,使多用户可以利用计算设施的优势。假设您不熟悉R或者R Studio,可以下载安装RStudio Desktop(这里所有涉及RStudio例子都是桌面版完成的)。


安装好之后,打开RStudio,会看到默认的工作空间,如图3所示。

图3  RStudio的默认工作空间

虽然可以用RStudio内置的包管理器去安装包,但是使用控制台会更方便。可以通过安装ggplot2包熟悉这一流程。当在RStudio控制台敲入以下命令时,安装就会开始。

执行以下代码确认ggplot2安装正确以及R/RStudio环境正常:

假如没有出错,看到如图4所示的柱状图,说明您的环境已经准备好了。使用过程中假如遇到错误,尝试用R控制台(不是RStudio)重新安装ggplot2,执行上述柱状图代码。假如运行不正常,卸载并重装RStudio以解决这个错误。

图4  测试R/RStudio输出

关于R版本


这里的R例子都是在R 3.0版本下创建的,有些包管理器仍旧将2.15版本作为默认版本。


三、数据帧


如果了解其他编程语言,一定会对通用的数据类型有一些基本认识,例如字符串、整型以及数组。R和Python提供了标准的数据类型集合,它们有一个共同的数据类型:数据帧,它给予R和Python强大的功能。从表面上看,数据帧仅仅是表现表格数据(标准的Excel电子表格中展示的数据类型)的一种方法,并且看上去像是二维数组。然而,如果深入剖析,就会发现数据帧是数据库表、矩阵、二维数组以及具有许多额外的省时特性的数据透视表的一体化组合。

像数据库表,每列在数据帧中有一个列名并拥有相同类型的数据元素。您可以在全列、全行以及各列/行子集中执行操作。增加、合并、扁平、扩展、修改、删除以及查找等针对数据的操作在R和Python中都只需要执行一行命令,就像从文件中读出或写入数据一样。从本质上看,Python和R通过将这种理解力融合进数据结构和相应的函数以获得了这项有表现力的功能。相反,其他编程语言缺少这种复杂的数据结构,这意味着您需要自己编写代码来建立自己的数据结构以获得相似的功能。


下面的代码(图5和图6)分别提供了关于R和Python中数据帧操作的概述。

图5  R 代码

图6  Python 代码

对于大多数分析项目,数据帧是R和Python的核心数据结构。它使开发者专注于用数据来做什么而不是如何做。这是特定领域编程语言和通用编程语言的主要区别之一。如果您曾经对转向使用R或Python进行数据分析表示观望,希望这个关于每种语言能力的简单介绍能够说服您。


四、组织结构


最后,我们即将进入数据分析项目,建立一块能够管理输入数据、分析脚本、输出(可视化信息、报告、数据)以及相关文档的分区是一个好方法。


像大多数编程的元素一样,没有单一的最好的方法来建立框架,但是应该努力寻找适合自己的并坚持下去。一个好的方法是向现代Web框架搭建者学习并使用简单的shell脚本为自己搭建框架。我们提供了shell脚本的示例,适用于Mac OS X/Linux的Bourne shellWindows下的CMD shell(图7和图8)。

图7  Bourne shell

图8  CMD shell

现在,当需要新建一个项目时,只需输入prep项目名(对于本项目,输入prep ch02)即可。当您开发自己风格的模式时,可以扩展这个脚本,使之包含各种模板甚至是源代码库的初始化。一旦框架建立好,便可检索、探索、分析数据了。


五、结语


Python和R是安全数据科学家工具箱中的关键组件。Python和其他现有脚本语言很相似,它拥有很大的支持社区,具有多样化的数据操作功能。增加了健壮的统计、图形和计算包,这些使得Python成为许多分析工作的一个很好的选择。R的统计基础、同样庞大的支持基础、健壮的包库以及在分析社区的日益流行使它成为完成数据科学任务必须学会或使用的语言。虽然可以使用任何一种语言的标准版或基础版进行开发,但是使用专门的开发环境将使您能够专注于您的分析工作而不是系统管理任务。


数据帧是一种基于R和Python的数据处理能力的“智能数据结构”,它整合了数据库、数据透视表、矩阵以及电子表格的能力。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存