Kolom sudah bisa kita pilih dengan bebas, tetapi pertanyaan analisis sering menunjuk ke baris tertentu: bagaimana data lengkap karyawan ber-NIP E002, atau baris-baris dari E002 sampai E004? Pandas menjawab kebutuhan itu dengan property .loc, yang membaca baris berdasarkan label index. Karena data karyawan kita memakai nomor induk sebagai label, seleksi dengan .loc terasa seperti mencari dokumen lewat nomor dokumennya. Chapter ini mempraktikkan seleksi satu label, rentang label, serta list label beserta perilaku errornya.
Akses Satu Baris Lewat Label #
Property .loc ditulis setelah nama DataFrame, lalu diikuti kurung siku yang berisi label index yang diinginkan. Pandas mengembalikan seluruh nilai baris pada label tersebut. Kita ambil baris E002 dan satu rentang label dari data karyawan yang sudah kita kenal.
import pandas as pd
karyawan = pd.DataFrame(
{
"nama": ["Budi", "Siti", "Dewi", "Andi", "Rina"],
"kota": ["Bandung", "Jakarta", "Surabaya", "Bandung", "Medan"],
"umur": [29, 34, 25, 31, 27],
"gaji": [8500000, 10500000, 7200000, 9800000, 8000000],
},
index=["E001", "E002", "E003", "E004", "E005"],
)
baris_siti = karyawan.loc["E002"]
print(baris_siti)
print()
rentang = karyawan.loc["E002":"E004"]
print(rentang)Output yang Dihasilkan:
nama Siti
kota Jakarta
umur 34
gaji 10500000
Name: E002, dtype: object
nama kota umur gaji
E002 Siti Jakarta 34 10500000
E003 Dewi Surabaya 25 7200000
E004 Andi Bandung 31 9800000Mari kita telaah peran setiap bagian kode di atas:
- Baris 3-11 (
karyawan = pd.DataFrame(...)): dataset lima karyawan dengan label indexE001sampaiE005yang diberikan lewat argumenindex. - Baris 13 (
baris_siti = karyawan.loc["E002"]):.locmencari label"E002"pada index dan mengembalikan seluruh baris tersebut. - Baris 14-15:
print(baris_siti)menampilkan baris yang sudah dipilih. - Baris 17-18: rentang
"E002":"E004"memilih beberapa baris sekaligus dengan batas label awal dan akhir.
Baris Tunggal Berubah Menjadi Series #
Output pertama memperlihatkan perilaku penting: satu baris DataFrame dikembalikan sebagai Series. Index pada Series tersebut berisi nama-nama kolom (nama, kota, umur, gaji), sehingga tampilan tabelnya efektif dibalik, dan baris Name: E002 menyimpan label baris asal. Dtype-nya object karena baris ini memuat campuran string dan angka; pandas memakai object untuk Series campuran semacam ini. Pola Name: ... yang sama juga kita temui pada seleksi kolom di Chapter Memilih Satu Kolom, sehingga asal sebuah Series selalu dapat dilacak.
Rentang Label Bersifat Inklusif #
Output kedua menunjukkan cara kerja slicing pada .loc: rentang "E002":"E004" mengembalikan tiga baris, yaitu E002, E003, dan E004. Label pada batas akhir ikut disertakan, berbeda dengan slice list Python yang mengabaikan batas akhirnya. Sifat inklusif ini masuk akal untuk index berlabel karena pandas tidak mengasumsikan label berurutan berjarak satu per satu. Pada index berisi tanggal, misalnya, rentang "2026-01-01":"2026-01-07" dimaknai lengkap sampai tanggal tujuh.
List Label dan Label yang Tidak Dikenal #
Selain satu label dan rentang, .loc juga menerima list label: karyawan.loc[["E002", "E004"]] mengembalikan dua baris tersebut dengan urutan sesuai list. Bila label tidak ditemukan, pandas menghentikan eksekusi dengan KeyError; menulis karyawan.loc["E999"] menghasilkan KeyError: 'E999', demikian pula karyawan.loc["E002", "alamat"] menghasilkan KeyError: 'alamat' karena kolom tersebut tidak ada. Pesan KeyError yang menyebut label atau kolomnya persis membuat kesalahan ejaan cepat ditemukan. Detail kecil ini juga terdokumentasi pada halaman pandas.DataFrame.loc
dan panduan Indexing and selecting data
.
Sekarang kita memiliki dua cara seleksi baris: .loc yang bekerja dengan label, dan kurung siku pada Chapter-Chapter sebelumnya yang bekerja dengan nama kolom. Masih ada satu basis seleksi yang belum dibahas: posisi integer, yaitu urutan fisik baris di dalam tabel. Property .iloc pada Chapter berikutnya menuntaskan basis seleksi tersebut.