Pandas DataFrame – Method stack() dan unstack()

Method stack()

Secara sederhana method stack akan melakukan pivoting kolom menjadi index. Untuk lebih mari kita load library dan data yang digunakan.

Data yang digunakan melanjutan dari modul sebelumnya dengan modifikasi penambahan kolom baru “Price in IDR”.

import pandas as pd

df = pd.read_csv("bigmac.csv", parse_dates=["Date"])
df["Price in IDR"] = df["Price in US Dollars"] * 14500

df.head()

Ketika method stack dilakukan, Pandas akan melakukan pivot kolom Price in US Dollars dan Price in IDR menjadi index axis.

df.stack()
Date        Country                           
2016-01-01  Argentina      Price in US Dollars        2.39
                           Price in IDR           34655.00
            Australia      Price in US Dollars        3.74
                           Price in IDR           54230.00
            Brazil         Price in US Dollars        3.35
                                                    ...   
2010-01-01  Ukraine        Price in IDR           26535.00
            United States  Price in US Dollars        3.58
                           Price in IDR           51910.00
            Uruguay        Price in US Dollars        3.32
                           Price in IDR           48140.00
Length: 1304, dtype: float64

Method stack akan mengembalikan series. Jika ingin ditampilkan dalam bentuk dataframe, gunakan method to_frame().

df.stack().to_frame()

Method unstack()

Sesuai dengan namanya, berfungsi mengembalikan index menjadi kolom.

s = df.stack()
s.unstack()

Anda bisa melakukan unstacking dengan memberikan parameter dari level index. Kembali ke posisi pertama kali dilakukan stack.

  • Date adalah level 0
  • Country adalah level 1
  • Price ini US dan IDR adalah level 2.
Date        Country                           
2016-01-01  Argentina      Price in US Dollars        2.39
                           Price in IDR           34655.00
            Australia      Price in US Dollars        3.74
                           Price in IDR           54230.00
            Brazil         Price in US Dollars        3.35
                                                    ...   
2010-01-01  Ukraine        Price in IDR           26535.00
            United States  Price in US Dollars        3.58
                           Price in IDR           51910.00
            Uruguay        Price in US Dollars        3.32
                           Price in IDR           48140.00
Length: 1304, dtype: float64

Jika Anda melakukan perintah unstack() akan sama efeknya dengan unstack(2). Silakan bereksperimen dengan mengubah parameter level.

Jika index memiliki label kolom, Anda bisa gunakan dalam perintah unstack(). contoh:

s.unstack("Country")
s.unstack("Date")
Sharing is caring:

Leave a Comment