Pandas 中 stack 和 unstack 方法在数据重塑中的应用

在 Pandas 中,stackunstack 是用于重塑数据的重要方法,主要用于处理具有多层索引(MultiIndex)的数据。它们可以帮助你在长格式(long format)和宽格式(wide format)之间转换数据,使数据更适合分析或展示。

1. stack 方法

功能:将数据的列索引(column index)“堆叠” 到行索引(row index)上,增加行索引的层级,减少列的数量。

效果:从宽格式转换为长格式。

示例

假设有一个双层列索引的数据框:

import pandas as pd

# 创建示例数据

data = {

    ('A', 'X'): [1, 2],

    ('A', 'Y'): [3, 4],

    ('B', 'X'): [5, 6],

    ('B', 'Y'): [7, 8]

}

df = pd.DataFrame(data, index=['row1', 'row2'])

print("原始数据框:")

print(df)

# 执行 stack 操作

stacked = df.stack()

print("\nStacked 后的数据框:")

print(stacked)

输出结果

原始数据框:

     A     B   

     X  Y  X  Y

row1 1  3  5  7

row2 2  4  6  8

Stacked 后的数据框:

          A  B

row1 X  1  5

     Y  3  7

row2 X  2  6

     Y  4  8

解释

  1. 原始数据框的列索引有两层(A/BX/Y)。
  2. stack() 默认将最内层的列索引(X/Y)堆叠到行索引上,形成一个新的 MultiIndex。

2. unstack 方法

功能:将数据的行索引(row index)“展开” 到列索引上,增加列索引的层级,减少行的数量。

效果:从长格式转换为宽格式。

示例

继续使用上面 stacked 后的数据框:

# 执行 unstack 操作

unstacked = stacked.unstack()

print("\nUnstacked 后的数据框:")

print(unstacked)

输出结果

Unstacked 后的数据框:

     A     B   

     X  Y  X  Y

row1 1  3  5  7

row2 2  4  6  8

解释

  1. unstack() 默认将最内层的行索引(X/Y)展开到列索引上,恢复原始数据框的结构。

关键参数

  1. level:指定要堆叠或展开的索引层级(默认是最后一层,即 level=-1)。

# 展开第一层行索引(level=0

stacked.unstack(level=0)

  1. fill_value:指定缺失值的填充值。

应用场景

  1. 数据重塑:在多层索引的数据中转换观察维度。
  2. 数据聚合:与 groupby 结合使用,处理复杂的分组统计。
  3. 可视化准备:将数据转换为适合绘图的格式。

总结

  1. stack:列 → 行(宽 → 长)。
  2. unstack:行 → 列(长 → 宽)。

这两个方法是处理复杂索引数据的强大工具,尤其在处理时间序列、面板数据等场景中非常实用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值