pd.dataframe函数,pd.dataframe参数
本文主要介绍pd中几种索引转换的实现。DataFrame,通过示例代码详细介绍。对大家的学习或工作都有一定的参考价值。有需要的朋友就跟着下面学习吧。
01索引和样本数据介绍
02 reindex和rename
03 index.map
04 set_index和reset_index
05 stack
06 unstack介绍:DataFrame是pandas中最常用的数据结构,DataFrame优于嵌套列表或二维numpy数组的原因之一是它提供了行索引和列名。主要介绍了行索引的几种转换方法,包括重命名和重新索引、index.map、set_index和reset_index、stack和unstack等。
练习从一张图开始。
目录
pandas中主要的数据结构类型是Series和DataFrame(旧版本中曾经有一个三维数据结构面板,是DataFrame的容器,后来取消了)。与传统的数组或列表相比,两者最大的便利是提供了索引,DataFrame中有列标签名称,使得对一行或一列数据的操作非常方便,包括数据访问、数据处理和转换等。关于索引的详细介绍,请参考之前的文章:python数据科学系列:熊猫入门详细教程。
这里,为了便于下面的解释,基本数据帧样本数据给出如下:
后面本文将以此为操作对象,介绍几种常见的索引变换。
注意:这里的索引应该广义地理解为包括行扩展索引和列标签。
01 索引简介与样例数据
在学习熊猫的初期,reindex和rename是一组让人摸不着头脑的接口。就其具体功能而言:
Reindex执行索引重组,接收一组标记序列作为新的索引,这适用于行索引和列标记名。重组后,索引的数量可能会发生变化。名为incoming tag sequence rename的索引执行索引重命名,并接收字典映射或转换函数,这也适用于行和列索引。重命名后,索引的数量不会改变,但索引名称可能会改变。此外,两个索引执行函数和接收参数的例程非常相似,它们都支持两种转换方法。
一个是变换内容轴指定动作轴(可选0/1或索引/列);另一种是直接用index/columns关键字指定动作轴。具体来说,reindex执行索引重组,将一组新收到的标签序列作为索引。当索引存在于原始数据帧中时,提取相应的行或列,否则,赋值为null或填充指定的值。对于前面介绍的样本数据df,以重组行索引为例。两个选项是:
注意,原df中的行索引是[1,3,5],而新重组的目标索引是[1,2,3],其中[1,3]是直接从已有索引中提取的,[2,4]在原df中不存在,所以填充空值;同时,原始df中的索引[5]被丢弃,因为它不在指定的索引中。再者,由于重组后可能存在空值,reindex提供了可选参数fill_value和填充空值的方法,其用法与fillna方法一致。前者用于指定定值填充,后者用于指定填充策略,例如:
Rename用法例程与reindex非常相似,但其执行功能完全不同。它主要用于执行索引重命名操作,并接收一个字典或函数类型的重命名规则。例子如下:
02 reindex和rename
对于DataFrame中的数据,pandas提供了一对功能类似的接口:map and apply,applymap,其中map只能用于DataFrame中的一列(即Series),可以接收字典或函数来完成单列数据的转换;Apply可用于一列(即Series)或多列(即DataFrame),但只能接收函数作为参数,用于Series时转换每个元素,作用于DataFrame时转换每个行或列;而applymap只能应用于数据帧,应用的对象是转换数据帧中的每个元素。换句话说,三者最大的区别在于作用范围。
以及变换方式的不同。
实际上,apply和map还有一个细微区别在于:同样是可作用于单列对象,apply适用于索引这种特殊的单列,而map则不适用。所以,对索引执行变换的另一种可选方式是用map函数,其具体操作方式与DataFrame常规map操作一致,接收一个函数作为参数即可:
04 set_index与reset_index
set_index和reset_index是一对互逆的操作,其中前者用于置位索引——将DataFrame中某一列设置为索引,同时丢弃原索引;而reset_index用于复位索引——将索引加入到数据中作为一列或直接丢弃,可选drop参数。二者是非常常用的一组操作,例如在执行groupby操作后一般会得到一个series类型,此时增加一个reset_index操作即可实现series转换为DataFrame。当然转换的操作不止这一种。
05 stack与unstack
这也是一对互逆的操作,其中stack原义表示堆叠,实现将所有列标签堆叠到行索引中;unstack即解堆,用于将复合行索引中的一个维度索引平铺到列标签中。实际上,二者的操作即是SQL中经典的行转列与列转行,也即在长表与宽表之间转换。
当然,实现unstack操作的方式还有pivot,此处不再展开。
到此这篇关于pd.DataFrame中的几种索引变换的实现的文章就介绍到这了,更多相关pd.DataFrame 索引变换内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。