Lewati ke konten utama

Iloc vs Loc di Pandas: Panduan dengan Contoh

.loc memilih data menggunakan nama baris dan kolom (label), sedangkan .iloc menggunakan indeks numerik (posisi). Pelajari cara menggunakan keduanya dengan contoh.
Diperbarui 5 Jun 2026  · 8 mnt baca

Salah satu hal yang sering membingungkan saat kita belajar Pandas adalah perbedaan antara .loc dan .iloc.

Mari kita akhiri kebingungan ini dan memperjelas perbedaan kedua metode tersebut. Saya akan memberikan banyak contoh, dan semoga perbedaannya akan jauh lebih jelas di akhir blog ini.

Apa itu .loc dan .iloc di Pandas?

Baik .loc maupun .iloc adalah atribut penting dari DataFrame Pandas, dan keduanya digunakan untuk memilih subset data tertentu. Tujuannya adalah mengakses dan memungkinkan manipulasi bagian spesifik dari DataFrame alih-alih seluruh DataFrame. 

Fitur

.loc

.iloc

Sintaks

df.loc[row_indexer, column_indexer]

df.iloc[row_indexer, column_indexer]

Metode Pengindeksan

Pengindeksan berbasis label

Pengindeksan berbasis posisi

Digunakan untuk Referensi

Label baris dan kolom (nama)

Indeks numerik baris dan kolom (mulai dari 0)

Seperti yang kita lihat dari tabel, sintaksnya terlihat sangat mirip. Perbedaannya terletak pada bagaimana kita menggunakan argumen row_indexer dan column_indexer. Ini karena kedua metode menawarkan pendekatan berbeda untuk mengindeks data: .loc mengindeks berdasarkan nama label, sedangkan .iloc menggunakan posisi numerik baris dan kolom sebagai argumen.

Mari kita bahas masing-masing metode secara detail, dimulai dengan .loc.

Menggunakan .loc: Seleksi berdasarkan Label

Untuk menggambarkan konsepnya, bayangkan sebuah basis data pelanggan hipotetis yang direpresentasikan oleh DataFrame bernama df, dengan Customer ID sebagai indeks baris:

Customer ID

Name

Country

Region

Age

C123

John Doe

United States

North America

67

C234

Petra Müller

Germany

Europe

51

C345

Ali Khan

Pakistan

Asia

19

C456

Maria Gonzalez

Mexico

North America

26

C567

David Lee

China

Asia

40

Ada empat cara utama untuk memilih baris dengan .loc. Di antaranya:

  • Memilih satu baris
  • Memilih beberapa baris
  • Memilih irisan baris (slice)
  • Seleksi baris bersyarat

Memilih satu baris menggunakan .loc

Untuk memilih satu baris, kita gunakan label baris yang ingin diambil sebagai row_indexer. Maka, sintaksnya seperti ini: df.loc['row_label']. Mari gunakan ini untuk menampilkan semua informasi pelanggan kita, Ali Khan:

df.loc['C345']

C345

 

Name

Ali Khan

Country

Pakistan

Region

Asia

Age

19

Memilih beberapa baris menggunakan .loc

Jika kita ingin memilih beberapa baris yang tidak harus berurutan, kita harus memasukkan daftar label barisnya sebagai argumen row_indexer. Artinya, kita perlu menggunakan bukan satu melainkan dua pasang tanda kurung siku: satu untuk sintaks .loc biasa dan satu untuk daftar label.

Baris df.loc[['row_label_1', 'row_label_2']] akan mengembalikan dua baris DataFrame df yang ditentukan dalam daftar. Misalnya kita ingin mengetahui tidak hanya informasi tentang Ali Khan tetapi juga David Lee:

df.loc[['C345', 'C567']]

Customer ID

Name

Country

Region

Age

C345

Ali Khan

Pakistan

Asia

19

C567

David Lee

China

Asia

40

Memilih irisan baris menggunakan .loc

Kita dapat memilih rentang baris dengan memasukkan label baris pertama dan terakhir dengan titik dua di antaranya: df.loc['row_label_start':'row_label_end']. Kita bisa menampilkan empat baris pertama DataFrame kita seperti ini:

df.loc['C123' : 'C456']

Customer ID

Name

Country

Region

Signup Date

C123

John Doe

United States

North America

67

C234

Petra Müller

Germany

Europe

51

C345

Ali Khan

Pakistan

Asia

19

C456

Maria Gonzalez

Mexico

North America

26

Ada dua hal yang perlu diingat di sini:

  1. Output mencakup baris yang ditentukan di row_label_end. Ini berbeda pada .iloc, yang akan kita bahas nanti.
  2. Kita hanya menggunakan satu pasang tanda kurung siku, meskipun ingin mengambil beberapa baris. Kita tidak menggunakan daftar untuk menentukan berbagai baris, sehingga menggunakan dua tanda kurung siku akan menghasilkan SyntaxError.

Seleksi bersyarat baris menggunakan .loc

Kita juga dapat mengembalikan baris berdasarkan ekspresi bersyarat. Kita dapat memfilter semua baris berdasarkan apakah mereka memenuhi kondisi tertentu atau tidak dan hanya menampilkan yang memenuhi.

Sintaks yang sesuai adalah df.loc[conditional_expression], dengan conditional_expression berupa pernyataan tentang nilai yang diperbolehkan dalam kolom tertentu.

Untuk kolom dengan data non-numerik (seperti Name atau Country), pernyataan hanya dapat menggunakan operator sama atau tidak sama, karena tidak ada urutan antar nilai. Misalnya, kita dapat mengembalikan semua baris pelanggan yang bukan dari Asia:

df.loc[df['Region'] != 'Asia']

Customer ID

Name

Country

Region

Age

C123

John Doe

United States

North America

67

C234

Petra Müller

Germany

Europe

51

C456

Maria Gonzalez

Mexico

North America

26

Memilih satu kolom menggunakan .loc

Untuk memilih kolom, kita perlu menentukan argumen column_indexer, yang diletakkan setelah argumen row_indexer. Jika kita hanya ingin menentukan column_indexer, kita perlu menandai bahwa kita ingin mengembalikan semua baris dan hanya memfilter pada kolom. Mari lihat caranya!

Memilih satu kolom dapat dilakukan dengan menentukan column_indexer menggunakan label kolom yang bersangkutan. Untuk mengambil semua baris, kita perlu menentukan row_indexer dengan titik dua sederhana. Kita mendapatkan sintaks seperti ini: df.loc[:, 'column_name'].

Mari tampilkan Name dari setiap pelanggan:

df.loc[:, 'Name']

Customer ID

Name

C123

John Doe

C234

Petra Müller

C345

Ali Khan

C456

Maria Gonzalez

C567

David Lee

Memilih beberapa kolom menggunakan .loc

Serupa dengan memilih beberapa baris, kita perlu memasukkan daftar label kolom jika ingin mengembalikan beberapa kolom dari sebuah DataFrame yang tidak harus berurutan: df.loc[:, [col_label_1, 'col_label_2']].

Misalkan kita ingin menambahkan Age semua pelanggan ke output terakhir kita, maka akan bekerja seperti ini:

df.loc[:, ['Name', 'Age']]

Customer ID

Name

Age

C123

John Doe

67

C234

Petra Müller

51

C345

Ali Khan

19

C456

Maria Gonzalez

26

C567

David Lee

40

Memilih irisan kolom menggunakan .loc

Menggunakan titik dua di antara label dua kolom akan memilih semua kolom dalam rentang urutan antara kedua kolom tersebut. Ini inklusif terhadap kolom akhir, artinya kolom bernama col_end juga akan dipilih dalam sintaks standar berikut: df.loc[:, 'col_start':'col_end'].

Jika kita tertarik pada Name, Country, dan Region dari pelanggan kita, baris kode kita bisa seperti ini:

df.loc[:, 'Name':'Region']

Customer ID

Name

Country

Region

C123

John Doe

United States

North America

C234

Petra Müller

Germany

Europe

C345

Ali Khan

Pakistan

Asia

C456

Maria Gonzalez

Mexico

North America

C567

David Lee

China

Asia

Seleksi gabungan baris dan kolom menggunakan .loc

Kita juga bisa menentukan row_indexer dan column_indexer sekaligus. Ini bisa digunakan untuk mengambil satu potong informasi, yakni satu sel dari DataFrame. Untuk melakukannya, kita tentukan satu baris dan satu kolom menggunakan sintaks df.loc['row_label', 'column_name'] .

Kasus yang lebih berguna adalah mengembalikan sub-DataFrame yang berfokus tepat pada kumpulan baris dan kolom yang kita minati. Dimungkinkan untuk menentukan kedua indexer sebagai daftar menggunakan tanda kurung siku, atau sebagai irisan menggunakan titik dua, dan bahkan menggabungkannya dengan ekspresi bersyarat untuk seleksi baris.

Berikut contoh untuk mengembalikan Name, Country, dan Region dari setiap pelanggan dengan Age di atas 30:

df.loc[df['Age'] > 30, 'Name':'Region']

Customer ID

Name

Country

Region

C123

John Doe

United States

North America

C234

Petra Müller

Germany

Europe

C567

David Lee

China

Asia

Menggunakan .iloc: Seleksi berdasarkan Posisi Integer

.iloc memilih berdasarkan posisi, bukan label. Ini adalah sintaks standar penggunaan .iloc: df.iloc[row_indexer, column_indexer]. Ada dua hal khusus yang perlu diperhatikan:

  • Penghitungan dimulai dari 0: Baris dan kolom pertama memiliki indeks 0, yang kedua indeks 1, dan seterusnya.
  • Eksklusivitas nilai akhir rentang: Saat menggunakan irisan, baris atau kolom yang ditentukan setelah titik dua tidak disertakan dalam seleksi.

Memilih satu baris menggunakan .iloc

Satu baris dapat dipilih dengan menggunakan bilangan bulat yang merepresentasikan nomor indeks baris sebagai row_indexer. Kita tidak memerlukan tanda kutip karena kita memasukkan bilangan bulat, bukan string label seperti pada .loc. Untuk mengembalikan baris pertama dari DataFrame bernama df, masukkan df.iloc[0].

Pada DataFrame contoh kita, baris kode ini mengembalikan informasi John Doe:

df.iloc[0]

C123

 

Name

John Doe

Country

United States

Region

North America

Age

67

Memilih beberapa baris menggunakan .iloc

Memilih beberapa baris pada .iloc bekerja seperti pada .loc—kita memasukkan integer indeks baris dalam sebuah daftar dengan tanda kurung siku. Sintaksnya seperti ini: df.iloc[[0, 3, 4]].

Output terkait pada tabel pelanggan kita dapat dilihat di bawah:

df.iloc[[0, 3, 4]]

Customer ID

Name

Country

Region

Age

C123

John Doe

United States

North America

67

C456

Maria Gonzalez

Mexico

North America

26

C567

David Lee

China

Asia

40

Memilih irisan baris menggunakan .iloc

Untuk memilih irisan baris, kita gunakan titik dua di antara dua integer indeks baris yang ditentukan. Sekarang, kita harus memperhatikan sifat eksklusif yang disebutkan sebelumnya. 

Kita bisa mengambil baris df.iloc[1:4] sebagai contoh untuk menggambarkan konsep ini. Angka indeks 1 berarti baris kedua, jadi irisan kita dimulai dari sana. Bilangan indeks 4 merepresentasikan baris kelima – tetapi karena .iloc tidak inklusif untuk pemilihan irisan, output kita akan menyertakan semua baris hingga yang terakhir sebelum ini. Oleh karena itu, akan mengembalikan baris kedua, ketiga, dan keempat. 

Mari buktikan bahwa baris tersebut bekerja sebagaimana mestinya:

df.iloc[1:4]

Customer ID

Name

Country

Region

Age

C234

Petra Müller

Germany

Europe

51

C345

Ali Khan

Pakistan

Asia

19

C456

Maria Gonzalez

Mexico

North America

26

Memilih satu kolom menggunakan .iloc

Logika memilih kolom menggunakan .iloc mengikuti apa yang telah kita pelajari sejauh ini. Mari lihat bagaimana cara kerjanya untuk kolom tunggal, banyak kolom, dan irisan kolom.

Sama seperti pada .loc, penting untuk menentukan row_indexer sebelum kita dapat lanjut ke column_indexer. Untuk mengambil nilai kolom ketiga dari df untuk setiap baris, masukkan df.iloc[:, 2] .

Karena Region adalah kolom ketiga di DataFrame kita, kolom tersebut akan diambil sebagai konsekuensi dari baris kode itu:

df.iloc[:, 2]

Customer ID

Region

C123

North America

C234

Europe

C345

Asia

C456

North America

C567

Asia

Memilih beberapa kolom menggunakan .iloc

Untuk memilih beberapa kolom yang tidak harus berurutan, kita kembali dapat memasukkan daftar yang berisi bilangan bulat sebagai column_indexer. Baris df.iloc[:, [0, 3]] mengembalikan kolom pertama dan keempat. 

Dalam kasus kita, informasi yang ditampilkan adalah Name serta Age dari setiap pelanggan:

df.iloc[:, [0, 3]]

Customer ID

Name

Age

C123

John Doe

67

C234

Petra Müller

51

C345

Ali Khan

19

C456

Maria Gonzalez

26

C567

David Lee

40

Memilih irisan kolom menggunakan .iloc

Untuk seleksi irisan menggunakan .iloc, logika column_indexer mengikuti row_indexer. Kolom yang direpresentasikan oleh bilangan bulat setelah titik dua tidak disertakan dalam output. Untuk mengambil kolom kedua dan ketiga, baris kode harus seperti ini: df.iloc[:, 1:3].

Baris di bawah ini mengembalikan semua informasi geografis yang kita miliki tentang pelanggan:

df.iloc[:, 1:3]

Customer ID

Country

Region

C123

United States

North America

C234

Germany

Europe

C345

Pakistan

Asia

C456

Mexico

North America

C567

China

Asia

Seleksi gabungan baris dan kolom menggunakan .iloc

Kita dapat menggabungkan apa yang kita pelajari tentang .iloc untuk memadukan seleksi baris dan kolom. Lagi-lagi, dimungkinkan untuk mengembalikan satu sel atau sub-DataFrame. Untuk mengembalikan satu sel pada perpotongan baris ke-3 dan kolom ke-4, masukkan df.iloc[2, 3].

Sama seperti pada .loc, kita dapat menentukan kedua indexer sebagai daftar menggunakan tanda kurung siku, atau sebagai irisan menggunakan titik dua. Jika kita ingin memilih baris menggunakan ekspresi bersyarat, itu secara teknis juga memungkinkan dengan .iloc, tetapi tidak direkomendasikan. Menggunakan nama label dan .loc biasanya jauh lebih intuitif dan lebih kecil kemungkinannya menimbulkan kesalahan.

Contoh terakhir ini menampilkan Country, Region dan Age untuk baris pertama, kedua, dan kelima di DataFrame kita:

df.iloc[[0,1,4], 1:4]

Customer ID

Country

Region

Age

C123

United States

North America

67

C234

Germany

Europe

51

C567

China

Asia

40

.iloc vs .loc: Kapan Menggunakan yang Mana

Secara umum, ada satu aturan praktis sederhana di mana pilihan metode bergantung pada pengetahuan Anda tentang DataFrame:

  • Gunakan .loc ketika Anda mengetahui label (nama) baris/kolom.
  • Gunakan .iloc ketika Anda mengetahui posisi bilangan bulat baris/kolom.

Beberapa skenario secara alami lebih cocok untuk .loc atau .iloc. Misalnya, mengiterasi baris atau kolom lebih mudah dan lebih intuitif menggunakan bilangan bulat daripada label. Seperti yang sudah disebutkan, memfilter baris berdasarkan kondisi pada nilai kolom lebih kecil kemungkinannya menimbulkan kesalahan jika menggunakan nama label kolom.

Skenario yang Lebih Cocok untuk .loc

Skenario yang Lebih Cocok untuk .iloc

DataFrame Anda memiliki nama indeks/kolom yang bermakna.

Anda mengiterasi baris/kolom berdasarkan posisinya.

Anda perlu memfilter berdasarkan kondisi pada nilai kolom.

Nama indeks/kolom tidak relevan dengan tugas Anda.

KeyError, NameError, dan IndexError dengan .loc dan .iloc

Mari kita lihat kemungkinan masalah. Kesalahan umum saat menggunakan .loc adalah mengalami KeyError. Kesalahan ini terjadi ketika kita mencoba mengakses label baris atau kolom yang tidak ada dalam DataFrame. Untuk menghindarinya, kita harus selalu memastikan label yang kita gunakan akurat dan sesuai dengan label yang ada di DataFrame Anda serta memeriksa kembali kemungkinan salah ketik.

Selain itu, penting untuk selalu menggunakan tanda kutip untuk label yang ditentukan menggunakan .loc. Melupakannya akan menghasilkan NameError.

Sebuah IndexError dapat terjadi saat menggunakan .iloc jika kita menentukan posisi bilangan bulat yang berada di luar rentang valid indeks DataFrame. Ini terjadi ketika indeks yang Anda coba akses tidak ada, baik karena melampaui jumlah baris atau kolom di DataFrame Anda atau karena bernilai negatif. Untuk mencegah kesalahan ini, periksa dimensi DataFrame Anda dan gunakan nilai indeks yang sesuai dalam rentang yang valid.

Kesimpulan

Semoga blog ini bermanfaat dan perbedaan antara .loc dan .iloc kini sudah jelas. Untuk belajar lebih lanjut, berikut beberapa langkah berikut yang bagus:


Tom Farnschläder's photo
Author
Tom Farnschläder
LinkedIn

Tom adalah seorang ilmuwan data dan pendidik teknis. Ia menulis dan mengelola tutorial serta artikel blog ilmu data DataCamp. Sebelumnya, Tom bekerja di bidang ilmu data di Deutsche Telekom.

Topik

Pelajari Pandas dengan kursus-kursus ini!

Kursus

Writing Efficient Code with pandas

4 Hr
21.7K
Learn efficient techniques in pandas to optimize your Python code.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak