Python Pandas 庫中的 stack 和 unstack 函式是什麼。
Stack 和 unstack 函式用於重塑 pandas 庫中的 DataFrame,以透過不同方式提取更多資訊。
Stack
Pandas stack 用於將列級別堆疊到索引中。它返回一個具有多級索引的新 DataFrame 或 Series。stack 方法有兩個引數:level 和 dropna。
level 引數用於將列軸堆疊到索引軸上,預設值為 1,我們可以提供字串、列表和整數。dropna 用於刪除結果 DataFrame/Series 中具有缺失值的行。預設值為 True,它接受布林資料。
讓我們舉個例子,看看它是如何工作的。
示例
df = pd.read_json('E:\iris.json') # create a DataFrame using iris data set
df_stacked = df.stack(0) # stacked to level 0
print(df_stacked) # display the result解釋
使用 iris 資料集,我們建立了一個 DataFrame,它只有一個級別 0。在下一步中,將該 DataFrame df 堆疊到索引級別。
輸出
0 sepalLength 5.1 sepalWidth 3.5 petalLength 1.4 petalWidth 0.2 species setosa ... 149 sepalLength 5.9 sepalWidth 3 petalLength 5.1 petalWidth 1.8 species virginica Length: 750, dtype: object
上面輸出塊顯示了堆疊的 DataFrame “df”,結果輸出是一個具有 2 個級別(0 和 1)的 Series,Series 長度為 750。
Unstack
Unstack 也類似於 stack 方法,它返回一個 DataFrame,該 DataFrame 具有新的列標籤級別。它有兩個引數:level 和 fill_value。
level 引數接受整數、字串或這些的列表,預設值為 1(1 是最後一個級別)。fill_value 用於填充空值,如果 unstack 產生任何缺失值。
示例
在此示例中,我們將採用上述堆疊的 DataFrame 並將其應用於 unstack 函式。
unstacked_df = df_stacked.unstack(level=0) print(unstacked_df)
解釋
將上述示例中的堆疊 DataFrame 取消堆疊。此處級別為 0。結果輸出 DataFrame 顯示在下面的塊中。
輸出
0 1 2 3 4 5 6 7 \
sepalLength 5.1 4.9 4.7 4.6 5 5.4 4.6 5
sepalWidth 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4
petalLength 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5
petalWidth 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2
species setosa setosa setosa setosa setosa setosa setosa setosa
8 9 ... 140 141 142 143 \
sepalLength 4.4 4.9 ... 6.7 6.9 5.8 6.8
sepalWidth 2.9 3.1 ... 3.1 3.1 2.7 3.2
petalLength 1.4 1.5 ... 5.6 5.1 5.1 5.9
petalWidth 0.2 0.1 ... 2.4 2.3 1.9 2.3
species setosa setosa ... virginica virginica virginica virginica
144 145 146 147 148 149
sepalLength 6.7 6.7 6.3 6.5 6.2 5.9
sepalWidth 3.3 3 2.5 3 3.4 3
petalLength 5.7 5.2 5 5.2 5.4 5.1
petalWidth 2.5 2.3 1.9 2 2.3 1.8
species virginica virginica virginica virginica virginica virginica
[5 rows x 150 columns]級別為 0 的取消堆疊的 DataFrame 具有 5 行和 150 列。使用這些 stack 和 unstack 函式,我們可以輕鬆地從 DataFrame 中提取資料,並且可以輕鬆地重塑多級 DataFrame。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP