一、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-hk/n/148970.html