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.
| Aksesor | Basis | Contoh | Hasil |
|---|---|---|---|
seri["Teh"] | Label | stok["Teh"] | Nilai pada label Teh |
.loc | Label | stok.loc["Teh"] | Sama dengan di atas, namun eksplisit |
.iloc | Posisi integer | stok.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.
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 terakhirOutput yang Dihasilkan:
30
30
30
Kopi 12
Susu 8
dtype: int64
8Mari kita telaah kode di atas:
stok["Teh"]: akses dengan label langsung; pandas mencocokkan"Teh"pada index dan mengembalikan nilai30.stok.loc["Teh"]danstok.iloc[1]: kedua baris ini mengembalikan nilai yang sama,30, tetapi lewat alamat yang berbeda;.locmencari label, sedangkan.ilocmenghitung posisi mulai dari 0.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.stok.iloc[-1]: posisi negatif dihitung dari belakang, sehingga-1menghasilkan elemen terakhir, yaitu8.
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.
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:
Kopi 12
Gula 25
dtype: int64Mask 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
.