一、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的使用場景
1、將複合格式的數據進行透視
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函數可以使得數據的展示和處理更加靈活、高效,對於數據分析工作與決策具有非常重要的意義。
原創文章,作者:PVNT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148970.html
微信掃一掃
支付寶掃一掃