当前位置: 首页 > news >正文

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:行 → 列(长 → 宽)。

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

http://www.dtcms.com/a/277729.html

相关文章:

  • 日记-生活随想
  • 信号量机制,互斥的避免自旋锁的实现方法(操作系统)
  • SQL141 试卷完成数同比2020年的增长率及排名变化
  • 《棒球知识科普》体育健将有什么特点·棒球1号位
  • SQL155 大小写混乱时的筛选统计
  • C++进阶-二叉搜索树(二叉排序树)
  • Java机密计算实战:Intel SGX与Spring机密数据保护
  • 在Linux服务器上通过screen挂起程序,以及利用reptyr从终端剥夺程序的控制权转交screen的方法
  • 【Python类管理】装饰器@的实际用法和查询
  • QML 自定义Model基础之QAbstractListModel
  • 流程管理系统中,授权临时节点的技术方案
  • RabbitMQ队列的选择
  • Qt窗口:QToolBar、QStatusBar、QDockWidget、QDialog
  • HTML 段落标签
  • 深度剖析:std::vector 内存机制与 push_back 扩容策略
  • Mysql 笔记
  • 深度学习图像分类数据集—水质量识别分类
  • 单例模式详解:确保一个类只有一个实例
  • 代码随想录算法训练营day29
  • 常见Spring事务失效原理解析
  • 力扣面试150题--单词搜索
  • Java面试基础:面向对象(2)
  • CCPD 车牌数据集提取标注,并转为标准 YOLO 格式
  • C++--红黑树封装实现set和map
  • duckdb和pyarrow读写arrow格式的方法
  • H3C无线旁挂2层直接转发组网模拟实验
  • opendrive文件的格式
  • 专业PPT图片提取工具,操作简单
  • 【Python练习】041. 编写一个函数,检查一个二叉树是否是平衡二叉树
  • 大数据在UI前端的应用深化研究:用户行为数据的情感分析