Python pandas轴旋转stack和unstack的使用说明
在pandas中,stack和unstack函数是两个重要的轴旋转功能函数。
什么是轴旋转?
在一个二维的数据结构(比如DataFrame或者Series),我们通常会根据某个轴(通常是列轴)进行各种操作,例如选择某列、聚合操作等等。而轴旋转则是将某个轴转换为行轴或者将行轴转换为某个列轴,从而便于我们进行更高效的数据操作。
stack函数的使用
在pandas中,stack函数可以将DataFrame中的某一列轴或行轴转换为另一个轴,以产生新的DataFrame。stack函数的语法格式为:
DataFrame.stack(level=-1, dropna=True)
其中,level参数意为旋转的轴,在DataFrame中默认为列轴。dropna参数表示是否删除缺失值,默认为True。
接下来,我们通过一个示例来演示如何使用stack函数:
import pandas as pd
# 创建DataFrame数据
df = pd.DataFrame({'A':[2,3,4], 'B':[5,6,7], 'C':[8,9,10]}, index=['a', 'b', 'c'])
# 输出原始数据
print(df)
# 转换列轴为行轴
stacked = df.stack()
# 输出转换后的数据
print(stacked)
输出结果如下:
A B C
a 2 5 8
b 3 6 9
c 4 7 10
a A 2
B 5
C 8
b A 3
B 6
C 9
c A 4
B 7
C 10
dtype: int64
从输出结果可以看出,使用stack函数将列轴转换为行轴后,产生了一个Series类型的新对象,其MultiIndex索引由原始DataFrame的行索引和新的轴索引组成。
unstack函数的使用
在pandas中,unstack函数则是将DataFrame中的行索引转换为列轴,以产生新的DataFrame。unstack函数的语法格式为:
DataFrame.unstack(level=-1, fill_value=None)
其中,level参数意为旋转的轴,在DataFrame中默认为行索引。fill_value参数表示缺失值的填充值。
接下来,我们通过一个示例来演示如何使用unstack函数:
import pandas as pd
# 创建DataFrame数据
df = pd.DataFrame({'A':[2,3,4], 'B':[5,6,7], 'C':[8,9,10]}, index=['a', 'b', 'c'])
# 转换列轴为行轴
stacked = df.stack()
# 再将行轴转换为列轴
unstacked = stacked.unstack()
# 输出转换后的数据
print(unstacked)
输出结果如下:
A B C
a 2 5 8
b 3 6 9
c 4 7 10
从输出结果可以看出,我们首先使用stack函数将列轴转换为行轴,并产生一个Series类型的新对象。在这个对象上,我们再使用unstack函数将行索引转换为列轴,从而产生一个新的DataFrame对象。
stack和unstack函数的配合使用
除了可以单独使用stack和unstack函数外,还可以将其配合使用以实现更加复杂的轴旋转操作。
接下来,我们通过一个示例来演示如何将两个轴同时旋转:
import pandas as pd
# 创建DataFrame数据
df = pd.DataFrame({'A':[2,3,4], 'B':[5,6,7], 'C':[8,9,10]}, index=['a', 'b', 'c'])
# 将列轴转换为行轴,并旋转行索引
stacked = df.stack()
# 将行索引第1层转换为列轴
unstacked = stacked.unstack(1)
# 输出转换后的数据
print(unstacked)
输出结果如下:
A B C
a 2 5 8
b 3 6 9
c 4 7 10
从输出结果可以看出,我们首先使用stack函数将列轴转换为行轴,生成一个Series类型的新对象。然后,我们使用unstack函数将行索引的第1层轴(即列轴)转换为列轴。最终,我们得到了旋转后的DataFrame对象。
总结
轴旋转是pandas中的一项重要操作,可以帮助我们更加方便地对数据进行操作。其中,stack函数用于将列轴转换为行轴,生成一个Series类型的新对象;unstack函数则用于将行索引转换为列轴,生成一个新的DataFrame对象。同时,stack和unstack函数可以配合使用,以实现更加复杂的轴旋转操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python pandas轴旋转stack和unstack的使用说明 - Python技术站