Pandas melt: Ubah Data Wide ke Long (2026)
Blog/Tips & Trik/Pandas melt: Ubah Data Wide ke Long (2026)

Pandas melt: Ubah Data Wide ke Long (2026)

BimaBima
·28 Juli 2026·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

pandas melt ngubah DataFrame dari bentuk wide (banyak kolom) jadi long (banyak baris). Kamu tentuin id_vars sebagai kolom yang dipertahankan, dan sisanya dilebur jadi dua kolom baru: satu berisi nama kolom lama (variable), satu berisi nilainya (value). Bentuk long ini yang dibutuhin kebanyakan library visualisasi dan fungsi groupby, jadi melt sering jadi langkah wajib sebelum analisa.

pandas melt ngubah DataFrame dari bentuk wide (banyak kolom) jadi long (banyak baris) cuma dalam satu baris kode.

Data laporan sering datang dalam bentuk wide: satu kolom per bulan, satu kolom per cabang. Enak dibaca mata, tapi bikin repot pas mau di-groupby atau dibikin chart. melt ngerapiin ke bentuk yang komputer suka.

Di bawah ini cara pakainya dari dasar, plus kapan kamu butuh melt dan kapan butuh kebalikannya.

Apa itu pandas melt?

melt adalah fungsi pandas yang ngubah DataFrame dari wide jadi long. Bentuk wide punya banyak kolom nilai. melt ngelebur kolom-kolom itu jadi dua kolom baru: satu berisi nama kolom aslinya, satu berisi nilainya. Hasilnya tabel yang lebih tinggi dan sempit.

Kenapa penting? Karena kebanyakan library visualisasi dan fungsi analisa maunya data long. Jadi melt sering jadi langkah wajib sebelum kerjaan sebenernya mulai. Ini bagian rutin dari data wrangling.

Apa beda data wide dan long?

Gampangnya lewat contoh. Data wide penjualan:

produkJanFebMar
Beras120135128
Gula809288

Bentuk long-nya:

produkbulanomzet
BerasJan120
BerasFeb135
GulaJan80

Wide enak dibaca manusia. Long enak diproses komputer buat groupby, filter, dan chart. Analis sering nerima wide lalu ngubahnya jadi long.

Gimana cara pakai melt paling dasar?

Tentuin kolom identitas yang mau dipertahankan lewat id_vars. Sisanya dilebur otomatis.

import pandas as pd

df_long = df.melt(
    id_vars="produk",
    var_name="bulan",
    value_name="omzet"
)

id_vars="produk" bilang kolom produk jangan dilebur, ulangi aja di tiap baris. var_name dan value_name ngasih nama kolom hasil. Tanpa keduanya, pandas kasih nama default "variable" dan "value" yang kurang jelas.

Hasilnya: tiap produk sekarang punya satu baris per bulan. Kolom Jan, Feb, Mar lenyap, digantikan kolom bulan dan omzet.

Gimana batasi kolom yang dilebur?

Kadang kamu cuma mau lebur sebagian kolom, bukan semua. Pakai value_vars.

df_long = df.melt(
    id_vars="produk",
    value_vars=["Jan", "Feb"],
    var_name="bulan",
    value_name="omzet"
)

Ini cuma nglebur kolom Jan dan Feb. Kolom Mar diabaikan. Berguna kalau tabelmu punya campuran kolom yang mau dilebur dan yang mau dibuang.

Kamu juga bisa kasih beberapa kolom di id_vars, misalnya id_vars=["produk", "cabang"], kalau ada lebih dari satu kolom identitas yang perlu dipertahankan.

Apa kebalikan dari melt?

Kebalikannya pivot atau pivot_table. melt ngubah wide jadi long, pivot ngubah long balik jadi wide.

df_wide = df_long.pivot_table(
    index="produk",
    columns="bulan",
    values="omzet"
)

Alurnya sering bolak-balik: melt buat proses dan analisa, pivot_table buat nyajiin hasil akhir ke bentuk laporan. Aku bahas pivot_table lengkap di Pandas pivot_table.

Contoh kasus: rekap penjualan toko_berkah

toko_berkah punya file rekap penjualan bulanan dalam bentuk wide: satu baris per produk, 6 kolom bulan dari Januari sampai Juni 2026. Total 340 produk. Bentuk ini enak buat dicetak, tapi susah buat dianalisa.

Buat cari produk dengan tren naik, aku ubah dulu jadi long:

df_long = df.melt(
    id_vars="produk",
    var_name="bulan",
    value_name="omzet"
)

Dari 340 baris wide, hasilnya 2.040 baris long (340 produk kali 6 bulan). Begitu jadi long, groupby dan chart tren jadi gampang.

Satu temuan dari data ini: 23 produk punya omzet yang naik terus 6 bulan berturut-turut, dan 18 di antaranya kategori makanan ringan. Pola itu gak akan kelihatan dari tabel wide, karena mata susah bandingin tren antar 340 baris. Setelah long, satu groupby udah cukup buat munculin daftarnya. Alur kayak gini bagian dari tahap persiapan data di kerangka CRISP-DM.

Kesalahan umum pakai melt

Lupa id_vars. Kalau id_vars gak diisi, semua kolom dilebur, termasuk kolom identitas. Nama produk ikut jadi nilai, dan datanya jadi kacau.

Biarin nama default. Kolom "variable" dan "value" bikin kode berikutnya susah dibaca. Selalu kasih var_name dan value_name yang bermakna.

Melt kolom yang tipe datanya campur. Kalau kolom yang dilebur ada yang teks dan ada yang angka, kolom value hasilnya jadi tipe object. Pastiin kolom yang dilebur tipenya seragam.

Lupa data jadi jauh lebih panjang. Wide 340 baris bisa jadi long ribuan baris. Buat data besar, cek dulu ukurannya biar gak makan memori berlebih.

FAQ

Apa itu pandas melt?

melt adalah fungsi pandas yang ngubah DataFrame dari bentuk wide jadi long. Bentuk wide punya banyak kolom, misalnya satu kolom per bulan. melt ngelebur kolom-kolom itu jadi dua kolom baru: satu berisi nama kolom aslinya, satu berisi nilainya. Hasilnya tabel yang lebih tinggi dan sempit. Bentuk long ini yang dibutuhin kebanyakan tools visualisasi dan analisa, jadi melt sering jadi langkah persiapan.

Apa beda data wide dan long?

Data wide nyebar nilai ke banyak kolom, misalnya kolom Jan, Feb, Mar masing-masing berisi omzet. Data long numpuk nilai itu ke bawah, jadi ada kolom bulan dan kolom omzet, satu baris per kombinasi. Wide enak dibaca manusia di laporan. Long enak diproses komputer buat groupby, filter, dan chart. Analis sering nerima data wide lalu ngubahnya jadi long pakai melt sebelum diolah.

Apa fungsi id_vars di melt?

id_vars adalah daftar kolom yang mau dipertahankan apa adanya, gak ikut dilebur. Biasanya ini kolom identitas kayak nama produk, cabang, atau tanggal. Kolom di id_vars bakal diulang di tiap baris hasil melt, jadi tiap nilai tetap kebawa konteksnya. Kolom yang gak masuk id_vars bakal dilebur jadi pasangan variable dan value, kecuali kamu batasi lewat value_vars.

Gimana ganti nama kolom hasil melt?

Pakai argumen var_name dan value_name. var_name ngasih nama buat kolom yang berisi nama kolom lama, value_name buat kolom nilainya. Contoh: df.melt(id_vars='produk', var_name='bulan', value_name='omzet'). Tanpa ini, pandas kasih nama default 'variable' dan 'value' yang kurang jelas. Selalu kasih nama yang bermakna biar hasilnya langsung kebaca dan gampang dipakai di langkah berikutnya.

Apa kebalikan dari melt di pandas?

Kebalikannya pivot atau pivot_table. melt ngubah wide jadi long, pivot ngubah long balik jadi wide. Kalau kamu udah melt data lalu mau nampilin jadi tabel silang buat laporan, pakai pivot_table buat nyusunnya lagi. Dua fungsi ini sering dipakai bergantian: melt buat proses dan analisa, pivot_table buat nyajiin hasil akhir ke bentuk yang enak dibaca.

Penutup

Ringkasnya:

  • df.melt(id_vars=...) ngubah wide jadi long, kolom identitas dipertahankan lewat id_vars.
  • Kasih var_name dan value_name biar hasilnya langsung kebaca.
  • Kebalikannya pivot_table, buat nyusun long balik jadi wide saat mau bikin laporan.

Ambil satu file rekap bulanan yang bentuknya wide, panggil df.melt() dengan kolom identitasnya, dan lihat data kamu berubah jadi bentuk yang siap dianalisa. Sekali paham polanya, melt jadi refleks tiap terima data laporan.

Mau ngerti konsep DataFrame dan tidy data lebih dalam? Cek glossary DataFrame dan glossary tidy data. Dokumentasi resmi melt ada di situs pandas.

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

NumPy reshape: Ubah Bentuk Array (2026)
Tips & Trik
8 Oktober 2026•9 menit baca

NumPy reshape: Ubah Bentuk Array (2026)

Fungsi reshape di NumPy ngatur ulang bentuk array tanpa ngubah datanya. Ini cara pakainya, arti angka -1, dan cara ngeflat array.

BimaBima
NumPy Array: Dasar-Dasar untuk Analis Data (2026)
Tips & Trik
6 Oktober 2026•10 menit baca

NumPy Array: Dasar-Dasar untuk Analis Data (2026)

NumPy array bikin hitungan data di Python jauh lebih cepat dari list biasa. Ini dasar bikin, slicing, dan operasi array buat analis.

BimaBima
Alternatif iterrows yang Lebih Cepat di Pandas
Tips & Trik
3 Oktober 2026•8 menit baca

Alternatif iterrows yang Lebih Cepat di Pandas

iterrows nyaman ditulis tapi lambat. Ini urutan alternatif iterrows di pandas dari yang tercepat, plus benchmark biar kamu tau kapan pakai yang mana.

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