📅  最后修改于: 2023-12-03 15:00:20.930000             🧑  作者: Mango
在 Pandas 中,unstack
是将一个表格型数据(DataFrame)变成一个更大的、宽格式的数据表,使其具备多层级索引的功能。在本篇文章中,我们将学习 unstack
的一些概念、用法以及示例,展示它对 Pandas 数据分析的重要性。
DataFrame 中的每一个数据都是由对应的行和列所组成的,而 unstack
则是将列索引(也可能是行索引)转换为行中的一级索引,即将宽格式表格变为长格式表格。使用 unstack
时,需要提供一个索引级别的名称或者位置(注意:这个索引和列索引不同),然后进行操作。
最常见的 unstack
使用方法是对多层级列索引数据表进行转换,将表格从宽格式转换为长格式:
import pandas as pd
# 创建多层级列索引的 DataFrame
df = pd.DataFrame({'row': [0, 1, 2],
'one_a': [1, 2, 3],
'one_b': [4, 5, 6],
'two_a': [7, 8, 9],
'two_b': [10, 11, 12]})
df = df.set_index('row')
# 转换数据表格
df_unstacked = df.unstack(1)
print(df_unstacked)
输出:
| | level_1 | 0 | 1 | 2 | | :-: | :-------: | :-: | :-: | :-: | | one | a | 1 | 2 | 3 | | | b | 4 | 5 | 6 | | two | a | 7 | 8 | 9 | | | b | 10 | 11 | 12 |
下面是一些更复杂一些的示例:
# 创建单层级索引的 DataFrame
df = pd.DataFrame({'row': [0, 1, 2, 3], 'a': [1, 2, 3, 4], 'b': [5, 6, 7, 8]})
df = df.set_index('row')
# 转换数据表格
df_unstacked = df.unstack(0) # 单层级索引的转换只需要一个整数参数
print(df_unstacked)
输出:
| | row | 0 | 1 | 2 | 3 | | :-: | :---: | :-: | :-: | :-: | :-: | | a | | 1 | 2 | 3 | 4 | | b | | 5 | 6 | 7 | 8 |
# 创建多层级索引的 DataFrame
df = pd.DataFrame({'row': [0, 0, 1, 1], 'col': ['a', 'b', 'a', 'b'], 'value': [1, 2, 3, 4]})
df = df.set_index(['row', 'col'])
# 转换数据表格,并对 'col' 索引进行排序
df_unstacked = df.unstack('col').sort_index(level=1)
print(df_unstacked)
输出:
| | value | | :-: | :---: | | row | a | b | | 0 | 1 | 2 | | 1 | 3 | 4 |
unstack
可以帮助我们将宽格式的数据表格转换为长格式,方便数据处理和分析。关键是理解多层级索引,传递必要的参数,以及熟悉相关的参数调整方法。在使用 unstack
时,需要根据具体数据情况选择合适的的参数来实现数据表格的转换,获得更好的分析效果。