一周学会Pandas2之Python数据处理与分析-数据重塑与透视-stack() - 堆叠 (列 -> 行)

锋哥原创的Pandas2 Python数据处理与分析 视频教程:  

2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

在数据处理与分析领域,Pandas 数据重塑(Reshaping)与透视(Pivoting)是两种重要操作,用于调整数据结构以满足特定分析需求。以下是对它们的解释:

数据重塑指通过改变表格的行、列结构来重新组织数据,常见方法包括堆叠(Stacking)与拆堆(Unstacking)、长格式与宽格式转换等。

数据透视是一种特殊的数据重塑,通过聚合函数(如summean)对数据进行分组汇总,生成交叉表(如 Excel 中的透视表)。数据透视表,顾名思义,是指它有“透视”数据的能力,可以找出大量复杂无关的数据的内在关系,将数据转化为有意义、有价值的信息, 从而看到它所代表的事物的规律和本质。

stack() - 堆叠 (列 -> 行)

pandas 中的 stack() 方法用于将 列索引的某一层级 转换为 行索引,从而将 DataFrame 从 宽格式 转换为 长格式。这种操作在数据重塑(Reshaping Data)中非常常见,尤其在处理多级索引(MultiIndex)数据时。

基本语法

DataFrame.stack(level=-1, dropna=True)

参数说明

  • level (默认为 -1):

    • 指定要堆叠的列索引层级(整数、字符串或列表)。

    • -1 表示最内层(默认)。

  • dropna (默认为 True):

    • 是否在结果中删除包含 NaN 的行。

返回值:

  • 返回一个 SeriesDataFrame(若堆叠后仍有列索引则返回 DataFrame)。

示例

示例 1:单层列索引的堆叠

import pandas as pd
​
# 创建 DataFrame
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=['row1', 'row2'])
print("原始数据:")
print(df)

执行 stack()

stacked = df.stack()
print("堆叠后:")
print(stacked)

列索引 ['A', 'B'] 被转换为行索引的第二层。

结果是一个多级索引的 Series

示例 2:多层列索引的堆叠

# 创建多层列索引的 DataFrame
columns = pd.MultiIndex.from_tuples([('A', 'X'), ('A', 'Y'), ('B', 'X')])
df_multi = pd.DataFrame([[1, 2, 3], [4, 5, 6]], index=['row1', 'row2'], columns=columns)
print("原始数据:")
print(df_multi)

默认堆叠(最内层 level=-1)

stacked_inner = df_multi.stack()
print("堆叠最内层:")
print(stacked_inner)

  • 最内层列索引 ['X','Y','X'] 被堆叠到行索引。

  • 缺失值用 NaN 填充(可通过 dropna=False 保留)。

堆叠指定层级(level=0)

stacked_outer = df_multi.stack(level=0)
print("堆叠最外层:")
print(stacked_outer)

  • 最外层列索引 ['A','B'] 被堆叠到行索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值