Pandas stack dan unstack: Reshape DataFrame (2026)
Blog/Tips & Trik/Pandas stack dan unstack: Reshape DataFrame (2026)

Pandas stack dan unstack: Reshape DataFrame (2026)

BimaBima
·13 September 2026·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Pandas stack mindahin label kolom jadi baris, ngubah tabel lebar jadi panjang. unstack kebalikannya, mindahin level index jadi kolom, ngubah tabel panjang jadi lebar. Dua fungsi ini buat ngubah bentuk DataFrame tanpa ngitung ulang datanya, sering dipakai bareng groupby yang hasilnya MultiIndex.

Pandas stack mindahin label kolom jadi baris, dan unstack mindahin baris jadi kolom. Dua fungsi ini buat ngubah bentuk DataFrame tanpa ngitung ulang datanya.

Bayangan gampangnya: stack bikin tabel lebar jadi panjang ke bawah, unstack bikin tabel panjang jadi lebar ke samping. Cuma susunannya yang berubah, angkanya tetap sama.

Habis baca ini kamu bisa bolak-balik bentuk tabel sesuai kebutuhan, dan tau cara balik hasil groupby jadi tabel silang yang enak dibaca.

Apa itu stack dan unstack di pandas?

stack mindahin label kolom jadi level index baris, jadi tabel lebar berubah panjang. unstack kebalikannya, mindahin satu level index jadi kolom, jadi tabel panjang berubah lebar. Dua-duanya cuma ngatur ulang susunan, bukan ngitung ulang isinya.

Karena hasilnya sering punya index bertingkat, pahami dulu glossary MultiIndex biar nggak bingung pas lihat outputnya.

import pandas as pd

df = pd.DataFrame({
    'kopi': [10, 12],
    'teh': [5, 8]
}, index=['Senin', 'Selasa'])

df.stack()

Hasil stack di atas jadi Series panjang: (Senin, kopi) 10, (Senin, teh) 5, (Selasa, kopi) 12, (Selasa, teh) 8. Kolom kopi dan teh pindah jadi bagian dari index.

Apa bedanya stack dan unstack?

Bedanya arah. stack narik kolom ke bawah jadi baris, hasilnya lebih panjang dan sempit. unstack ndorong index ke samping jadi kolom, hasilnya lebih lebar dan pendek. Kamu pilih sesuai bentuk yang kamu butuhin.

FungsiArahDariJadi
stackKolom jadi barisTabel lebarTabel panjang
unstackBaris jadi kolomTabel panjangTabel lebar

Format panjang enak buat mesin dan buat grafik. Format lebar enak dibaca manusia dalam bentuk tabel. stack dan unstack yang mindahin datanya antara dua format itu.

Gimana cara pakai stack?

Panggil df.stack() di DataFrame yang punya beberapa kolom. Semua kolom bakal ketarik jadi level index baru di baris. Hasilnya biasanya Series dengan MultiIndex. Kalau mau balik jadi DataFrame rata, tambahin reset_index.

panjang = df.stack().reset_index()
panjang.columns = ['hari', 'produk', 'jumlah']
print(panjang)

Sekarang tiap baris punya satu kombinasi hari dan produk plus jumlahnya. Format ini yang biasa diminta library grafik, dan gampang difilter pakai kondisi biasa.

Gimana cara pakai unstack?

Panggil unstack() di data yang punya MultiIndex, biasanya hasil groupby dua kolom. unstack mindahin level index terakhir jadi kolom. Ini cara cepat bikin tabel silang tanpa pivot_table.

penjualan = df_panjang.groupby(['kota', 'bulan'])['total'].sum()
lebar = penjualan.unstack()
print(lebar)

Hasilnya kota jadi baris, bulan jadi kolom, dan total penjualan mengisi tiap selnya. Kalau ada kombinasi kota-bulan yang nggak ada datanya, selnya diisi NaN. Buat isi NaN jadi nol, tambahin .fillna(0).

Buat kerja lebih lanjut dengan index bertingkat, lanjut ke MultiIndex di pandas.

Contoh kasus: rekap penjualan toko_berkah

Toko_berkah punya data penjualan panjang: satu baris per kombinasi cabang dan bulan, total 4 cabang selama 12 bulan. Pemiliknya mau lihatnya dalam bentuk tabel silang cabang per bulan.

Dari dataset ngulikdata, data panjang 48 baris ini berubah jadi tabel lebar 4 baris x 12 kolom cuma dengan satu unstack. Nggak perlu pivot_table, nggak perlu tulis kolom satu per satu.

tabel = (df.groupby(['cabang', 'bulan'])['total']
           .sum()
           .unstack()
           .fillna(0))
print(tabel)

Kalau nanti mau kirim tabel ini ke grafik, tinggal stack lagi buat balikin ke format panjang. Bolak-balik bentuk tanpa ngitung ulang, itu kekuatan dua fungsi ini.

Kesalahan umum stack dan unstack

Bingung kenapa hasilnya Series, bukan DataFrame. Kalau tinggal satu kolom nilai, stack balikin Series. Tambahin reset_index atau to_frame kalau kamu butuh DataFrame.

Lupa handle NaN setelah unstack. Kombinasi yang nggak ada datanya jadi NaN. Kalau langsung dijumlah tanpa dibersihin, hasilnya bisa NaN semua. Pakai fillna(0) dulu.

Salah level pas unstack data MultiIndex. Default unstack mindahin level terakhir. Kalau mau level lain, sebut nomornya seperti unstack(0). Tanpa itu, tabel silangnya kebentuk dari dimensi yang salah.

FAQ

Apa fungsi stack dan unstack di pandas?

stack mindahin kolom jadi baris, ngubah tabel lebar jadi panjang. unstack mindahin index jadi kolom, ngubah tabel panjang jadi lebar. Dua-duanya cuma ngatur ulang susunan data, bukan ngitung ulang isinya.

Apa bedanya stack sama pivot?

stack dan unstack kerja di level index, pas buat data yang udah punya MultiIndex hasil groupby. pivot kerja di kolom biasa dan lebih gampang buat data mentah yang masih rata.

Gimana balik hasil groupby jadi tabel lebar?

Pakai unstack setelah groupby dua kolom. Contohnya df.groupby(['kota','bulan'])['total'].sum().unstack() bikin kota jadi baris dan bulan jadi kolom. Cara cepat bikin tabel silang tanpa pivot_table.

Penutup

stack dan unstack ngasih kamu kontrol penuh atas bentuk tabel. stack buat manjangin ke bawah, unstack buat ngelebarin ke samping, dan dua-duanya bisa bolak-balik tanpa ngerusak angka. Ingat: cek hasilnya Series atau DataFrame, dan bersihin NaN setelah unstack.

Mau latihan reshape data pakai pandas asli? Kulik di Ngulik Data, materi Python buat analis dari nol.

Lanjut baca: pandas explode buat mecah list jadi baris, dan dokumentasi resmi pandas stack.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Seaborn Pairplot: Cara Eksplorasi Data Cepat dengan Python (2026)
Tips & Trik
18 November 2026•9 menit baca

Seaborn Pairplot: Cara Eksplorasi Data Cepat dengan Python (2026)

Satu baris kode buat lihat hubungan semua kolom numerik sekaligus. Ini cara pakai seaborn pairplot buat eksplorasi data, lengkap dengan contoh dan cara bacanya.

BimaBima
Seaborn Heatmap: Visualisasi Matriks Korelasi (2026)
Tips & Trik
15 November 2026•10 menit baca

Seaborn Heatmap: Visualisasi Matriks Korelasi (2026)

Seaborn heatmap ngubah matriks korelasi jadi grid warna, jadi kamu bisa langsung lihat variabel mana yang saling terkait. Ini cara bikinnya dari df.corr() sampai atur warna dan angka.

BimaBima
Seaborn untuk Pemula: Visualisasi Statistik di Python (2026)
Tips & Trik
12 November 2026•11 menit baca

Seaborn untuk Pemula: Visualisasi Statistik di Python (2026)

Seaborn bikin chart statistik yang rapi cuma dengan satu baris kode. Ini dasar-dasarnya buat pemula, dari histogram sampai heatmap.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore