在 Pandas 中使用 stack() 和 unstack() 函式重塑 DataFrame
Preet Sanghavi
2023年1月30日
Pandas 是 Python 中的高階資料分析工具或包擴充套件。當我們在 SQL 表、電子表格或異構列中有資料時,強烈建議使用 Pandas。
本文探討了 Pandas 中堆疊和取消堆疊的基本概念。在 Pandas 中,stacking 和 unstacking 被廣泛用於改變正在考慮的 DataFrame 的形狀。
讓我們看看這個方法的實際效果。首先,我們將建立一個虛擬 DataFrame dates_data
以及幾行。
import pandas as pd
index = pd.date_range("2013-1-1", periods=100, freq="30Min")
dates_data = pd.DataFrame(data=list(range(100)), columns=["value"], index=index)
dates_data["value2"] = "Alpha"
dates_data["value2"].loc[0:10] = "Beta"
上面的程式碼塊建立了一個 DataFramedates_data
,其中包含日期和名為 value
和 value2
的兩列。檢視資料中的條目,我們使用以下程式碼:
print(dates_data)
輸出:
value value2
2013-01-01 00:00:00 0 Beta
2013-01-01 00:30:00 1 Beta
2013-01-01 01:00:00 2 Beta
2013-01-01 01:30:00 3 Beta
2013-01-01 02:00:00 4 Beta
... ... ...
2013-01-02 23:30:00 95 Alpha
2013-01-03 00:00:00 96 Alpha
2013-01-03 00:30:00 97 Alpha
2013-01-03 01:00:00 98 Alpha
2013-01-03 01:30:00 99 Alpha
正如我們所看到的,我們有 100 個不同的條目,每個條目在 30 分鐘的間隔後設定的時間相同。
此外,還建立了兩個名為 value
和 value2
的附加列,其中我們將一些值設定為數字,而將其他值設定為 Alpha
或 Beta
。
Pandas 中的 stack()
和 unstack()
函式
我們可以藉助 Pandas 中名為 stack()
和 unstack()
的兩個函式來更改名為 dates_data
的 DataFrame。這個函式可以幫助我們改變 DataFrame 的方向,使行變成列,列相應地變成行。
我們將嘗試將 DataFrame 中的 value
和 value2
更改為行,並將其中的值更改為行中的條目。
使用 unstack()
函式來改變我們的 DataFrame
命令:
dates_data = dates_data.unstack()
print(dates_data)
輸出:
value 2013-01-01 00:00:00 0
2013-01-01 00:30:00 1
2013-01-01 01:00:00 2
2013-01-01 01:30:00 3
2013-01-01 02:00:00 4
...
value2 2013-01-02 23:30:00 Alpha
2013-01-03 00:00:00 Alpha
2013-01-03 00:30:00 Alpha
2013-01-03 01:00:00 Alpha
2013-01-03 01:30:00 Alpha
Length: 200, dtype: object
現在,我們已經成功地改變了我們的資料,現在我們將列作為資料中的行條目。
使用 unstack()
函式來改變我們的 DataFrame
命令:
dates_data = dates_data.stack()
print(dates_data)
輸出:
2013-01-01 00:00:00 value 0
value2 Beta
2013-01-01 00:30:00 value 1
value2 Beta
2013-01-01 01:00:00 value 2
...
2013-01-03 00:30:00 value2 Alpha
2013-01-03 01:00:00 value 98
value2 Alpha
2013-01-03 01:30:00 value 99
value2 Alpha
Length: 200, dtype: object
列值現在在我們的 DataFrame 中堆疊為行。
因此,藉助 Pandas 中的 unstacking 技術
,我們可以根據需要在需要時有效地過濾資料,並轉換 DataFrame 的外觀,以便以更好的方式視覺化資料。
作者: Preet Sanghavi