任务1.2 熟悉Python数据分析的工具
任务描述
Python已经有将近30年的历史。在过去的将近30年中,Python在运维工程师群体中受到广泛欢迎,然而却极少有企业将Python作为生产环境的首选语言。在最近几年,这一情况有所改变。随着云计算、大数据以及人工智能技术的快速发展,Python及其开发生态环境正在受到越来越多的关注。2011年1月,在TIOBE编程语言排行榜中,它被评为2010年度语言。在2017年5月的编程语言排行榜中,Python首次超越C#,跃居第四。Python已经成为整个计算机世界最重要的语言之一,更是数据分析的首选语言。
任务分析
(1)了解数据分析常用的Python、R和MATLAB工具。
(2)了解使用Python工具进行数据分析的优势。
(3)了解7个Python数据分析常用类库。
1.2.1 了解数据分析常用工具
目前主流的数据分析语言有Python、R、MATLAB这3种。其中,Python具有丰富和强大的库。它常被称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地连接在一起,是一门更易学、更严谨的程序设计语言。R 语言则是用于统计分析、绘图的语言和操作环境。它属于GNU系统的一个自由、免费、源代码开放的软件。MATLAB的作用是进行矩阵运算、绘制函数与数据、实现算法、创建用户界面和连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域。
3种语言均可以进行数据分析。表1-1从语言学习难易程度、使用场景、第三方支持、流行领域和软件成本5方面比较了Python、R、MATLAB这3种数据分析工具。
表1-1 Python、R、MATLAB这3种工具对比
1.2.2 了解Python数据分析的优势
结合1.2.1小节的不同数据分析工具的对比可以发现,Python是一门应用十分广泛的计算机语言,在数据科学领域具有无可比拟的优势。Python正在逐渐成为数据科学领域的主流语言。Python数据分析主要包含以下5个方面优势。
(1)语法简单精练。对于初学者来说,比起其他编程语言,Python更容易上手。
(2)有很多功能强大的库。结合在编程方面的强大实力,可以只使用Python这一种语言去构建以数据为中心的应用程序。
(3)功能强大。从特性观点来看,Python是一个混合体。丰富的工具集使它介于传统的脚本语言和系统语言之间。Python不仅具备所有脚本语言简单和易用的特点,还提供了编译语言所具有的高级软件工程工具。
(4)不仅适用于研究和原型构建,同时也适用于构建生产系统。研究人员和工程技术人员使用同一种编程工具,会给企业带来非常显著的组织效益,并降低企业的运营成本。
(5) Python 是一门胶水语言。Python 程序能够以多种方式轻易地与其他语言的组件“粘接”在一起。例如,Python的C语言API可以帮助Python程序灵活地调用C程序。这意味着用户可以根据需要给Python程序添加功能,或者在其他环境系统中使用Python。
1.2.3 了解Python数据分析常用类库
1.IPython
IPython 是 Python 科学计算标准工具集的组成部分,它将其他所有相关的工具联系在一起,为交互式和探索式计算提供了一个强健而高效的环境。同时,它是一个增强的Python Shell,目的是提高编写、测试、调试 Python 代码的速度。IPython 主要用于交互式数据并行处理,是分布式计算的基础架构。
另外,IPython还提供了一个类似于Mathematica的HTML笔记本、一个基于Qt框架的GUI控制台,具有绘图、多行编辑以及语法高亮显示等功能。
2.NumPy
NumPy是Numerical Python的简称,是一个Python科学计算的基础包。NumPy主要提供了以下内容。
(1)快速高效的多维数组对象ndarray。
(2)对数组执行元素级计算以及直接对数组执行数学运算的函数。
(3)读/写硬盘上基于数组的数据集的工具。
(4)线性代数运算、傅里叶变换及随机数生成的功能。
(5)将C、C++、Fortran代码集成到Python的工具。
除了为Python提供快速的数组处理能力外,NumPy在数据分析方面还有另外一个主要作用,即作为算法之间传递数据的容器。对于数值型数据,使用NumPy数组存储和处理数据要比使用内置的Python数据结构高效得多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作NumPy数组中数据,无须进行任何数据复制工作。
3.SciPy
SciPy基于Python的开源代码,是一组专门解决科学计算中各种标准问题域的模块的集合,特别是与NumPy、Matplotlib、IPython和pandas这些核心包一起使用时。SciPy主要包含了8个模块,不同的模块有不同的应用,如用于插值、积分、优化、处理图像和特殊函数等。模块的内容如表1-2所示。
表1-2 SciPy的模块及其简介
4.pandas
pandas 是 Python 的数据分析核心库,最初被作为金融数据分析工具而开发出来。pandas为时间序列分析提供了很好的支持。它提供了一系列能够快速、便捷地处理结构化数据的数据结构和函数。Python之所以成为强大而高效的数据分析环境与它息息相关。
pandas 兼具 NumPy 高性能的数组计算功能以及电子表格和关系型数据库(如 SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,以便便捷地完成重塑、切片和切块、聚合及选取数据子集等操作。pandas将是本书中使用的主要工具。
5.Matplotlib
Matplotlib是最流行的用于绘制数据图表的Python库,是Python的2D绘图库。它非常适合创建出版物中用的图表。Matplotlib最初由John D.Hunter(JDH)创建,目前由一个庞大的开发团队维护。Matplotlib的操作比较容易,用户只需用几行代码即可生成直方图、功率谱图、条形图、错误图和散点图等图形。Matplotlib提供了pylab的模块,其中包括了NumPy和pyplot中许多常用的函数,方便用户快速进行计算和绘图。Matplotlib与IPython结合得很好,提供了一种非常好用的交互式数据绘图环境。绘制的图表也是交互式的,读者可以利用绘图窗口中工具栏中的相应工具放大图表中的某个区域,或对整个图表进行平移浏览。
6.scikit-learn
scikit-learn 是一个简单有效的数据挖掘和数据分析工具,可以供用户在各种环境下重复使用。而且scikit-learn建立在NumPy、SciPy和Matplotlib基础之上,对一些常用的算法方法进行了封装。目前,scikit-learn 的基本模块主要有数据预处理、模型选择、分类、聚类、数据降维和回归 6 个。在数据量不大的情况下,scikit-learn 可以解决大部分问题。对算法不精通的用户在执行建模任务时,并不需要自行编写所有的算法,只需要简单地调用scikit-learn库里的模块就可以。
7.Spyder
Spyder(前身是 Pydee)是一个强大的交互式 Python语言开发环境,提供高级的代码编辑、交互测试和调试等特性,支持Windows、Linux和OS X系统。Spyder包含数值计算环境,得益于IPython、NumPy、SciPy和Matplotlib的支持。Spyder可用于将调试控制台直接集成到图形用户界面的布局中。Spyder的最大优点就是模仿MATLAB的“工作空间”,可以很方便地观察和修改数组的值。Spyder的界面由许多窗格构成,用户可以根据自己的喜好调整它们的位置和大小。当多个窗格出现在一个区域时,将使用标签页的形式显示。界面包含了“Editor”“Object inspector”“Variable explorer”“File explorer”“Python Console”“History log”和“IPython Console”等区域,方便用户灵活运用Python。