Python数据分析与实践(浙江省普通高校十三五新形态教材)/大数据与人工智能技术丛书

Python数据分析与实践(浙江省普通高校十三五新形态教材)/大数据与人工智能技术丛书
作者: 编者:柳毅
出版社: 清华大学
原售价: 59.00
折扣价: 44.30
折扣购买: Python数据分析与实践(浙江省普通高校十三五新形态教材)/大数据与人工智能技术丛书
ISBN: 9787302515791

作者简介

内容简介

第5章Python数据分析基础库 本章学习目标:  学习NumPy库的用法、数据结构和基本*作  学习Pandas库的用法、数据结构和基本*作  学习Matplotlib库的用法、数据结构和基本*作  掌握SciPy库的*作、作用  掌握Scikitlearn库的*作、作用 本章介绍Python进行数据分析时常用的NumPy、Pandas、Matplotlib、SciPy和Scikitlearn基础库。NumPy是Python的一种开源数值计算扩展库,这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效许多; Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的,Pandas提供了大量的库和标准数据模型,以及高效、便捷地处理大型数据集所需的函数和方法; Matplotlib是一个Python的2D绘图库,它基于各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形; SciPy是一款方便的专为科学和工程设计的Python工具包,包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理以及常微分方程求解器等; Scikitlearn(简称Sklearn)是SciPy的扩展,建立在NumPy和Matplotlib库的基础之上,支持分类、回归、降维和聚类等机器学习算法。 5.1NumPy NumPy(Numerical Python的缩写)是一个开源的Python科学计算库,包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。NumPy允许用户进行快速的交互式原型设计,可以很自然地使用数组和矩阵。它的部分功能如下。 (1) ndarray: 一个具有矢量算术运算且节省空间的多维数组。 (2) 用于对整组数据进行快速运算的标准数学函数(无须编写循环)。 (3) 用于读/写磁盘数据的工具以及用于*作内存映射文件的工具。 (4) 线性代数、随机数生成以及傅里叶变换功能。 (5) 用于集成C、C++、Fortran等语言的代码编写工具。 NumPy的底层算法在设计时就有着优异的性能,对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多。对于大型数组的运算,使用NumPy中数组的存储效率和输入/输出性能均优于Python中等价的基本数据结构(例如嵌套的list容器)。对于TB级的大文件,NumPy使用内存映射文件来处理,以达到*优的数据读/写性能。这是因为NumPy能够直接对数组和矩阵进行*作,可以省略很多循环语句,其众多的数学函数也会让开发人员编写代码的工作轻松许多。不过NumPy数组的通用性不及Python提供的list容器,这是其不足之处。因此,在科学计算之外的领域,NumPy的优势也就不那么明显了。NumPy本身没有提供那么多**的数据分析功能,理解NumPy数组以及面向数组的计算将有助于*加高效地使用诸如Pandas之类的工具。下面对NumPy的数据结构和*作进行介绍。 NumPy的多维数组对象ndarray是一个快速、灵活的大数据集容器。用户可以利用这种数组对象对整块数据进行数学运算,其运算跟标量元素之间的运算一样。创建ndarray数组*简单的办法就是使用array()函数。它接*一切序列型的对象(包括其他数组),然后产生一个新的、含有传入数据的NumPy数组。这里以一个列表的转换为例: In [1]: import numpy as ** data=[6, 7.5, 8, 0, 1] arr1=**.array(data) arr1 Out[1]: array([ 6. ,7.5,8. ,0. ,1. ]) ndarray是一个通用的同构数据多维容器,其中所有的元素必须是相同类型的。每一个数组都有一个shape(表示维度大小的数组)和一个dtype(用于说明数组数据类型的对象): In [2]: arr1.shape Out[2]: (5,) In [3]: arr1.dtype Out[3]: dtype('float**') 嵌套序列(例如由一组等长列表组成的列表)将会被转换成一个多维数组: In [4]: data2=[[1, 2, 3, 4], [5, 6, 7, 8]] arr2=**.array(data2) arr2 Out[4]: array([[1, 2, 3, 4], [5, 6, 7, 8]]) In [5]: arr2.ndim Out[5]: 2 In [6]: arr2.shape Out[6]: (2, 4) 除非显式说明,否则**.array()会尝试为新建的数组推断出一个较为合适的数据类型。数据类型保存在一个特殊的dtype对象中,例如上面的两个例子: In [7]: arr1.dtype Out[7]: dtype('float**') In [8]: arr2.dtype Out[8]: dtype('int32') 除了**.array()外,还有一些函数可以新建数组,例如**.zeros()和**.ones()可以分别创建**长度或形状的全为0或全为1的数组。Empty可以创建一个没有任何具体数值的数组。如果要用这些方法创建数组,只需传入一个表示形状的元组即可: In [9]: **.zeros(8) Out[9]: array([ 0.,0.,0.,0.,0.,0.,0.,0.]) In [10]: **.zeros((2, 4)) Out[10]: array([[ 0.,0.,0.,0.], [ 0.,0.,0.,0.]]) In [11]: **.empty((2, 3, 2)) Out[11]: array([[[9.78249979e-322, 0.00000000e+000], [0.00000000e+000, 0.00000000e+000], [0.00000000e+000, 0.00000000e+000]], [[0.00000000e+000, 0.00000000e+000], [0.00000000e+000, 0.00000000e+000], [0.00000000e+000, 0.00000000e+000]]]) 在NumPy中,**.empty()会认为返回全为0的数组是不安全的,所以它会返回一些未初始化的很接近0的随机值。 ndarray的一些常用的基本数据*作函数如表5.1所示。 表5.1ndarray基本数据*作函数 函数说明 array()将输入数据(列表、元组、数组或其他序列类型)转换为ndarray。推断出dtype或特别**dtype,默认直接赋值输入数据 asarray()将输入转化为ndarray。如果输入本身是一个ndarray,就不再复制 arange()类似于内置的range,但返回的是一个ndarray而非list ones(),ones_like()根据**的形状和dtype创建一个全1数组。ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组 zeros(),zeros_like()类似于ones()和ones_like(),只不过产生的是全0数组 empty(),empty_like()创建新数组,只分配内存空间,不填充任何值 full(),full_like()用full value中的所有值,根据**的形状和dtype创建一个数组。full_like()使用另一个数组,用相同的形状和dtype创建 eye(),identity()创建一个正方的N×N矩阵(对角线为1,其余为0) 本书一方面侧重Python数据分析基础知识的讲解,另一方面侧重利用Python数据处理方法的应用。本书适合可作为计算机程序设计的入门教材或Python爱好者的参考书。