pandas ve dask backend'leri kullanımdan kaldırılıyor ve 10.0 sürümünde kaldırılacak
pandas backend'i ile varsayılan DuckDB backend'i arasında işlev farkı yok ve DuckDB çok daha yüksek performans sunuyor
pandas DataFrame hâlâ Ibis içinde veri alışverişi biçimi olarak kullanılabilecek, ancak sorguları pandas kullanarak çalıştırmak desteklenmeyecek
- Mantığın büyük bölümü
dask backend'i için de geçerli; dask harika bir proje ve Ibis dışında kullanılmaya devam edilmeli
Neden pandas? Ve Ibis'in geçmişi
- Ibis'in ilk dönemlerinde yalnızca Impala backend'i vardı
- Daha sonra Postgres backend'i eklendi, ancak kurulumu karmaşıktı; bu yüzden kullanıcılar Ibis'i kolayca deneyemiyordu
- Notebook dışında ek altyapı gerektirmeden Ibis API'sini denemenin bir yoluna ihtiyaç vardı
- O dönemde tek bellek içi DataFrame motoru olan
pandas backend'ini bağlamak en açık çözümdü
Pandas backend'inin zorlukları
pandas o dönemde en iyi seçenekti, ancak Ibis'in veri analizi modeliyle iyi örtüşmüyordu
pandas backend'i diğer backend'lerden temelden farklı ve en fazla özel kodu barındırıyor
pandas özünde eager execution kullanan bir motor, Ibis ise lazy execution modelini kullanıyor
pandas arayüzünü lazy çalışacak şekilde işletmek zor
pandas backend'i diğer backend'lerden daha yavaş ve bunu sağlamak için binlerce satır kod gerekiyor
pandas içindeki NaN ile Ibis'teki NULL temelden farklı kavramlar, ancak bunlara aynı şeymiş gibi davranmak gerekiyor
pandas içinde NaN eksik değeri göstermek için kullanıldı, ancak bu durum diğer backend'lerle uyumluluk sorunları doğuruyor
- NULL eksik değeri, NaN ise sayı olmadığını ifade eder; bunlar temelden farklı kavramlardır
pandasın yeni Arrow tabanlı tipleri büyük bir iyileştirme, ancak hâlâ sorunlar var
Yeni kullanıcılar için kafa karışıklığı yaratıyor
- İnsanlar alışık oldukları şeyi tercih eder
- Ibis'i ilk kez kullanırken hem Ibis'i hem de backend'i seçmek gerekir
- Yeni kullanıcılar sık sık "Ibis yavaş" diye geri bildirim veriyor
- Bunun başlıca nedeni çoğunlukla
pandas backend'ini kullanmış olmaları
- DuckDB veya Polars kullansalardı başlamak çok daha kolay olabilirdi
İşlev eşdeğerliği
pandas backend'ini kaldırmak için en güçlü gerekçe tekrar olması
- DuckDB backend'i
pandas DataFrame'lerini sorunsuz biçimde sorgulayabiliyor, çeşitli UDF türlerini destekliyor ve parquet, CSV, JSON gibi birçok biçimi okuyup yazabiliyor
- DuckDB kurulumu kolay, yerelde çalışıyor, çok hızlı ve Python ekosistemiyle iyi etkileşim kuruyor
GN⁺ özeti
- DuckDB'nin varsayılan backend olarak benimsenmesi çok akıllıca bir karar gibi görünüyor. Kurulumu kolay, yerelde çalışıyor, çok hızlı ve Python ekosistemiyle iyi etkileşim kuruyor. Bu aynı zamanda Ibis'in başlangıçta
pandası backend olarak ekleme nedeniydi
pandasın veri alışverişi formatı olarak kullanılmaya devam edebilmesi, mevcut pandas kullanıcıları için iyi haber. Mevcut kodu tamamen çöpe atmak gerekmiyor
- Ancak sorgu yürütme için
pandasın artık kullanılmaması doğru yönde atılmış bir adım gibi görünüyor. pandasın eager execution modeli, Ibis'in lazy execution modeliyle uyuşmuyor. Bu nedenle pandas backend'i çoğu zaman doğrudan pandas kullanmaktan bile çok daha yavaş oluyor
- Ibis giderek daha fazla backend destekledikçe, belirli bir backend'e uyarlanmış kodun bakımını yapmak da giderek zorlaşacak.
pandas backend'inin kaldırılması kod tabanını daha temiz ve bakımını daha kolay hâle getirecek
- DuckDB backend'ini kullanmak
pandasın tüm işlevlerini ikame edebiliyorsa, pandas backend'ini sürdürmek için bir neden kalmıyor gibi görünüyor. Hatta yeni kullanıcılar için kafa karıştırıcı olabilir
2 yorum
Gerçekte, hâlâ en aşina olduğumuz
pandası çok kullanıyoruz,,Hacker News görüşleri
NaN, 0/0 işleminin sonucudur; yani bir değer vardır ama tam olarak ne olduğu bilinmez
pandas'tan daha iyi birçok hesaplama motoru var
Son birkaç ayda yeni projelerde pandas yerine ibis kullanılmaya başlandı
pandas'ın multi-index özelliği en güçlü yanlarından biri
Polars'ı düşünüp düşünmediğinizi merak ediyorum
pandas, yeni türde sütunlara genişletilebiliyor
Ibis'in değeri, DuckDB kullanabilmesi değil
Ibis hakkında pek bir şey duymadım
pandas'ın kütüphane API'si her zaman sezgisel değil
pandas kullanma sebebi birleşik ekosistemi