DataFrame这种列表式数据结构跟我们常见的Excel极为相似。其设计初衷就是将Series的使用场景由一维扩展到多维。DataFrame由按一定数序排列的多列数据组成,各列的数据类型可以有所不同
Series对象的index数组存放有每一个元素的标签,而DataFrame对象则有所不同,它有两个索引数组,第一个数组与行相关,它与Series的索引数组极为相似。每个标签与标签所在行的所有元素相关联。而第二个数组包含一系列列标签,每个标签与一列数据相关联。
DataFrame还可以理解为一个由Series组成的字典,其中每一列的名称为字典的键,形成DataFrame的列的Series作为字典的值。进一步来说,每个Series的所有元素映射到叫做index的标签数组。
定义DataFrame对象
新建DataFrame对象的最常用方法是传递一个dict对象给DataFrame()构造函数。dict对象以每一列的名称作为键,每一个键都有一个数组作为值
调用DataFrame()构造函数时可以指定columns参数
与Series一样DataFrame创建时如果不指定index数组的标签,那么index数组将从0开始的数组作为索引。如果想用标签作为DataFrame的索引,那么创建DataFrame对象时要给index赋值
常用的快速定义DataFrame的方法是,指定三个参数:数据矩阵、index、columns
选取元素
在DataFrame对象上调用columns属性可以获取对象所有列的名称;
在DataFrame对象上调用values属性可以获取对象所有元素;
在DataFrame对象上调用index属性可以获取对象的索引列表;
如果想选择一列内容,把这一列的名称作为索引即可。或者用列名作为DataFrame实例的属性
用ix属性加上行的索引可以直接获取整行的数据(在python3中用iloc属性),用一个数组指定多个索引值就能选取多行数据
选取行数据也可用如下方法,返回DataFrame对象
如要获取存储在DataFrame中的一个元素,需要一次指定元素所在的列名称、行的索引值或标签
---------------------------------------------
为什么选取的数字为小于1的小数时和实际值不一样
--------------------------------------------
赋值
理解了组成DataFrame个元素的获取方法,依照形同的逻辑就能增加或修改元素
添加列的方法很简单,指定DataFrame实例心裂的名称,为其赋值。DataFrame新增了一个列,列名是new同时这列的所有值都赋值成12
更新一列时,指定需要更新的列,然后需要一个数组赋给这一列
更新单个元素的方法,选择元素,为其赋值即可
元素的所属关系
在Series对象介绍中,isin()方法可以判断一组函数是否属于Series对象,实际上该函数同样适用于DataFrame对象。
得到一个只包含布尔值的DataFrame对象,其中只有满足从属关系之处的元素为True,如果将上述返回结果作为条件,将得到一个新的DataFrame只有满足条件的元素。
删除一列
如果想删除DataFrame对象的一整列数据,使用del命令
筛选
对于DataFrame对象,也可以通过指定条件筛选元素,例如,想获取所有小于指定数字的元素。返回的DataFrame中只包含所有小于2的数组,各元素位置保持布标,不符合条件的元素被替换成NaN
DataFrame的转置
处理列表数据时可能会用到转置操作,将行专为列,列转为行。pandas提供了一种很简单的转置方法,调用T属性就能得到一个DataFrame对象的转置对象。