一、unstack翻译
翻译意为“取消堆叠”,在数据分析和处理中,指根据某个字段的值,将数据行转换为数据列。比如在一个表格中,包含了不同年份、月份、销售金额三个维度的数据,通过unstack可以将不同月份的销售金额转换为不同的列,便于进行分析。
二、unstack函数作用
在pandas库中,unstack是一个重要的数据透视函数。它可以将某个轴上的数据进行透视、重塑和取消堆叠操作,从而可以方便地进行数据展示、分析和可视化。
unstack函数的语法为:df.unstack(level=-1, fill_value=None)
其中,df
是待处理的数据表,level
是堆叠列的级别,fill_value
是NaN值的替换值,默认为None。
三、stack函数选取
unstack函数的逆操作是stack函数,也是一个重要的数据透视函数。与unstack函数相反,它将数据列转换为数据行。stack函数的语法为:df.stack(level=-1, dropna=True)
。其中,df
是数据表,level
是堆叠列的级别,dropna
表示是否去掉NaN值。
四、unstack的使用场景
- 将复合格式的数据进行透视
import pandas as pd
data = {'Weekday': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
'City 1': [25, 30, 80, 70, 35, 60],
'City 2': [30, 35, 70, 60, 40, 65],
'City 3': [15, 20, 50, 50, 25, 45]}
df = pd.DataFrame(data)
print(df)
# Weekday City 1 City 2 City 3
# 0 Monday 25 30 15
# 1 Tuesday 30 35 20
# 2 Wednesday 80 70 50
# 3 Thursday 70 60 50
# 4 Friday 35 40 25
# 5 Saturday 60 65 45
df = df.set_index('Weekday')
print(df)
# City 1 City 2 City 3
# Weekday
# Monday 25 30 15
# Tuesday 30 35 20
# Wednesday 80 70 50
# Thursday 70 60 50
# Friday 35 40 25
# Saturday 60 65 45
df2 = df.unstack()
print(df2)
# Weekday
# City 1 Monday 25
# Tuesday 30
# Wednesday 80
# Thursday 70
# Friday 35
# Saturday 60
# City 2 Monday 30
# Tuesday 35
# Wednesday 70
# Thursday 60
# Friday 40
# Saturday 65
# City 3 Monday 15
# Tuesday 20
# Wednesday 50
# Thursday 50
# Friday 25
# Saturday 45
在这个例子中,我们将一个三维的数据表格转化为了一个二维的数据表格,其中每个城市的每天销售额变成了该城市和该天的组合,并将原本的三个城市维度变成了三个新的列。 2. 多级索引数据的透视
data = pd.read_csv('sales.csv')
print(data)
# Region City Date Product Sales
# 0 East New York 2020/01/01 Product1 10
# 1 East New York 2020/01/01 Product2 20
# 2 East New York 2020/01/02 Product1 15
# 3 East New York 2020/01/02 Product2 25
# 4 East Boston 2020/01/01 Product1 12
# 5 East Boston 2020/01/01 Product2 18
# 6 East Boston 2020/01/02 Product1 16
# 7 East Boston 2020/01/02 Product2 22
# 8 West San Fransico 2020/01/01 Product1 8
# 9 West San Fransico 2020/01/01 Product2 10
# 10 West San Fransico 2020/01/02 Product1 6
# 11 West San Fransico 2020/01/02 Product2 15
# 12 West LA 2020/01/01 Product1 7
# 13 West LA 2020/01/01 Product2 9
# 14 West LA 2020/01/02 Product1 4
# 15 West LA 2020/01/02 Product2 8
df = data[['Region', 'City', 'Product', 'Sales']].set_index(['Region', 'City', 'Product'])
print(df)
# Sales
# Region City Product
# East New York Product1 10
# Product2 20
# Boston Product1 12
# Product2 18
# West San Fransico Product1 8
# Product2 10
# LA Product1 7
# Product2 9
df2 = df.unstack(['City', 'Product'])
print(df2)
# Sales
# City Boston LA New York San Fransico
# Product Product1 Product2 Product1 Product2 Product1 Product2 Product1 Product2
# Region
# East 12 18 10 20 NaN NaN .. ..
# West .. .. .. .. 7 9 8 10
在这个例子中,原本一个三元素索引(Region, City, Product)的表格,通过unstack函数分别将City和Product两个索引拆分为单独的列,得到了一个四元素索引的表格。这个方式可以将多维度的数据方便地进行展示和分析。
五、总结
本文深入地介绍了unstack函数的作用、语法和使用场景,对于数据分析和处理中的透视、重塑和转化操作提供了很好的帮助。 总之,unstack函数可以使得数据的展示和处理更加灵活、高效,对于数据分析工作与决策具有非常重要的意义。