《利用python进行数据分析》学习笔记三:Pandas模块(上)

《利用python进行数据分析》学习笔记

首先一样的,先大致看一下pandas模块是在介绍什么,从目录来看,本章依然是入门级别,介绍的内容分为三个模块:
第一模块:数据结构(介绍pandas模块主要的Series和DataFrame两者数据结构,包括创方法、属性等)
第二模块:基本功能,介绍了pandas模块处理数据的基本功能,包括日常处理数据的各种基本步骤
第三模块:描述性统计的概述和计算:介绍利用pandas得到统计数据的方法

pandas模块在进行数据清洗和分析时十分快捷,它经常和其他数据计算模块一起使用,包括numpy、matplotlib等。简单来说(并不完全准确),Numpy和pandas模块的部分代码风格时一致的,但是pandas模块主要是用来处理表格型或者异质型数据的,而Numpy则正好相反,适合处理同质型的数值类数据。

pandas数据结构

主要包括两个数据结构:Series和DataFrame

Series数据结构

Series时一种一维的数组型对象,包含一个值序列(这部分与ndarray类型类似)和一个标签列,可用于索引(index),当然,一个简单的序列可以只由一个数组组成,系统会默认从0开始生成索引:
在这里插入图片描述
Series对象也有两个属性,分别是values属性和index属性,可以获得Series对象的值和索引:在这里插入图片描述
索引也是可以自行创建的,可根据需要安排顺序:
在这里插入图片描述
与numpy的数组相比(numpy数组是没有标签可供索引的),Series对象可以使用标签进行索引:
在这里插入图片描述
使用numpy的函数或者numpy风格的函数(这里没懂,numpy能有什么函数。。。numpy风格的函数又是什么鬼,先按原文放在这里),比如使用布尔值数组进行过滤,与标量相乘,或是应用数学函数,这些操作将保存索引值连接(就是说,得到的结果也会有一个和未计算之前一样的标签列呗)
在这里插入图片描述
对于Series,可以类似的理解为一个长度固定且有序的字典,因为它将索引值和数据值按照位置配对,在可以使用字典的位置,同样可以使用Series:
在这里插入图片描述
如果已经有一个存有数据的字典,甚至可以直接利用字典生成Series对象:
在这里插入图片描述
可以看到,利用字典创建Series时,它的索引是字典的键。如果不满意,可以自己将索引值的顺序传递给Series,如果传递了字典没有的键,就会出现NAN值(即缺失值):在这里插入图片描述
在padas中可以使用isnull和notnull函数来检查缺失数据,它们既是函数,也是Series的方法:
在这里插入图片描述
Series对象还有一个自动对齐索引的特性(我理解是计算时,会对有相同索引值的数据对齐然后计算,没有相同索引值的认为没有的那一方是NAN):
在这里插入图片描述
可以看出,这个特性和数据库的join操作时非常类似的,更深入的对齐特性将在第七章继续介绍。
Series对象自身和它的索引都有name属性:
在这里插入图片描述
Series的索引时可以通过按位置赋值来改变的:
在这里插入图片描述
**

DataFrame数据结构

**
DataFrame个人理解就是类似excel中的数据表了,包含已经排序的列集合,每一列都可以是不同的数据类型。它既有行索引也有列索引,可以被视为是一个共享相同索引的Series的字典(???这是什么理解,没懂)。
DataFrame中,数据被储存为一个以上的二维块(??这又是什么,是说padas是真正把它储存为一个二维对象的意思么),而不是列表、字典和其他一维数组的集合。

注:尽管DataFrame是二维的,但还是可以使用分层索引在DataFrame中展现更高维度的数据。

创建DataFrame的方法很多,最常见的方法是利用等长的列表或Numpy数组的字典来形成:
在这里插入图片描述
可以看到,没有设置索引值的时候,会默认给Series分配按顺序的索引,对于有时候需要处理的大型数据,head方法会只选出头部的五行数据:
在这里插入图片描述
当然,如果指定了列的顺序,DataFrame的列会按照指定顺序排列:
在这里插入图片描述
如果传递的值不包含在字典中,会在结果中出现缺失值:
在这里插入图片描述
DataFrame中的一列,可以按照字典类型标记或者属性那样检索为Series(没看懂,不过看示例,取出的一列都是Series类型):
在这里插入图片描述
可以发现,返回的Series与原DataFrame有相同的索引,且Series的name属性也会被合理地设置(比如例子中的state)。

注:frame2[column]对任意列名有效,但是frame2.column只在列名是有效的Python变量名时有效。

行也可以通过位置或者特殊属性loc进行选取(好像是直接选取一行的数据表现出来,具体的等后面详细介绍,留个印象在这):
在这里插入图片描述
列的引用也是可以修改的,如给空列赋值:
在这里插入图片描述
在这里插入图片描述
但是,在将列表或者数组赋值给一个列的时候,值的长度需要和DataFrame的长度相匹配。例如,如果将Series的值赋给一个列的时候,Series的值会按照DataFrame的索引重新排列,并在空缺的地方填充缺失值:
在这里插入图片描述
被赋值的列如果直接不存在的话,则会生成一个新的列。del关键字可以像在字典中那样对DataFrame删除列:
在这里插入图片描述
del删除新建的列:
在这里插入图片描述
从DataFrame中选取的列是数据的视图,所以对Series的修改会映射到DataFrame对象中;

包含字典的嵌套字典也是一种常见的数据类型:
在这里插入图片描述
如果将这种数据类型传递给DataFrame,pandas会将字典的键作为列,将内部字典的键作为索引:
在这里插入图片描述
转置操作:
在这里插入图片描述
此时的索引也是可以显式得进行设置得:
在这里插入图片描述
包含Serise得字典同样可以用于构造DataFrame:
在这里插入图片描述
还有很多可以向DataFrame传递的对象类型,具体的可以参看教材的133页;

如果DataFrame的索引和列是由name属性的,那么这些name属性也会被显示出来:
在这里插入图片描述
和Series类似,DataFrame的values属性 会把包含在DataFrame中的数据以二维ndarray的形式返回:
在这里插入图片描述
可以看出,如果DataFrame的列是不同的dtypes,则values的dtype会自动选择适合所有列的类型。

**

索引对象

**
pandas的索引对象是用来储存轴标签和其他元数据的(例如轴名称或表标签)(话说轴名称页可以算元数据的么。。。。),在创建Series和DataFrame时,所使用的任意数组或标签序列都可以在内部转换为索引对象:
在这里插入图片描述
另外,索引对象是不可变得,用户无法修改索引对象:
在这里插入图片描述
除了类似数组,索引对象也像一个固定大小的集合(索引对象也是没有排序的么?)
与python集合不同的是,pandas索引对象是可以包含重复标签的(这不是和集合更加不像了)
在这里插入图片描述
索引作为对象也有自己的方法和属性,见教材第135页有记录;

基本功能

**
本节会介绍Serie和DataFrame中数据交互的基础机制;更深入的介绍同样会在更后面的章节介绍;

重建索引

**
reindex,该方法用于创建一个符合新索引的新对象(就是根据输入的索引对原对象进行修改,如果存在之前不包含的索引值,会填充一个缺失值):
在这里插入图片描述
对于顺序数据,比如时间序列,有时候可能需要进行插值或者填值,这时method可选参数就可以允许使用ffill等方法在重建索引时插值,ffill是前向填充,bfill是后向填充(更多参数可见教材137页):
在这里插入图片描述
在DataFrame中,reindex是可以改变行、列索引的,当仅仅传递一个序列时,就会对行进行重建索引:
在这里插入图片描述
如果需要对列进行调整,可以使用columns关键字:
在这里插入图片描述
后面更多的时候,可能会使用loc进行更简洁的标签索引(但我这神奇的报错了。。。等后面才处理):
在这里插入图片描述
**

轴向上删除条目

**
这一节主要介绍删除,教材上说的挺复杂的,可能是有更复杂的情况吧,我看介绍的例子都很好理解,为了后面不用麻烦修改,我先按教材的说法记录在这:
drop方法会返回一个含有指示值(??)或者轴向上删除值得新对象:
在这里插入图片描述
在DataFrame中,索引值可以从轴向上删除:
在这里插入图片描述
删除列值可以传递axis参数来设置:
在这里插入图片描述
drop函数会修改Series或DataFrame得尺寸或者形状,这些方法直接操作原对象而不返回新对象(但我在上面得实例中操作,Drop函数得操作并没有改变原对象啊,时因为有inplace这个参数么?)
在这里插入图片描述
**

索引、选择与过滤

**
Series的索引与Numpy的索引功能类似,但是Series的索引值可以不仅仅是整数:
在这里插入图片描述
在这里插入图片描述
与普通的python切片不包含尾部不同,Series的切片包含尾部:
在这里插入图片描述
可以看出,类似的,对这些方法设值会改变原Series相应的部分;
在于DataFrame,传入单个值或者序列可以引入一个或者多个列:
在这里插入图片描述
甚至可以根据一个布尔值数组进行切片或者选择数据:
在这里插入图片描述
另一种用法是使用布尔值的DataFrame进行索引,该布尔值的DataFrame可以是对标量进行比较产生的:
在这里插入图片描述
**

使用loc和iloc选择数据

**
这两种方法分别使用轴标签(轴index)和整数标签(代表轴的数字)以Numpy的语法风格选择数组行和列组成的子集:
在这里插入图片描述
在这里插入图片描述
自然,索引功能用于切片也是可以的:
在这里插入图片描述
更多的选择数据的方法可以参看教材的143页;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值