作者:Paul
编者按
pandas作为python中非常重要的数据处理工具,它提供了很多灵活的数学和统计方法。在数据处理中,经常需要对数据进行索引的转换,以适应不同的统计和作图的需要;另外在许多数据分析工作中,缺失数据是经常发生的。因此,作为pandas系列文章的一部分,本文将重点关注pandas对数据索引、汇总和缺失数据的处理的相关方法。本文十分详细地列出了具体实例介绍了这些方法,十分建议各位对pandas学习感兴趣的同学下载代码亲自运行进行实际操作。
pandas 索引对象
pandas的索引负责管理轴标签和其他如轴名称等元数据。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index。
Index对象是不可修改的(immutable),因此用户不能对其进行修改。不可修改性非常重要,因为这样才能使Index对象在多个数据结构之间安全共享。
pandas中主要的index对象
● index:最泛化得Index对象,将轴标签为一个由Python对象组成的Numpy数组
● Int64Index:针对整数的特殊Index
● MultiIndex:层次化索引对象,表示单个轴上的多层索引,可以看做由原数组组成的数组
● DatetimeIndex:存储纳秒级时间戳
● PeriodIndex:针对Period数据的特殊Index.
Index的方法和属性
● append:append连接另一个Index对象,产生一个新的Index
● diff:计算差集,并得到一个Index
● intersection:计算交集
● union:计算并集
● delete:删除索引i处的元素,并得到新的Index
● drop:删除传入的值,并得到新的索引值
● insert:将元素插入到索引a处,并得到新的Index
● unique:计算Index中唯一的数组
实例如下
首先建立一个Series对象,这里直接对index赋值。
或者可以用Index对象来建立index。
这里用来判断列和索引是否在DataFrame中存在。
Pandas 重新索引
有时我们需要重新对pandas对象进行索引赋值。
● Series的reindex将创建一个适应新索引的新对象并根据新索引进行重排。当某个索引值不存在时,引入缺失值进行填充。
● 对于序列数据(如有时间标签的数据),重新索引时可能需要做一些插值处理。其中可以用method选项即可达到此目的。
reindex函数的参数
● index:用作索引的新序列。即可以是Index实例,也可以是其他序列的python数据结构
● method:插值填充方式,ffill或bfill
● fill_value:在重新索引过程中,需要引入缺失值时使用的替代值
● limit:前向或后向填充时的最大填充量
● level:在MultiIndex的指定级别上匹配简单索引,否则选择其子集
首先是简单的用reindex方法来重新指定索引: