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 .

python
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:

text
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  28000

Mari kita telaah kode di atas:

  1. Baris 9 (katalog.index.tolist()): sebelum diubah, index bawaan tampil sebagai [0, 1, 2], murni nomor urut.
  2. Baris 12 (katalog = katalog.set_index("kode")): hasil assignment menimpa variabel katalog dengan versi baru yang indexnya berlabel PRD-001 sampai PRD-003; kolom kode keluar dari daftar kolom biasa.
  3. Baris 15-16: katalog.index.name menunjukkan label index punya nama kode, warisan dari nama kolom asalnya; nama ini ikut tersimpan dan berguna saat tabel digabungkan.
  4. Baris 19 (katalog.loc["PRD-002"]): method .loc merujuk baris lewat label index, dan mengembalikan baris itu sebagai Series dengan produk dan harga sebagai isinya.
  5. Baris 22-23 (reset_index()): method kebalikannya mengembalikan label index menjadi kolom kode biasa 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.