在实际的数据处理中,通常需要按照特定的需求对数据的格式进行处理,透视操作和逆透视操作有时是不可逆的。
一,透视和逆透视操作示例
数据透视的过程如下图所示,以Year为索引,按照Course列来透视Earning,把数据从长格式转换为宽格式:
![](https://i-blog.csdnimg.cn/blog_migrate/a639adcd3abf7ea02b7260eb1071f628.png)
数据逆透视的过程如下图所示,把数据从宽格式转换为长格式:
![](https://i-blog.csdnimg.cn/blog_migrate/a4b5c92c328dcb732eebfef9cb5cdc8b.png)
二,长宽格式的转换
宽格式是指:一列或多列作为标识变量(id_vars),其他变量作为度量变量(value_vars),直观上看,这种格式的数据比较宽,举个列子,列名是:id1、id2、var1、var2、var3,一行可以表示多个度量变量的值。
而长格式是指在一行中,除了标识变量(id_vars),其他列是variable和name,从宽格式转换为长格式,会使得数据行数增加,直观上看,这种格式的数据比较长,举个例子,列名是:id1、id2、variable、value,一行只表示一个度量变量的值。
在宽格式转换为长格式的过程中,宽格式中的多个度量变量进行了分裂,使得长格式中的每一行,实际上,只表示一个度量变量的值。
有如下宽数据:
>>> df = pd.DataFrame({
'idA': {0: 'a', 1: 'b', 2: 'c'},
... 'varB': {0: 1, 1: 3, 2: 5},
... 'varC': {0: 2, 1: 4