Python DataFrame kütüphanesi Ibis, Pandas ve Dask backend'lerini kaldırıyor
(ibis-project.org)pandasvedaskbackend'leri kullanımdan kaldırılıyor ve 10.0 sürümünde kaldırılacakpandasbackend'i ile varsayılan DuckDB backend'i arasında işlev farkı yok ve DuckDB çok daha yüksek performans sunuyorpandasDataFrame hâlâ Ibis içinde veri alışverişi biçimi olarak kullanılabilecek, ancak sorgularıpandaskullanarak çalıştırmak desteklenmeyecek- Mantığın büyük bölümü
daskbackend'i için de geçerli;daskharika 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
pandasbackend'ini bağlamak en açık çözümdü
Pandas backend'inin zorlukları
pandaso dönemde en iyi seçenekti, ancak Ibis'in veri analizi modeliyle iyi örtüşmüyordupandasbackend'i diğer backend'lerden temelden farklı ve en fazla özel kodu barındırıyorpandasözünde eager execution kullanan bir motor, Ibis ise lazy execution modelini kullanıyorpandasarayüzünü lazy çalışacak şekilde işletmek zorpandasbackend'i diğer backend'lerden daha yavaş ve bunu sağlamak için binlerce satır kod gerekiyorpandasiçindekiNaNile Ibis'tekiNULLtemelden farklı kavramlar, ancak bunlara aynı şeymiş gibi davranmak gerekiyorpandasiç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
pandasbackend'ini kullanmış olmaları - DuckDB veya Polars kullansalardı başlamak çok daha kolay olabilirdi
İşlev eşdeğerliği
pandasbackend'ini kaldırmak için en güçlü gerekçe tekrar olması- DuckDB backend'i
pandasDataFrame'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, mevcutpandaskullanı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 nedenlepandasbackend'i çoğu zaman doğrudanpandaskullanmaktan 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.
pandasbackend'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,pandasbackend'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