Setelah Series beralamat dengan label, langkah berikutnya adalah mengambil isinya: satu elemen untuk diperiksa, atau beberapa elemen untuk dianalisis. Pandas menyediakan dua sistem akses yang berdampingan: akses berbasis label dan akses berbasis posisi integer. Keduanya menjawab pertanyaan yang berbeda, yaitu “nilai milik label apa” dan “nilai pada urutan ke berapa”. Chapter ini membahas kedua sistem tersebut, termasuk akses beberapa elemen sekaligus dan penyaringan awal dengan mask boolean.

Dua Sistem Alamat: Label dan Posisi #

Aksesor .loc bekerja berbasis label, sedangkan .iloc bekerja berbasis posisi integer. Keduanya ditulis sebagai atribut lalu diindeks dengan tanda kurung siku, misalnya seri.loc["Teh"] atau seri.iloc[1]. Tanda kurung siku tunggal seperti seri["Teh"] juga berfungsi dan umum dijumpai, tetapi aksesor eksplisit membuat maksud kode tidak perlu ditebak.

AksesorBasisContohHasil
seri["Teh"]Labelstok["Teh"]Nilai pada label Teh
.locLabelstok.loc["Teh"]Sama dengan di atas, namun eksplisit
.ilocPosisi integerstok.iloc[1]Nilai pada posisi ke-1, yaitu urutan kedua

Mengakses Satu dan Beberapa Elemen #

Skrip berikut memakai satu Series stok untuk menunjukkan tiga cara mengambil satu elemen, lalu cara mengambil beberapa elemen sekaligus.

python
import pandas as pd

stok = pd.Series(
    [12, 30, 25, 8],
    index=["Kopi", "Teh", "Gula", "Susu"],
)

print(stok["Teh"])         # akses dengan label
print(stok.loc["Teh"])     # eksplisit berbasis label
print(stok.iloc[1])        # eksplisit berbasis posisi
print()

print(stok.loc[["Kopi", "Susu"]])   # beberapa label sekaligus
print()

print(stok.iloc[-1])       # posisi terakhir

Output yang Dihasilkan:

text
30
30
30

Kopi    12
Susu     8
dtype: int64

8

Mari kita telaah kode di atas:

  1. stok["Teh"]: akses dengan label langsung; pandas mencocokkan "Teh" pada index dan mengembalikan nilai 30.
  2. stok.loc["Teh"] dan stok.iloc[1]: kedua baris ini mengembalikan nilai yang sama, 30, tetapi lewat alamat yang berbeda; .loc mencari label, sedangkan .iloc menghitung posisi mulai dari 0.
  3. stok.loc[["Kopi", "Susu"]]: menyertakan list label mengembalikan Series baru berisi elemen yang diminta; urutan hasil mengikuti urutan list yang kita berikan, bukan urutan index aslinya.
  4. stok.iloc[-1]: posisi negatif dihitung dari belakang, sehingga -1 menghasilkan elemen terakhir, yaitu 8.

Menyaring dengan Mask Boolean #

Selain label dan posisi, pandas menerima daftar True/False sepanjang Series yang disebut mask boolean. Hanya posisi bertanda True yang lolos, seperti pada contoh berikut.

python
import pandas as pd

stok = pd.Series(
    [12, 30, 25, 8],
    index=["Kopi", "Teh", "Gula", "Susu"],
)

mask = [True, False, True, False]

print(stok[mask])

Output yang Dihasilkan:

text
Kopi    12
Gula    25
dtype: int64

Mask pada skrip di atas ditulis manual agar kita fokus pada mekanismenya: posisi pertama dan ketiga bertanda True, sehingga Kopi dan Gula yang muncul. Dalam pekerjaan nyata, mask jarang diketik manual; biasanya mask dihasilkan dari operasi perbandingan yang kita bahas pada chapter “Operasi pada Series”. Mekanisme pentingnya sudah terlihat di sini: panjang mask harus sama dengan panjang Series, dan hasilnya berupa Series baru, bukan perubahan pada Series asal.

Kemampuan mengakses elemen per label maupun per posisi menjadi fondasi untuk teknik yang lebih luas: mengambil rentang data sekaligus. Chapter berikutnya, “Slicing Series”, membahas pemotongan rentang beserta perbedaan aturan batas antara .loc dan .iloc. Untuk rujukan resmi, bacalah pandas.Series.loc , pandas.Series.iloc , dan User Guide bagian indexing .