Numpy、pandas基础(数据分析)

本文详细介绍了Numpy库的基础知识,包括ndarray对象的生成、数据类型、算术操作、索引与切片、布尔索引等。此外,还探讨了通用函数、数组编程和文件输入输出。接着,文章转向pandas入门,讲解了Series和DataFrame数据结构,以及索引、选择、过滤、排序和统计方法。文章通过实例展示了如何在数据分析中利用Numpy和pandas进行高效计算。
摘要由CSDN通过智能技术生成

目录

第4章 Numpy基础:数组与向量化计算

4.1 Numpy ndarray:多维数组对象

 4.1.1 生成ndarray

4.1.2 ndarray的数据类型

4.1.3 Numpy数组算术

4.1.4 基础索引与切片

4.1.5 布尔索引

4.1.6 神奇索引

4.1.7 数组转置和换轴

4.2 通用函数:快速的逐元素数组函数

4.3 使用数组进行面向数组编程

4.3.1 将条件逻辑作为数组操作

4.3.2 数学和统计方法 

4.3.3 布尔值数组的方法

4.3.4 排序

4.3.5 唯一值与其他集合逻辑

4.4 使用数组进行文件输入和输出

4.5 线性代数

4.6 伪随机数生成

4.7 示例:随机漫步

4.7.1 一次性模拟多次随机漫步

第5章 pandas入门

5.1 pandas数据结构介绍

5.1.1 Series

5.1.2 DataFrame

5.1.3 索引对象

5.2 基本功能

5.2.1 重建索引

5.2.2 轴向上删除条目

5.2.3 索引、选择与过滤

5.2.4 整数索引

5.2.5 算术和数据对齐

5.2.6 函数应用和映射

5.2.7 排序和排名

5.2.8 含有重复标签的轴索引

5.3 描述性统计的概述与计算

5.3.1 相关性和协方差

5.3.2 唯一值、计数和成员属性


 

第4章 Numpy基础:数组与向量化计算

对于大多的数据分析应用,本书作者主要关注的内容为:

        ·在数据处理、清洗、构造子集、过滤、变换以及其他计算中进行快速的向量化计算。

        ·常见的数组算法,如sort、unique以及set操作等。

        ·高效的描述性统计和聚合/概述数据。

        ·数据排列和相关数据操作,例如对异构数据进行merge和join。

        ·使用数组表达式来表明条件逻辑,代替if-elif-else条件分支的循环。

        ·分组数据的操作(聚合、变换以及函数式操作)。

Numpy重要的原因:

        ·它的设计对于含有大量数组的数据非常有效。

        ·Numpy在内部将数据存储在连续的内存块中,这与其他的Python内建数据结构是不同的。Numpy的算法库是用C语言编写的,所以在操作数据内存时,不需要任何类型检查或者其他管理操作。Numpy数组使用的内存量也小于其他Python内建序列。

        ·Numpy可以针对全量数组进行复杂计算而不需要写Python循环。

4.1 Numpy ndarray:多维数组对象

Numpy的核心特征之一就是N维数组对象-ndarray。ndarray是Python中的一个快速、灵活的大型数据集容器。数组允许使用类似于标量的操作语法在整块数据上进行数学计算。

一个ndarray是一个通用的多维同类数据(包含的每一个元素均为相同类型)容器。,每一个树组都有一个shape属性(用来表征每一维度的数量),每一个数组都有一个dtype属性(用来描述数组的数据类型)。

ndarray(数组、Numpy数组、ndarray对象)

 4.1.1 生成ndarray

使用array函数生成数组。array函数接收任意的序列型对象,生成一个新的包含传递数据的Numpy数组。例如:

嵌套序列,例如同等长度的列表,会自动转换为多维数组:

给定长度及形状后,使用zeros创建全0数组。使用ones创建全1数组。empty可以创建一个没有初始化数值的数组。若创建高维数组,则需要为shape传递一个元祖:

下表展示标准数组的生成函数。Numpy专注于数值计算,如果没有特别指明,则默认的数据类型是float64(浮点型):

4.1.2 ndarray的数据类型

数据类型,即dtype(Numpy能够与其他系统数据灵活交换的原因),是一个特殊的对象,包含了ndarray需要为某一种类型数据所申明的内存块信息(也称为元数据,即表示数据的数据):

Numpy数据类型:

使用astype方法显式地转换数组的数据类型:将浮点数转换为整数的时候,不会进行四舍五入的操作,会直接舍弃小数点之后的数字。注意数据类型需要加上“np.”

使用astype时总是生成一个新的数组。

4.1.3 Numpy数组算术

任何在两个等尺寸数组之间的算术操作都是逐元素操作的形式:

带有标量的算术操作,会把计算参数传递给数组的每一个元素:

同尺寸的数组进行比较,会产生一个布尔值数组:

4.1.4 基础索引与切片

Numpy数值索引与Python列表看起来类似,如果传入了一个数值给数组,数值被传递了整个切片,区别于Python的内建列表,数组的切片是原数组的视图。意味着数组并不是被复制了,任何对于视图的修改都会反映到原数组中

不写切片值的[:]将会引用数组的所有值:

拷贝数组切片而不是一份视图,就必须显式的复制这个数组:

对于高维数组,每个索引值对应的元素是一个数组:

在多维数组中,可以省略后序索引值,返回的对象将是降低一个维度的数组,例如在一个2*2*3(理解为2个2*3的数组)的数组中:

标量和数组都可以传递给arr3d:

类似的arr3d[1,0]或者arr3d[1][0]返回的是一个一维数组:

注意:上述的数组子集选择中,返回的数组都是视图。

数组的切片索引:

4.1.5 布尔索引

布尔值数组的长度必须和数组轴索引长度一致。

当布尔值数组的长度不正确时,布尔值选择数据的方法并不会报错,注意使用。

可以使用!=或者在条件前边使用~对条件取反:~符号可以对通用条件进行取反

当需要选择三个名字中的两个时,可以对多个布尔值条件进行联合使用操作符&->and和|->or:

使用布尔值索引进行选择数据时,总是生成数据的拷贝,即使返回的数组并没有任何变化。

4.1.6 神奇索引

神奇索引是Numpy中的术语,用于描述使用整数数组进行数据索引。

传递多个索引数组情况,会根据每个索引元祖对应的元素选出一个一维数组:

注意:神奇索引与切片不同,神奇索引总是将数据复制到一个新的数组中 。

4.1.7 数组转置和换轴

转置是一种特殊的数据重组方式,可以返回底层数据的视图而不需要复制任何内容。

数组有transpose方法和特殊的T属性:

对于更高维度的数组,transpose方法可以接收包含轴编号的元祖,用于置换轴:下图所示,对第一个轴和第二个轴进行置换:

解释:这里的轴转换为(x,y,z)->(y,x,z)

例如:数组中的4和8交换位置,就是(0,1,0)->(1,0,0)

ndarray有一个swapaxes方法交换轴,该方法接收一对轴编号作为参数,并对轴调整进行重组数据:

注意:wapaxes方法返回的是数据的视图,而没有对数据进行复制。

4.2 通用函数:快速的逐元素数组函数

通用也可以称为ufunc,是一种在ndarray数据中进行逐元素操作的函数。

一元通用函数,例如:

二元通用函数,会接收两个数组并返回一个数组作为结果:

也有一些通用函数返回多个数组,如modf:返回一个浮点值数组的小数部分和整数部分:

一元通用函数:

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【为什么要学习NumpyNumPy是Python语言的一个扩展程序库。支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy是人工智能、数据分析从业者必备的知识和技能,也是学习后续Python扩展库(Matplotlib, SciPy, Pandas, Seaborn, Scikit-image等)的基础。【推荐你学习这门课的理由】(1)图文并茂:课程采用Jupyter Notebook讲解,图文并茂,讲述与Numpy代码对应。其文件将分享给学员,可作为交互式电子书使用。(2)案例丰富: 每个知识点均有Numpy代码示例说明;难点使用图解说明和讲述。另提供Numpy项目实战案例-鸢尾花数据集上的数据分析与计算。(3)内容全面系统:涵盖了Numpy基础用法和高级用法,包括:ndarray、创建数组、复制数组、数组访问、数组运算、数组操作、迭代数组、maskedarray、结构化数组、通用函数、数学函数、统计函数、排序函数、条件查找、随机数、字节交换、线性代数、数据文件读写等。   玩转是一种境界,显示了对该领域有很大的兴趣,并非常了解和能娴熟使用。希望本课程能帮助大家玩转Numpy!【优惠说明】 课程正在优惠中! 备注:购课后可加入白勇老师课程学习交流QQ群:957519975【相关课程】《玩转Matplotlib数据绘图库》课程链接:https://edu.csdn.net/course/detail/28720 《Python编程的术与道:Python语言入门》课程链接: https://edu.csdn.net/course/detail/27845  《Python编程的术与道:Python语言进阶》课程链接: https://edu.csdn.net/course/detail/28618 【课程体系结构图】  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值