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。

更新於: 2021年11月18日

1K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.