LOC vs ILOC di Panda: Perbedaan Antara LOC dan ILOC di Panda

Diterbitkan: 2020-08-01

Daftar isi

Loc dan iloc di Pandas

Penyebab umum kebingungan di antara pengembang Python baru adalah loc vs. iloc. Mereka berdua tampak sangat mirip dan melakukan tugas yang serupa. Jadi ini bisa membingungkan setiap siswa.

Jika Anda ingin mengetahui perbedaan antara iloc dan loc, Anda telah datang ke tempat yang tepat, karena dalam artikel ini, kami akan membahas topik ini secara rinci. Anda akan mengetahui apa perbedaan utama antara fungsi-fungsi ini dan kemudian melihatnya beraksi untuk memahami konsep dengan lebih baik. Lihat kursus ilmu data kami untuk mempelajari lebih lanjut tentang Panda.

Mari kita mulai.

Perbedaan antara loc dan iloc

1. iloc dengan Python

Anda dapat menggunakan iloc dengan Python untuk seleksi. Ini berbasis lokasi bilangan bulat dan membantu Anda memilih berdasarkan posisi. Jadi, jika Anda ingin mencari baris dengan indeks 5, iloc akan menunjukkan baris kelima dari bingkai data terlepas dari nama atau labelnya.

Berikut ini contoh iloc dengan Python:

>>> mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},

… {'a': 100, 'b': 200, 'c': 300, 'd': 400},

… {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]

>>> df = pd.DataFrame(mydict)

>>> df

abcd

0 1 2 3 4

1 100 200 300 400

2 1000 2000 3000 4000

Kami akan mengindeks baris dengan integer skalar. dengan menggunakan fungsi iloc untuk kerangka data di atas:

>>> ketik(df.iloc[0])

<kelas 'pandas.core.series.Series'>

>>> df.iloc[0]

sebuah 1

b 2

c 3

h 4

Nama: 0, dtype: int64

2. lokasi di Pandas

Anda dapat menggunakan loc di Pandas untuk mengakses beberapa baris dan kolom dengan menggunakan label; namun, Anda juga dapat menggunakannya dengan array boolean.

Jika Anda menggunakan loc untuk menemukan baris dengan indeks 5, Anda tidak akan mendapatkan baris kelima dengannya. Sebagai gantinya, Anda hanya akan mendapatkan baris yang memiliki nama '5'.

Berikut adalah contoh loc di Pandas:

>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],

… index=['cobra', 'viper', 'sidewinder'],

… kolom=['kecepatan_maks', 'perisai'])

>>> df

perisai max_speed

ular kobra 1 2

ular berbisa 4 5

kaca samping 7 8

Di atas adalah tabel dari mana kita akan mengekstrak baris:

>>> df.loc['viper']

max_speed 4

perisai 5

Nama: viper, dtype: int64

Contoh Detail untuk loc vs iloc

Meskipun kita menggunakan kedua fungsi ini untuk seleksi, akan lebih baik jika kita membahas contoh rinci untuk memahami perbedaannya.

Dalam Contoh kami, kami akan menggunakan kumpulan data pelanggan telco, yang tersedia di kaggle. Kami akan menambahkannya ke bingkai data:

df = pd.read_csv(“Projects/churn_prediction/Telco-Customer-Churn.csv”)

df.head()

pengenal jenis kelamin sr.warga negara Mitra tanggungan masa jabatan Telepon Banyak Garis Internet Keamanan
0 7590-VHVEG Perempuan 0 Ya Tidak 1 Tidak No Telepon DSL Tidak
1 5575-GNVDE Pria 0 Tidak Tidak 34 Ya Tidak DSL Ya
2 3668-QPYBK Pria 0 Tidak Tidak 2 Ya Tidak DSL Ya

Dataset ini memiliki 21 kolom; kami hanya menunjukkan beberapa untuk tujuan demonstrasi. Seperti yang telah kita bahas, kita menggunakan loc untuk memilih data berdasarkan label. Di sini, nama kolom adalah label kolomnya, seperti gender, tenurial, OnlineSecurity; mereka semua adalah nama kolom serta label.

Karena kami belum menetapkan indeks tertentu, panda akan membuat indeks bilangan bulat untuk baris secara default. Label baris adalah bilangan bulat, yang dimulai dari 0 dan naik. Dalam contoh ini, kita akan melihat bagaimana loc dan iloc berperilaku berbeda.

  • Pilih baris “1” dan kolom “Partner”

df.loc[1, 'Mitra']

Keluaran: 'Tidak'

Ini menunjukkan nilai yang ada di kolom 'Mitra' dari baris '1'.

  • Pilih label baris '4' dan kolom 'customerID' dan 'gender'

df.loc[:4, ['customerID', 'gender']]

ID Pelanggan

jenis kelamin

0

7590-VHVEG

Perempuan

1

5575-GNVDE

Pria

2

3668-QPYBK

Pria

3

7795-CFOCW

Pria

4

9237-HQITU

Perempuan

  • Pilih label baris kolom "1", "2", "3" dan "Tergantung"

df.loc[[1,2,3], 'Ketergantungan']

1 Tidak

2 Tidak

3 Tidak

Nama: Tanggungan, dtype: objek

Kali ini, kita akan memfilter dataframe dan menerapkan iloc atau loc:

  • Pilih label baris ke kolom “10” dan “Layanan Telepon” dan “Layanan Internet” dari pelanggan yang memiliki Mitra (Mitra harus 'ya')

df [df.Mitra == 'Ya'].loc:10, ['Layanan Telepon', 'Layanan Internet']]

Dalam kasus di atas, kami menerapkan filter ke database tetapi tidak mengubah indeks sehingga output kami telah menghilangkan beberapa label baris yang diperlukan filter kami. Jadi, dengan menggunakan loc[:10] di sini, kami memilih baris yang memiliki label hingga “10”.

Sebaliknya, jika kita menggunakan iloc di sini dan menerapkan filter, kita akan mendapatkan 10 baris saat iloc memilih berdasarkan posisi terlepas dari labelnya. Inilah hasil yang akan kita dapatkan jika kita menerapkan iloc[:10]:

df[df.Partner == 'Ya'].iloc[:10, [6,8]]

Layanan Telepon Pelayanan internet
0 Tidak DSL
8 Ya Serat optik
10 Ya DSL
12 Ya Serat optik
15 Ya Serat optik
18 Ya DSL
21 Ya Tidak
23 Ya DSL
24 Ya DSL
26 Ya Serat optik

Anda pasti memperhatikan bahwa kami harus mengubah metode kami untuk memilih kolom.

Baca: Tutorial Panda Python

  • Pilih 5 kolom pertama dan 5 baris pertama dengan iloc

df.iloc[:4, :4]

ID Pelanggan jenis kelamin SeniorCitizen Mitra
0 7590-VHVEG Perempuan 0 Ya
1 5575-GNVDE Pria 0 Tidak
2 3668-QPYBK Pria 0 Tidak
3 7795-CFOCW Pria 0 Tidak

Kita dapat menggunakan iloc untuk memilih posisi dari akhir. Untuk itu, kita hanya perlu menggunakan bilangan bulat negatif (-1, -2, dll.) dan mulai dengan bilangan tersebut.

  • Pilih 5 kolom terakhir dan 5 baris terakhir

df.iloc[-5:, -5:]

Penagihan Tanpa Kertas Cara Pembayaran Biaya Bulanan TotalBiaya Mengocok
7038 Ya Cek yang dikirim melalui pos 84.80 1990,5 Tidak
7039 Ya Kartu kredit 103.20 7362.9 Tidak
7040 Ya cek elektronik 29.60 346.45 Tidak
7041 Ya Cek terkirim 74.40 306.6 Ya
7042 Ya Transfer Bank 105,65 6844.5 Tidak

Anda dapat menggunakan fungsi lambda dengan iloc juga. (Fungsi lambda adalah fungsi anonim kecil di Python yang dapat memiliki satu ekspresi tetapi sejumlah argumen)

  • Pilih setiap baris ketiga hingga baris ke-15 dan hanya tampilkan kolom “layanan internet” dan “Mitra”

df.iloc[ lambda x: (x.index x 3 == 0) & (x.index <= 150]['Partner', 'InternetService' ]]

Mitra Pelayanan internet
0 Ya DSL
3 Tidak DSL
6 Tidak Serat optik
9 Tidak DSL
12 Ya Serat optik
15 Ya Serat optik

Kami juga dapat memilih label atau posisi yang ada di antaranya.

  • Pilih posisi kolom antara 4 dan 6, dan posisi baris antara 20 dan 25

df.iloc[20:25, 4:6]

tanggungan masa jabatan
20 Tidak 1
21 Tidak 12
22 Tidak 1
23 Tidak 58
24 Tidak 49

Sekarang, jika Anda mencoba memberikan label ke iloc, Pandas akan menampilkan pesan kesalahan berikut:

ValueError: Pengindeksan berbasis lokasi hanya dapat memiliki [bilangan bulat, irisan bilangan bulat (titik MULAI TERMASUK, titik AKHIR DIKECUALIKAN), tipe seperti daftar bilangan bulat, larik boolean]

Anda akan mendapatkan kesalahan serupa jika Anda meneruskan posisi ke loc.

Baca Juga: Pertanyaan Wawancara Panda

Pelajari Lebih Lanjut Tentang Python

Seorang siswa harus mengajukan pertanyaan dan menemukan jawabannya. Kami berharap artikel ini akan menjawab pertanyaan Anda tentang loc di Pandas (atau iloc di Python). Akan lebih baik jika Anda mencoba sendiri fungsi-fungsi ini pada kumpulan data yang berbeda untuk memahami cara kerjanya.

Jika Anda ingin mempelajari lebih lanjut tentang Python, Panda, dan topik yang relevan, Anda harus mengunjungi blog kami. Pakar kami menambahkan beberapa sumber daya terperinci di sana.

Jika Anda penasaran untuk belajar tentang ilmu data, lihat Program PG Eksekutif IIIT-B & upGrad dalam Ilmu Data yang dibuat untuk para profesional yang bekerja dan menawarkan 10+ studi kasus & proyek, lokakarya praktis, bimbingan dengan pakar industri, 1 -on-1 dengan mentor industri, 400+ jam pembelajaran dan bantuan pekerjaan dengan perusahaan-perusahaan top.

Bagaimana kita bisa menambahkan baris Pandas DataFrame?

Untuk menyisipkan baris dalam DataFrame, kita dapat menggunakan perintah loc, iloc, dan ix.

1. loc sebagian besar digunakan untuk label indeks kami. Ini dapat dipahami seperti ketika kita memasukkan di loc 4, yang menunjukkan bahwa kita sedang mencari entri DataFrame dengan indeks 4.
2. Iloc kebanyakan digunakan untuk mencari lokasi di index. Seolah-olah kita memasukkan iloc 4, yang menunjukkan bahwa kita sedang mencari entri DataFrame yang ada di indeks 4.
3. Kasus ix rumit karena kita meneruskan label ke ix jika indeksnya berbasis bilangan bulat. Angka ix 4 menunjukkan bahwa kami sedang mencari DataFrame untuk nilai dengan indeks 4.

Apa itu pengindeksan ulang dalam konteks Pandas dengan Python?

Label baris dan kolom DataFrame diubah saat kami mengindeks ulang. Istilah 'reindex' mengacu pada proses menyelaraskan data ke satu set label tertentu di sepanjang sumbu tunggal. Di Pandas, pengindeksan ulang dapat digunakan untuk mengubah indeks baris dan kolom DataFrame. Banyak struktur data indeks yang terhubung dengan banyak seri panda atau panda DataFrame dapat digunakan dengan indeks.

Apa saja operasi data di Pandas?

Ada beberapa operasi data penting untuk DataFrame di Pandas, yaitu sebagai berikut:

1. Pemilihan baris dan kolom - Dengan melewatkan nama baris dan kolom, kita dapat memilih baris dan kolom mana saja di DataFrame. Itu menjadi satu dimensi dan dianggap sebagai rangkaian saat Anda mengambilnya dari DataFrame.
2. Penyaringan Data - Dengan menggunakan beberapa ekspresi boolean di DataFrame, kita dapat memfilter data.
3. Nilai Null - Bila tidak ada data yang diberikan ke item, mereka menerima nilai Null. Tidak boleh ada nilai di kolom yang berbeda, yang umumnya direpresentasikan sebagai NaN.