Penyaring isin() dan between()
Pilih baris yang nilai kolomnya terdapat dalam sebuah daftar dengan isin() atau berada dalam rentang numerik dengan between()
Penyaring isin() dan between() adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Gambaran Umum Metode isin()
isin() memeriksa apakah setiap elemen Series terdapat dalam daftar (atau himpunan) nilai tertentu. Metode ini mengembalikan Series boolean yang dapat langsung digunakan untuk memfilter baris. Cara ini lebih ringkas dan sering kali lebih cepat daripada merangkai beberapa perbandingan == dengan |.
Misalnya, alih-alih menggunakan (df['country'] == 'USA') | (df['country'] == 'UK'), Anda dapat menulis df['country'].isin(['USA', 'UK']).
import pandas as pd
df = pd.DataFrame({
'country': ['USA', 'Germany', 'UK', 'France', 'USA'],
'sales': [400, 200, 150, 300, 600]
})
# Check membership
mask = df['country'].isin(['USA', 'UK'])
print(mask.tolist()) # [True, False, True, False, True]
result = df[mask]
print(result)
# country sales
# 0 USA 400
# 2 UK 150
# 4 USA 600isin() dengan Set untuk Kecepatan
Anda dapat meneruskan set Python, bukan daftar, ke isin(). Pencarian keanggotaan dalam set memiliki kompleksitas O(1) — prosesnya tidak menjadi lebih lambat ketika daftar bertambah panjang. Hal ini penting ketika daftar nilai yang diizinkan berisi ribuan entri, sehingga isin() berbasis set jauh lebih cepat daripada isin() berbasis daftar.
import pandas as pd
df = pd.DataFrame({
'sku': ['A001', 'B002', 'A003', 'C004', 'B005'],
'qty': [10, 5, 3, 8, 12]
})
# Use a set for fast membership check
allowed_skus = {'A001', 'A003', 'B005'}
result = df[df['sku'].isin(allowed_skus)]
print(result)
# sku qty
# 0 A001 10
# 2 A003 3
# 4 B005 12Meniadakan isin() dengan ~
Gabungkan isin() dengan operator ~ untuk memfilter baris yang kolomnya tidak berisi nilai yang ditentukan. Ini adalah cara paling rapi untuk mengecualikan daftar nilai tertentu, dan jauh lebih mudah dibaca daripada membuat rangkaian perbandingan !=.
import pandas as pd
df = pd.DataFrame({
'status': ['active', 'cancelled', 'shipped', 'refunded', 'active'],
'amount': [100, 200, 300, 150, 500]
})
bad_statuses = ['cancelled', 'refunded']
# Keep all rows NOT in the excluded list
result = df[~df['status'].isin(bad_statuses)]
print(result)
# status amount
# 0 active 100
# 2 shipped 300
# 4 active 500isin() dengan Kolom DataFrame sebagai Daftar
Trik yang sangat bermanfaat adalah meneruskan nilai dari kolom DataFrame lain ke isin(). Cara ini setara dengan semi-join SQL: pertahankan baris di df1 yang kuncinya muncul di df2. Berbeda dari penggabungan penuh, cara ini tidak menggandakan baris atau menambahkan kolom ekstra — hanya melakukan pemfilteran.
import pandas as pd
orders = pd.DataFrame({
'order_id': [1, 2, 3, 4, 5],
'revenue': [100, 200, 300, 400, 500]
})
vip_orders = pd.DataFrame({'order_id': [2, 4]})
# Keep orders whose ID appears in vip_orders
result = orders[orders['order_id'].isin(vip_orders['order_id'])]
print(result)
# order_id revenue
# 1 2 200
# 3 4 400Gambaran Umum Metode between()
between(left, right) mengembalikan Series boolean yang bernilai True ketika nilainya berada dalam rentang tertutup [left, right] (secara bawaan, termasuk kedua batas). Metode ini menggantikan kondisi dua sisi seperti (df['age'] >= 18) & (df['age'] <= 65) dengan satu pemanggilan yang mudah dibaca.
Parameter inclusive mengatur penyertaan batas: 'both' (bawaan), 'left', 'right', atau 'neither'.
import pandas as pd
df = pd.DataFrame({
'age': [15, 22, 35, 67, 45, 8]
})
# Select working-age population
result = df[df['age'].between(18, 65)]
print(result)
# age
# 1 22
# 2 35
# 4 45between() dengan Parameter inclusive
Secara bawaan, kedua titik ujung disertakan dalam rentang. Pengaturan inclusive='left' mengecualikan batas kanan (berguna untuk interval setengah terbuka seperti kelompok waktu), inclusive='right' mengecualikan batas kiri, sedangkan inclusive='neither' mengecualikan kedua titik ujung untuk interval terbuka yang ketat.
import pandas as pd
df = pd.DataFrame({'score': [0, 50, 100, 75, 50]})
# Include only scores strictly between 50 and 100
strict = df[df['score'].between(50, 100, inclusive='neither')]
print(strict)
# score
# 3 75
# Include 50 but not 100
left_closed = df[df['score'].between(50, 100, inclusive='left')]
print(left_closed)
# score
# 1 50
# 3 75
# 4 50between() pada Kolom Tanggal
between() juga dapat digunakan pada kolom datetime. Teruskan string tanggal atau objek Timestamp sebagai batas, lalu Pandas akan melakukan perbandingan pada nilai datetime yang mendasarinya. Ini adalah cara yang rapi untuk mengambil irisan jendela waktu tanpa mengubah tanggal menjadi bilangan bulat.
import pandas as pd
df = pd.DataFrame({
'date': pd.to_datetime(['2024-01-01', '2024-06-15', '2024-11-20', '2025-03-01']),
'value': [10, 20, 30, 40]
})
# Filter rows in the year 2024
result = df[df['date'].between('2024-01-01', '2024-12-31')]
print(result)
# date value
# 0 2024-01-01 10
# 1 2024-06-15 20
# 2 2024-11-20 30Menggabungkan isin() dan between()
Anda dapat menggabungkan isin() dan between() dalam ekspresi boolean yang sama menggunakan & dan |. Cara ini menghasilkan filter yang ringkas dan mudah dibaca, yang jika tidak demikian akan memerlukan banyak kondisi bertingkat. Selalu apit setiap pemanggilan dengan tanda kurung saat menggabungkannya.
import pandas as pd
df = pd.DataFrame({
'region': ['North', 'South', 'East', 'North', 'West'],
'revenue': [100, 500, 200, 300, 400]
})
# Rows in North or South regions AND revenue between 200 and 400
result = df[
df['region'].isin(['North', 'South']) &
df['revenue'].between(200, 400)
]
print(result)
# region revenue
# 3 North 300
# 1 South 500 <- actually excluded (500 > 400)
# 3 North 300isin() pada Beberapa Kolom dengan Any
Jika Anda ingin memeriksa apakah salah satu dari beberapa kolom berisi nilai dari suatu daftar, Anda dapat memanggil isin() pada seluruh DataFrame dan menggunakan .any(axis=1) untuk meringkas hasil berdasarkan baris. Cara ini berguna untuk mencari di beberapa kolom tag atau kategori secara bersamaan.
import pandas as pd
df = pd.DataFrame({
'tag1': ['python', 'java', 'sql'],
'tag2': ['sql', 'python', 'go'],
'topic': ['Database', 'Backend', 'Infra']
})
target_langs = ['python', 'sql']
# Check if either tag column matches
mask = df[['tag1', 'tag2']].isin(target_langs).any(axis=1)
result = df[mask]
print(result)
# tag1 tag2 topic
# 0 python sql Database
# 1 java python Backend
# 2 sql go InfraKiat Performa: isin() vs Beberapa ==
Untuk daftar kecil berisi 2–3 nilai, perbedaan antara isin() dan kondisi == yang dirangkai dapat diabaikan. Namun, untuk daftar besar (ratusan nilai), isin() jauh lebih cepat karena secara internal mengubah daftar menjadi hash set dan melakukan pencarian O(1) untuk setiap elemen, bukan perbandingan berurutan.
Selalu utamakan isin() daripada rangkaian panjang kondisi | agar kode lebih rapi dan performanya lebih baik.
import pandas as pd
import numpy as np
# 1 million row DataFrame
df = pd.DataFrame({'id': np.random.randint(0, 10000, size=1_000_000)})
allowed = list(range(0, 500)) # 500 allowed IDs
# isin() is the right approach here — fast hash lookup
result = df[df['id'].isin(allowed)]
print(result.shape) # around (50000, 1)Filter Dunia Nyata: Katalog Produk
Berikut contoh realistis yang menggabungkan isin() untuk memfilter kategori dan between() untuk memfilter rentang harga — pola umum dalam analitik perdagangan elektronik. Kedua filter tersebut secara bersama-sama memilih subset produk yang tepat untuk promosi yang ditargetkan.
import pandas as pd
products = pd.DataFrame({
'name': ['Laptop', 'Mouse', 'Monitor', 'Keyboard', 'Webcam'],
'category': ['Computing', 'Accessories', 'Displays', 'Accessories', 'Peripherals'],
'price': [1200, 25, 300, 80, 150]
})
# Products in Accessories or Peripherals, priced 50-200
eligible = products[
products['category'].isin(['Accessories', 'Peripherals']) &
products['price'].between(50, 200)
]
print(eligible)
# name category price
# 3 Keyboard Accessories 80
# 4 Webcam Peripherals 150Pemeriksaan Singkat
Uji pemahaman Anda tentang filter isin() dan between().
Ringkasan Pelajaran
Dalam pelajaran ini, Anda telah mempelajari bahwa: isin() memeriksa keanggotaan dalam set dan lebih cepat daripada merangkai beberapa kondisi ==, ~isin() mengecualikan daftar nilai, dan between() memfilter rentang tertutup dengan parameter inclusive opsional. Kedua metode tersebut dapat digunakan pada kolom numerik, string, dan datetime. Selanjutnya, kita akan mempelajari cara memilih kolom DataFrame yang cocok dengan pola nama.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penyaring isin() dan between()” gratis?
Ya — teks lengkap “Penyaring isin() dan between()” 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 “Penyaring isin() dan between()”?
Pilih baris yang nilai kolomnya terdapat dalam sebuah daftar dengan isin() atau berada dalam rentang numerik dengan between() 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 3 dari 4.
Berapa lama pelajaran “Penyaring isin() dan between()” 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
- Pengindeksan Boolean pada DataFrames
- Metode query()
- Penyaring isin() dan between()
- Memilih Kolom Berdasarkan Pola