Akses Berbasis Label dan Posisi
Ambil elemen dengan .loc (label) dan .iloc (posisi bilangan bulat), lalu pahami perbedaan keduanya
Akses Berbasis Label dan Posisi adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Dua Cara Mengakses Elemen Series
Pandas menyediakan dua accessor utama untuk memilih elemen dari Series: .loc untuk akses berdasarkan label dan .iloc untuk akses berdasarkan posisi bilangan bulat. Memahami kapan harus menggunakan masing-masing accessor sangatlah penting — penggunaan accessor yang keliru pada Series dengan indeks bilangan bulat dapat menghasilkan keluaran yang membingungkan, dan Pandas 2.0 tidak lagi mendukung banyak penggunaan kurung siku langsung yang ambigu.
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s.loc['b']) # 20 -- by label
print(s.iloc[1]) # 20 -- by position.loc: Akses Berdasarkan Label
.loc mengakses elemen berdasarkan label indeks. Anda dapat memberikan satu label (menghasilkan nilai skalar), daftar label (menghasilkan Series), atau irisan label (inklusif di kedua ujungnya, berbeda dari irisan Python). Jika label tidak ada, Pandas akan menghasilkan KeyError. Gunakan .loc ketika label memiliki makna (tanggal, nama, atau ID).
import pandas as pd
s = pd.Series([10, 20, 30, 40, 50],
index=['a', 'b', 'c', 'd', 'e'])
print(s.loc['c']) # 30
print(s.loc[['a', 'c']]) # a:10 c:30
print(s.loc['b':'d']) # b:20 c:30 d:40 -- inclusive.iloc: Akses Berdasarkan Posisi
.iloc mengakses elemen berdasarkan posisi bilangan bulat (berbasis 0) dan sepenuhnya mengabaikan label indeks. Perilakunya seperti pengindeksan daftar Python: posisi negatif dihitung dari akhir, dan irisan mengikuti aturan Python yang mengecualikan batas akhir. Gunakan .iloc ketika Anda memerlukan elemen ke-n, terlepas dari labelnya.
import pandas as pd
s = pd.Series([10, 20, 30, 40, 50],
index=['a', 'b', 'c', 'd', 'e'])
print(s.iloc[2]) # 30 -- third element
print(s.iloc[-1]) # 50 -- last element
print(s.iloc[1:4]) # b:20 c:30 d:40 -- exclusive stopPerbedaan antara .loc dan .iloc
Perbedaan ini paling penting pada Series dengan label bilangan bulat. Jika sebuah Series memiliki label indeks [5, 10, 15], s.loc[5] mengembalikan elemen berlabel 5 (elemen pertama), sedangkan s.iloc[5] menghasilkan IndexError (karena hanya ada 3 elemen). Selalu pilih berdasarkan maksud Anda: “elemen berlabel X” atau “elemen ke-X”.
import pandas as pd
s = pd.Series([100, 200, 300], index=[5, 10, 15])
print(s.loc[10]) # 200 -- element with label 10
print(s.iloc[1]) # 200 -- second element
# s.loc[1] would raise KeyError -- no label 1Memilih Beberapa Label dengan .loc
Berikan daftar kepada .loc untuk memilih beberapa elemen dalam urutan apa pun, bahkan dengan pengulangan. Hasilnya adalah Series baru dengan label yang sama seperti daftar yang Anda berikan. Ini mirip dengan pengindeksan tingkat lanjut di NumPy, tetapi diselaraskan berdasarkan label indeks, bukan posisi. Cara ini umum digunakan untuk mengurutkan ulang atau memilih sebagian kolom dalam pipeline analitis.
import pandas as pd
s = pd.Series({'Jan': 100, 'Feb': 200, 'Mar': 300, 'Apr': 400})
# Select Q1 months in reverse order
print(s.loc[['Mar', 'Feb', 'Jan']])
# Mar 300
# Feb 200
# Jan 100Mengiris Label dengan .loc
Berbeda dari irisan Python, irisan .loc bersifat inklusif di kedua ujungnya. s.loc['b':'d'] mengembalikan elemen dengan label b, c, dan d. Hal ini dapat mengejutkan jika Anda terbiasa dengan aturan Python yang mengecualikan batas akhir. Pastikan label yang menjadi batas irisan benar-benar ada dalam indeks; jika tidak, irisan dapat menghasilkan keluaran yang tidak terduga tanpa peringatan.
import pandas as pd
s = pd.Series(range(5), index=['a', 'b', 'c', 'd', 'e'])
print(s.loc['b':'d'])
# b 1
# c 2
# d 3
# dtype: int64
# Note: 'd' is INCLUDED (inclusive stop)Pengindeksan Boolean dengan .loc
Anda dapat memberikan Series boolean kepada .loc untuk memfilter elemen. Series boolean tersebut harus memiliki indeks yang sama dengan Series target. Ini adalah padanan Pandas untuk penyamaran boolean NumPy dan mendukung kondisi gabungan dengan & dan |. Cara ini juga merupakan metode standar untuk memfilter baris dalam DataFrames.
import pandas as pd
s = pd.Series([3, 7, 2, 9, 1], index=['a', 'b', 'c', 'd', 'e'])
print(s.loc[s > 4])
# b 7
# d 9
# dtype: int64Menetapkan Nilai dengan .loc dan .iloc
.loc dan .iloc dapat digunakan di sisi kiri penugasan untuk mengubah nilai secara langsung. Inilah pola yang benar — penggunaan pengindeksan berantai seperti s['a'] = 99 dapat memicu SettingWithCopyWarning pada DataFrames. Untuk Series, akses label langsung umumnya aman, tetapi .loc lebih jelas dan disarankan.
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
s.loc['b'] = 99
print(s)
# a 10
# b 99
# c 30Akses Kurung Siku pada Series
Notasi kurung siku langsung s['label'] berfungsi untuk akses label dan setara dengan s.loc['label'] pada indeks string. Untuk indeks bilangan bulat, perilakunya ambigu dan diubah dalam Pandas 2.0 — sekarang selalu berarti akses label. Agar kode lebih jelas dan tahan terhadap perubahan mendatang, selalu gunakan .loc atau .iloc secara eksplisit, alih-alih mengandalkan penentuan makna kurung siku.
import pandas as pd
s = pd.Series([10, 20, 30], index=['x', 'y', 'z'])
print(s['y']) # 20 -- label access via brackets
print(s.loc['y']) # 20 -- explicit and preferredMengakses Elemen dari DatetimeIndex
Ketika Series memiliki DatetimeIndex, .loc menerima string tanggal yang tidak lengkap untuk memudahkan pemilihan rentang. s.loc['2023'] mengembalikan semua elemen dari tahun 2023, sedangkan s.loc['2023-01':'2023-06'] mengembalikan paruh pertama tahun 2023. Ini adalah salah satu fitur Pandas yang paling praktis untuk bekerja dengan deret waktu.
import pandas as pd
dates = pd.date_range('2023-01-01', periods=5, freq='ME')
values = pd.Series([10, 20, 30, 40, 50], index=dates)
print(values.loc['2023-03':'2023-05'])
# 2023-03-31 30
# 2023-04-30 40
# 2023-05-31 50at dan iat untuk Akses Satu Elemen yang Cepat
.at[label] dan .iat[position] adalah accessor skalar yang dioptimalkan — lebih cepat daripada .loc dan .iloc saat mengakses satu elemen dalam perulangan yang ketat, karena tidak perlu menanggung beban pengembalian objek Series. Keduanya tidak dapat memilih beberapa elemen. Gunakan saat Anda memerlukan kinerja maksimal untuk pencarian satu elemen yang dilakukan berulang kali.
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s.at['b']) # 20 -- label scalar access
print(s.iat[2]) # 30 -- position scalar accessPemeriksaan Cepat
Uji pemahaman Anda tentang .loc dan .iloc dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini Anda mempelajari: .loc mengakses elemen berdasarkan label indeks dengan batas irisan yang inklusif, .iloc mengakses elemen berdasarkan posisi bilangan bulat dengan batas irisan yang eksklusif seperti pada daftar Python, dan .at serta .iat adalah accessor skalar yang lebih cepat untuk pencarian satu elemen dalam perulangan. Selanjutnya, kita akan membahas operasi terv vektorisasi pada Series dan cara Pandas menangani penyelarasan indeks secara otomatis.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Akses Berbasis Label dan Posisi” gratis?
Ya — teks lengkap “Akses Berbasis Label dan Posisi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Akses Berbasis Label dan Posisi”?
Ambil elemen dengan .loc (label) dan .iloc (posisi bilangan bulat), lalu pahami perbedaan keduanya Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Akses Berbasis Label dan Posisi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membuat Series
- Akses Berbasis Label dan Posisi
- Operasi Vektorisasi pada Series
- Metode Series yang Berguna