- Backend
pandas dan dask dihentikan dan akan dihapus pada versi 10.0
- Tidak ada perbedaan fitur antara backend
pandas dan backend DuckDB bawaan, sementara DuckDB jauh lebih unggul dalam performa
pandas DataFrame masih bisa digunakan di Ibis sebagai format untuk bertukar data, tetapi menjalankan kueri menggunakan pandas tidak lagi didukung
- Sebagian besar logika yang sama juga berlaku untuk backend
dask, dan dask tetap merupakan proyek yang sangat baik untuk terus digunakan di luar Ibis
Mengapa pandas? Dan sejarah Ibis
- Pada awal Ibis, hanya ada backend Impala
- Backend Postgres kemudian ditambahkan, tetapi instalasinya rumit sehingga pengguna tidak bisa dengan mudah mencoba Ibis
- Dibutuhkan cara untuk menguji API Ibis tanpa infrastruktur tambahan di luar notebook
- Pada saat itu, jawaban yang paling jelas adalah menghubungkan backend
pandas, satu-satunya mesin DataFrame in-memory yang tersedia
Kesulitan pada backend Pandas
pandas adalah pilihan terbaik pada masanya, tetapi tidak cocok dengan model analisis data milik Ibis
- Backend
pandas secara mendasar berbeda dari backend lain dan memiliki kode khusus paling banyak
pandas pada dasarnya adalah mesin eksekusi eager, sedangkan Ibis menggunakan model eksekusi lazy
- Sulit membuat antarmuka
pandas bekerja dengan cara lazy
- Backend
pandas lebih lambat daripada backend lain dan membutuhkan ribuan baris kode untuk mendukungnya
NaN di pandas dan NULL di Ibis adalah konsep yang secara mendasar berbeda, tetapi harus diperlakukan seolah sama
- Di
pandas, NaN digunakan sebagai penanda nilai yang hilang, tetapi hal ini menimbulkan masalah kompatibilitas dengan backend lain
- NULL berarti nilai hilang, sedangkan NaN berarti bukan angka; keduanya adalah konsep yang secara mendasar berbeda
- Tipe baru berbasis Arrow di
pandas merupakan peningkatan besar, tetapi masalahnya masih belum sepenuhnya hilang
Membingungkan pengguna baru
- Orang cenderung memilih hal yang sudah mereka kenal
- Saat pertama kali memakai Ibis, pengguna harus memilih Ibis sekaligus backend-nya
- Pengguna baru sering melaporkan bahwa "Ibis lambat"
- Ini sebagian besar karena mereka menggunakan backend
pandas
- Jika mereka memakai DuckDB atau Polars, kemungkinan besar mereka akan jauh lebih mudah memulai
Kesetaraan fitur
- Alasan paling kuat untuk menghapus backend
pandas adalah karena sifatnya yang redundan
- Backend DuckDB dapat mengueri
pandas DataFrame dengan mulus, mendukung berbagai bentuk UDF, dan bisa membaca maupun menulis berbagai format seperti parquet, CSV, dan JSON
- DuckDB mudah dipasang, berjalan secara lokal, sangat cepat, dan berinteraksi dengan baik dengan ekosistem Python
Ringkasan GN⁺
- Mengadopsi DuckDB sebagai backend default tampak sebagai keputusan yang sangat bijak. Instalasinya mudah, berjalan secara lokal, sangat cepat, dan berinteraksi dengan baik dengan ekosistem Python. Ini juga merupakan alasan Ibis pada awalnya menambahkan
pandas sebagai backend
- Fakta bahwa
pandas masih dapat digunakan sebagai format pertukaran data adalah kabar baik bagi pengguna pandas yang sudah ada. Tidak perlu membuang seluruh kode yang ada
- Namun, tidak lagi menggunakan
pandas untuk mengeksekusi kueri tampak sebagai arah yang tepat. Model eksekusi eager milik pandas tidak cocok dengan model eksekusi lazy milik Ibis. Karena itu, backend pandas sering kali jauh lebih lambat daripada menggunakan pandas secara langsung
- Seiring Ibis mendukung semakin banyak backend, memelihara kode yang disesuaikan untuk backend tertentu akan menjadi semakin sulit. Menghapus backend
pandas akan membuat codebase lebih rapi dan lebih mudah dirawat
- Jika penggunaan backend DuckDB dapat menggantikan seluruh fungsi
pandas, tampaknya tidak ada alasan untuk mempertahankan backend pandas. Sebaliknya, hal itu justru bisa membingungkan pengguna baru
2 komentar
Kenyataannya, kita memang masih sangat sering memakai pandas yang paling familiar,,
Opini Hacker News
NaN adalah hasil dari 0/0, yang berarti nilainya ada tetapi tidak diketahui secara pasti
Nonedi Python berbeda dari NaN dan NULLAda banyak engine komputasi yang lebih baik daripada pandas
Dalam beberapa bulan terakhir, pandas diganti dengan ibis di proyek baru
Fitur multi-index di pandas adalah yang paling kuat
Penasaran apakah Polars sudah dipertimbangkan
pandas dapat diperluas ke tipe kolom baru
Nilai Ibis bukan pada kemampuannya memakai DuckDB
Belum pernah banyak mendengar tentang Ibis
API library pandas tidak selalu intuitif
Alasan menggunakan pandas adalah ekosistemnya yang terintegrasi
python dict, dan memvisualisasikannya dengan plotly