Penjelasan sederhana
query() membuat syarat filter bisa dibaca seperti kalimat. Kalau sudah kenal SQL, rasanya seperti menulis bagian WHERE.
Sintaks
df.query('syarat')
| Bagian | Keterangan |
|---|---|
'syarat' | Teks syarat. Kolom ditulis tanpa df[...]; pakai and, or, not, in. Variabel luar dipanggil dengan @nama. |
df adalah nama DataFrame (tabel) yang sedang diolah. Contoh di bawah memakai import pandas as pd dan import numpy as np, yang sudah disiapkan otomatis.
Contoh query()
Data contoh: karyawan (sudah tersedia sebagai DataFrame)
DataFrame karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id |
|---|---|---|---|---|---|---|
| 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NaN |
| 2 | Bunga Lestari | 1 | Jakarta | 9800000 | 2020-07-01 | NaN |
| 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 4 | Dewi Anggraini | 2 | Jakarta | 7500000 | 2022-05-09 | 6 |
| 5 | Eko Saputra | 1 | Jakarta | 6900000 | 2023-01-16 | 2 |
| 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NaN |
| 7 | Gita Permata | 3 | Jakarta | 8200000 | 2023-08-21 | 1 |
| 8 | Hendra Gunawan | NaN | Medan | 5500000 | 2024-04-02 | NaN |
karyawan.query("kota in ['Bandung', 'Surabaya'] and gaji >= 8000000")
Hasil 3 baris × 7 kolom
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id | |
|---|---|---|---|---|---|---|---|
| 0 | 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NaN |
| 2 | 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 5 | 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NaN |
Kolom abu-abu adalah index, yaitu nomor baris asli di tabel. Nomornya tidak urut karena ada baris yang disaring atau diurutkan. Apa itu index?
Tiga karyawan dari Bandung atau Surabaya dengan gaji minimal 8 juta.
Cara kerjanya, langkah demi langkah
- Teks syarat dibaca oleh Pandas.
kota in [...]mengecek apakah kota ada di daftar,gaji >= 8000000mengecek gaji.andmenggabungkan keduanya, lalu baris yang memenuhi diambil.
Dipakai untuk apa di kantor?
- Filter dengan banyak syarat supaya kode tetap rapi.
- Analis yang terbiasa SQL dan ingin sintaks yang mirip.
Kesalahan yang sering terjadi
- Nama kolom yang mengandung spasi harus ditulis dengan backtick:
`nama kolom` > 5. - Lupa tanda
@saat memakai variabel dari luar.
loc[]