Seluruh DataFrame yang kita bangun di Section ini lahir dengan index numerik bawaan: 0, 1, 2, dan seterusnya. Index seperti itu praktis, tetapi nomor urut bukan identitas; baris PRD-002 tetap menjadi produk yang sama meskipun posisinya berubah setelah disaring atau diurutkan. Ketika tabel memiliki kolom yang unik dan stabil, misalnya kode produk pada katalog Toko Buah Segar, menjadikan kolom itu sebagai index membuat tabel lebih mudah dirujuk dan lebih aman diselaraskan dengan tabel lain. Chapter penutup Section ini membahas cara mengganti index dengan set_index(), cara merujuk baris lewat labelnya, dan cara kembali ke index bawaan.
Index Bawaan: RangeIndex #
DataFrame yang dibangun tanpa parameter index otomatis memakai RangeIndex, yaitu deret angka berurutan dari 0 hingga n-1. Deret ini murni posisi, bukan makna; ketika baris-baris disaring, baris yang tersisa membawa angka index aslinya dan deret menjadi bolong-bolong. Itulah mengapa label yang bermakna lebih andal sebagai identitas jangka panjang, sementara RangeIndex berperan sebagai urutan simpan awal.
Mengganti Index dengan set_index() #
Method df.set_index("kode") menjadikan kolom kode sebagai index baris. Secara bawaan, kolom sumbernya ikut pindah: kode tidak lagi berdiri sebagai kolom biasa, tetapi menjadi label baris, persis seperti pada output di bawah. Method ini mengembalikan DataFrame baru dan tidak mengubah DataFrame aslinya, sehingga pola yang kita sarankan tetap assignment: df = df.set_index("kode"); parameter selengkapnya ada di halaman pandas.DataFrame.set_index
.
import pandas as pd
katalog = pd.DataFrame({
"kode": ["PRD-001", "PRD-002", "PRD-003"],
"produk": ["Apel Fuji", "Jeruk Baby", "Mangga Harum Manis"],
"harga": [32000, 18000, 28000],
})
print("Index bawaan:", katalog.index.tolist())
print()
katalog = katalog.set_index("kode")
print(katalog)
print()
print("Index baru :", katalog.index.tolist())
print("Nama index :", katalog.index.name)
print()
print(katalog.loc["PRD-002"])
print()
katalog = katalog.reset_index()
print(katalog)Output yang Dihasilkan:
Index bawaan: [0, 1, 2]
produk harga
kode
PRD-001 Apel Fuji 32000
PRD-002 Jeruk Baby 18000
PRD-003 Mangga Harum Manis 28000
Index baru : ['PRD-001', 'PRD-002', 'PRD-003']
Nama index : kode
produk Jeruk Baby
harga 18000
Name: PRD-002, dtype: object
kode produk harga
0 PRD-001 Apel Fuji 32000
1 PRD-002 Jeruk Baby 18000
2 PRD-003 Mangga Harum Manis 28000Mari kita telaah kode di atas:
- Baris 9 (
katalog.index.tolist()): sebelum diubah, index bawaan tampil sebagai[0, 1, 2], murni nomor urut. - Baris 12 (
katalog = katalog.set_index("kode")): hasil assignment menimpa variabelkatalogdengan versi baru yang indexnya berlabelPRD-001sampaiPRD-003; kolomkodekeluar dari daftar kolom biasa. - Baris 15-16:
katalog.index.namemenunjukkan label index punya namakode, warisan dari nama kolom asalnya; nama ini ikut tersimpan dan berguna saat tabel digabungkan. - Baris 19 (
katalog.loc["PRD-002"]): method.locmerujuk baris lewat label index, dan mengembalikan baris itu sebagai Series denganprodukdanhargasebagai isinya. - Baris 22-23 (
reset_index()): method kebalikannya mengembalikan label index menjadi kolomkodebiasa dan menata ulang index menjadi angka 0, 1, 2.
Merujuk Baris Lewat Label #
Keuntungan index berlabel baru terasa penuh saat merujuk data. Dengan index kode, pencarian satu produk menjadi katalog.loc["PRD-002"], sebuah ekspresi yang membaca seperti kalimat: “ambil baris berkode PRD-002”. Tidak ada pencocokan posisi yang harus dihitung manual, dan tidak ada risiko salah baris saat tabel sudah berubah urutan. Bahasan lengkap tentang seleksi data, termasuk memilih kolom dan potongan baris sekaligus, tersedia pada Section Indexing dan Seleksi Data; panduan resminya berada di halaman indexing and selecting data
, dan di sini cukup pahami bahwa label index adalah pintu masuk utamanya.
Memilih Kolom Identifier yang Tepat #
Bukan semua kolom layak menjadi index. Kolom yang tepat biasanya memenuhi tiga syarat: unik untuk setiap baris, stabil tidak berubah sepanjang umur data, dan bermakna mudah diingat manusia. Kode produk seperti PRD-002 memenuhi ketiganya; nama produk kurang aman karena bisa sama untuk varian berbeda, dan nomor urut baris tidak stabil karena berubah saat data diurutkan.
Dengan index yang tepat, fondasi DataFrame kita tuntas: membuat tabel dari berbagai sumber, membaca dua sumbunya, memeriksa strukturnya, dan memberi identitas pada barisnya. Section berikutnya melangkah ke dunia nyata: memuat data dari file CSV, Excel, dan sumber eksternal lain lewat Section Membaca dan Menulis Data, tempat konsep-konsep Section ini dipakai pada data sungguhan.