0Pricing
Pandas & NumPy Academy · Pelajaran

Pengindeksan Boolean pada DataFrames

Saring baris dengan menerapkan kondisi boolean pada kolom dan menggabungkan beberapa kondisi menggunakan operator & dan |

Pengindeksan Boolean pada DataFrames adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Apa Itu Pengindeksan Boolean?

Pengindeksan boolean memungkinkan Anda memfilter baris dalam DataFrame dengan menerapkan kondisi yang menghasilkan Series berisi nilai True dan False. Hanya baris yang kondisinya True yang dikembalikan. Ini merupakan salah satu teknik pemilihan yang paling sering digunakan di Pandas karena mudah dibaca dan cepat.

Misalnya, dari DataFrame penjualan, Anda dapat langsung mengambil semua baris yang pendapatannya melebihi 1000 tanpa menulis perulangan.

import pandas as pd

df = pd.DataFrame({
    'product': ['A', 'B', 'C', 'D'],
    'revenue': [500, 1500, 800, 2000]
})

# Boolean condition produces a Series of True/False
mask = df['revenue'] > 1000
print(mask)
# 0    False
# 1     True
# 2    False
# 3     True

Menerapkan Masker Boolean

Setelah memiliki masker boolean, Anda meneruskannya di dalam tanda kurung siku pada DataFrame untuk memilih hanya baris yang cocok. Hasilnya adalah DataFrame baru — data asli tidak pernah diubah. Indeks baris dari data asli dipertahankan, sehingga Anda selalu mengetahui asal setiap baris.

Pola ini — membuat masker, lalu menerapkannya — merupakan idiom standar Pandas untuk memfilter baris.

import pandas as pd

df = pd.DataFrame({
    'product': ['A', 'B', 'C', 'D'],
    'revenue': [500, 1500, 800, 2000]
})

mask = df['revenue'] > 1000
filtered = df[mask]
print(filtered)
#   product  revenue
# 1       B     1500
# 3       D     2000

Kondisi Sebaris Tanpa Variabel Masker

Anda tidak perlu menetapkan Series boolean ke sebuah variabel. Anda dapat menulis kondisi tersebut secara sebaris langsung di dalam tanda kurung siku: df[df['col'] > value]. Gaya satu baris ini sangat umum dalam notebook analisis data karena membuat kode tetap ringkas dan mudah dibaca.

Kedua pendekatan — variabel masker dan sebaris — menghasilkan hasil yang sama. Gunakan variabel jika kondisinya kompleks atau digunakan kembali; gunakan bentuk sebaris untuk filter sederhana yang hanya digunakan sekali.

import pandas as pd

df = pd.DataFrame({
    'city': ['NYC', 'LA', 'Chicago', 'Houston'],
    'population': [8_336_817, 3_979_576, 2_693_976, 2_320_268]
})

# Inline boolean filter
large_cities = df[df['population'] > 3_000_000]
print(large_cities)
#   city  population
# 0  NYC   8336817
# 1   LA   3979576

Menggabungkan Kondisi dengan & (AND)

Untuk mensyaratkan bahwa kedua kondisi bernilai benar, gabungkan keduanya dengan operator & — bukan kata kunci Python and, yang tidak bekerja secara elemen demi elemen pada array. Setiap kondisi harus dibungkus dalam tanda kurung karena & memiliki prioritas operator yang lebih tinggi daripada operator perbandingan.

Hasilnya hanya mempertahankan baris yang setiap subkondisinya bernilai True.

import pandas as pd

df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Carol', 'Dave'],
    'age': [25, 35, 28, 45],
    'salary': [50000, 90000, 70000, 120000]
})

# Both conditions must be true
result = df[(df['age'] > 27) & (df['salary'] > 60000)]
print(result)
#     name  age  salary
# 1    Bob   35   90000
# 2  Carol   28   70000

Menggabungkan Kondisi dengan | (OR)

Gunakan operator | untuk mempertahankan baris yang setidaknya satu kondisinya bernilai benar. Seperti pada &, setiap subkondisi harus berada dalam tanda kurung. Operator | melakukan OR logis secara elemen demi elemen pada array boolean.

Mencampur & dan | sepenuhnya valid — tetapi berhati-hatilah dengan tanda kurung untuk memastikan urutan evaluasi yang benar dan menghindari kesalahan logika yang sulit terlihat.

import pandas as pd

df = pd.DataFrame({
    'product': ['Laptop', 'Mouse', 'Monitor', 'Keyboard'],
    'price': [1200, 25, 300, 80],
    'category': ['Electronics', 'Accessories', 'Electronics', 'Accessories']
})

# Rows where price > 200 OR category is Accessories
result = df[(df['price'] > 200) | (df['category'] == 'Accessories')]
print(result)
#     product  price     category
# 0    Laptop   1200  Electronics
# 1     Mouse     25  Accessories
# 2   Monitor    300  Electronics
# 3  Keyboard     80  Accessories

Meniadakan Kondisi dengan ~

Operator tilde ~ membalik Series boolean — mengubah True menjadi False dan sebaliknya. Gunakan ~ untuk menyatakan logika 'NOT': pertahankan baris yang tidak cocok dengan suatu kondisi. Cara ini lebih rapi daripada menyusun kondisi kebalikan secara manual.

Misalnya, df[~df['status'].isin(['cancelled', 'refunded'])] mempertahankan semua baris kecuali baris dengan kedua status tersebut.

import pandas as pd

df = pd.DataFrame({
    'order_id': [1, 2, 3, 4],
    'status': ['shipped', 'cancelled', 'delivered', 'refunded']
})

# Keep only rows that are NOT cancelled
active = df[~(df['status'] == 'cancelled')]
print(active)
#    order_id     status
# 0         1    shipped
# 2         3  delivered
# 3         4   refunded

Memfilter Nilai String

Pengindeksan boolean juga berfungsi dengan baik pada kolom teks. Anda dapat memfilter kecocokan persis dengan ==, atau menggunakan metode .str seperti .str.startswith(), .str.contains(), atau .str.upper() di dalam kondisi untuk pemfilteran teks yang fleksibel.

Perbandingan string di Pandas peka huruf besar-kecil secara bawaan, sehingga 'NYC' dan 'nyc' diperlakukan sebagai nilai yang berbeda. Normalisasi huruf besar-kecil terlebih dahulu jika diperlukan.

import pandas as pd

df = pd.DataFrame({
    'country': ['USA', 'Germany', 'UK', 'USA', 'France'],
    'sales': [400, 200, 150, 600, 300]
})

# Filter rows where country equals USA
us_sales = df[df['country'] == 'USA']
print(us_sales)
#   country  sales
# 0     USA    400
# 3     USA    600

# Filter rows where country starts with 'G'
g_countries = df[df['country'].str.startswith('G')]
print(g_countries)
#    country  sales
# 1  Germany    200

Memfilter Beberapa Kolom

Analisis kompleks sering kali memerlukan kondisi pada beberapa kolom yang digabungkan dengan & dan |. Pecah kondisi yang sangat panjang menjadi Series boolean bernama agar lebih mudah dibaca — masing-masing berperan sebagai subfilter bernama yang Anda gabungkan di akhir.

Pendekatan ini memperjelas maksud Anda: setiap baris terbaca seperti kalimat yang menjelaskan satu bagian dari logika filter.

import pandas as pd

df = pd.DataFrame({
    'region': ['North', 'South', 'North', 'East'],
    'year': [2022, 2023, 2023, 2022],
    'profit': [5000, -200, 8000, 3000]
})

is_north = df['region'] == 'North'
is_2023 = df['year'] == 2023
is_profitable = df['profit'] > 0

result = df[is_north & is_2023 & is_profitable]
print(result)
#   region  year  profit
# 2  North  2023    8000

Menggunakan np.where untuk Kolom Kondisional

Pengindeksan boolean memfilter baris, tetapi terkadang Anda ingin menambahkan kolom baru berdasarkan suatu kondisi, bukan menghapus baris. np.where(condition, value_if_true, value_if_false) merupakan padanan tervectorisasi dari if/else yang diterapkan secara elemen demi elemen pada sebuah kolom, dan jauh lebih cepat daripada menggunakan apply dengan lambda.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'score': [45, 72, 88, 61, 95]
})

# Create a new column based on a condition
df['grade'] = np.where(df['score'] >= 70, 'Pass', 'Fail')
print(df)
#    score grade
# 0     45  Fail
# 1     72  Pass
# 2     88  Pass
# 3     61  Fail
# 4     95  Pass

Menetapkan Nilai ke Subkumpulan yang Difilter

Anda dapat memperbarui nilai secara langsung untuk baris yang difilter menggunakan .loc[mask, column]. Ini adalah cara yang aman untuk menetapkan nilai pada subkumpulan — penggunaan pengindeksan berantai seperti df[mask]['col'] = value dapat memunculkan SettingWithCopyWarning karena bekerja pada salinan.

Selalu pilih df.loc[mask, 'col'] = value jika Anda ingin mengubah DataFrame asli secara langsung.

import pandas as pd

df = pd.DataFrame({
    'item': ['A', 'B', 'C', 'D'],
    'stock': [0, 5, 0, 12]
})

# Mark out-of-stock items
df.loc[df['stock'] == 0, 'status'] = 'Out of Stock'
df.loc[df['stock'] > 0, 'status'] = 'Available'
print(df)
#   item  stock        status
# 0    A      0  Out of Stock
# 1    B      5     Available
# 2    C      0  Out of Stock
# 3    D     12     Available

Menghitung dan Menjumlahkan Masker

Karena nilai boolean secara internal adalah 1 (True) dan 0 (False), Anda dapat memanggil .sum() pada masker untuk menghitung baris yang cocok, atau .mean() untuk mendapatkan proporsi baris yang cocok. Penghitungan cepat ini membantu Anda memverifikasi logika filter sebelum menerapkannya untuk memilih baris.

import pandas as pd

df = pd.DataFrame({'value': [10, 55, 30, 80, 20, 70]})

mask = df['value'] > 40
print('Count of rows > 40:', mask.sum())      # 3
print('Fraction > 40:', mask.mean().round(2)) # 0.5

# Now apply
print(df[mask])
#    value
# 1     55
# 3     80
# 5     70

Pemeriksaan Cepat

Uji pemahaman Anda tentang pengindeksan boolean pada DataFrames.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa: masker boolean memfilter baris dengan menerapkan kondisi pada sebuah kolom, operator & dan | menggabungkan beberapa kondisi (bukan and/or Python), dan ~ membalikkan masker boolean untuk logika NOT. Gunakan df.loc[mask, col] = value untuk menetapkan nilai dengan aman pada baris yang difilter. Selanjutnya, kita akan mempelajari metode query() untuk menulis filter sebagai string yang mudah dibaca.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pengindeksan Boolean pada DataFrames” gratis?

Ya — teks lengkap “Pengindeksan Boolean pada DataFrames” 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 “Pengindeksan Boolean pada DataFrames”?

Saring baris dengan menerapkan kondisi boolean pada kolom dan menggabungkan beberapa kondisi menggunakan operator & dan | 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 1 dari 4.

Berapa lama pelajaran “Pengindeksan Boolean pada DataFrames” 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

  1. Pengindeksan Boolean pada DataFrames
  2. Metode query()
  3. Penyaring isin() dan between()
  4. Memilih Kolom Berdasarkan Pola
← Kembali ke Pandas & NumPy Academy