.loc memilih data menggunakan nama baris dan kolom (label), sedangkan .iloc menggunakan indeks numerik (posisi). Pelajari cara menggunakan keduanya dengan contoh.
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:
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:
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:
Output mencakup baris yang ditentukan di row_label_end. Ini berbeda pada .iloc, yang akan kita bahas nanti.
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:
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'].
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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 .ilocketika 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:
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
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.
Salah satu hal yang sering membingungkan saat kita belajar Pandas adalah perbedaan antara
.locdan.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
.locmaupun.ilocadalah 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_indexerdancolumn_indexer. Ini karena kedua metode menawarkan pendekatan berbeda untuk mengindeks data:.locmengindeks berdasarkan nama label, sedangkan.ilocmenggunakan 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, denganCustomer IDsebagai 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 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: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.locbiasa dan satu untuk daftar label.Baris
df.loc[['row_label_1', 'row_label_2']]akan mengembalikan dua baris DataFramedfyang ditentukan dalam daftar. Misalnya kita ingin mengetahui tidak hanya informasi tentang Ali Khan tetapi juga David Lee: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: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:
row_label_end. Ini berbeda pada.iloc, yang akan kita bahas nanti.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], denganconditional_expressionberupa pernyataan tentang nilai yang diperbolehkan dalam kolom tertentu.Untuk kolom dengan data non-numerik (seperti
NameatauCountry), 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: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 argumenrow_indexer. Jika kita hanya ingin menentukancolumn_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_indexermenggunakan label kolom yang bersangkutan. Untuk mengambil semua baris, kita perlu menentukanrow_indexerdengan titik dua sederhana. Kita mendapatkan sintaks seperti ini:df.loc[:, 'column_name'].Mari tampilkan
Namedari setiap pelanggan: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
Agesemua pelanggan ke output terakhir kita, maka akan bekerja seperti ini: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_endjuga akan dipilih dalam sintaks standar berikut:df.loc[:, 'col_start':'col_end'].Jika kita tertarik pada
Name,Country, danRegiondari pelanggan kita, baris kode kita bisa seperti ini: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_indexerdancolumn_indexersekaligus. Ini bisa digunakan untuk mengambil satu potong informasi, yakni satu sel dari DataFrame. Untuk melakukannya, kita tentukan satu baris dan satu kolom menggunakan sintaksdf.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, danRegiondari setiap pelanggan denganAgedi atas 30: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
.ilocmemilih berdasarkan posisi, bukan label. Ini adalah sintaks standar penggunaan.iloc:df.iloc[row_indexer, column_indexer]. Ada dua hal khusus yang perlu diperhatikan: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 bernamadf, masukkandf.iloc[0].Pada DataFrame contoh kita, baris kode ini mengembalikan informasi John Doe:
C123
Name
John Doe
Country
United States
Region
North America
Age
67
Memilih beberapa baris menggunakan .iloc
Memilih beberapa baris pada
.ilocbekerja 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:
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.iloctidak 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:
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
.ilocmengikuti 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 menentukanrow_indexersebelum kita dapat lanjut kecolumn_indexer. Untuk mengambil nilai kolom ketiga daridfuntuk setiap baris, masukkandf.iloc[:, 2].Karena
Regionadalah kolom ketiga di DataFrame kita, kolom tersebut akan diambil sebagai konsekuensi dari baris kode itu: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. Barisdf.iloc[:, [0, 3]]mengembalikan kolom pertama dan keempat.Dalam kasus kita, informasi yang ditampilkan adalah
NamesertaAgedari setiap pelanggan: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, logikacolumn_indexermengikutirow_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:
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
.ilocuntuk 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, masukkandf.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.locbiasanya jauh lebih intuitif dan lebih kecil kemungkinannya menimbulkan kesalahan.Contoh terakhir ini menampilkan
Country,RegiondanAgeuntuk baris pertama, kedua, dan kelima di DataFrame kita: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:
.locketika Anda mengetahui label (nama) baris/kolom..ilocketika Anda mengetahui posisi bilangan bulat baris/kolom.Beberapa skenario secara alami lebih cocok untuk
.locatau.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
.locadalah mengalamiKeyError. 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 menghasilkanNameError.Sebuah
IndexErrordapat terjadi saat menggunakan.ilocjika 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
.locdan.ilockini sudah jelas. Untuk belajar lebih lanjut, berikut beberapa langkah berikut yang bagus: