8 puan yazan GN⁺ 2024-08-30 | 2 yorum | WhatsApp'ta paylaş
  • 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

 
yangeok 2024-09-03

Gerçekte, hâlâ en aşina olduğumuz pandası çok kullanıyoruz,,

 
GN⁺ 2024-08-30
Hacker News görüşleri
  • NaN, 0/0 işleminin sonucudur; yani bir değer vardır ama tam olarak ne olduğu bilinmez

    • NULL ise belirli bir konumdaki değerin bilinmediği anlamına gelir
    • NaN ile NULL'un uygulaması farklıdır, ancak tamamen ilgisiz de değildir
    • Python'daki None, NaN ve NULL'dan farklıdır
  • pandas'tan daha iyi birçok hesaplama motoru var

    • Mevcut kod tabanı ve üçüncü taraf entegrasyonlar nedeniyle pandas kullanılmaya devam ediliyor
    • Küçük veri işleri için pandas fazlasıyla yeterli
  • Son birkaç ayda yeni projelerde pandas yerine ibis kullanılmaya başlandı

    • ibis'in söz dizimi pandas'tan daha esnek
    • İşlem zincirleme, kod parçacıklarını daha taşınabilir hale getiriyor
    • DuckDB backend'i çok hızlı
    • Topluluk çok aktif ve yardımsever
    • ibis iş arkadaşlarına tavsiye ediliyor
  • pandas'ın multi-index özelliği en güçlü yanlarından biri

    • Sütunlarda da kullanılabiliyor
    • Yeni araçların bu özelliği nasıl ele alacağından emin değilim
  • Polars'ı düşünüp düşünmediğinizi merak ediyorum

    • Grupta pandas sevilmediği için standart olarak Polars kullanılıyor
  • pandas, yeni türde sütunlara genişletilebiliyor

    • Polars'ın bunu destekleyip desteklemediğinden emin değilim
  • Ibis'in değeri, DuckDB kullanabilmesi değil

    • Yeni araçlar çıksa bile söz dizimi çalışmaya devam ediyor
  • Ibis hakkında pek bir şey duymadım

    • pandas'tan uzaklaşırsam Ibis'i deneme olasılığım düşer
    • Yeni framework'ler pandas/numpy'den uzaklaşıyor, ama uyumluluk ve edge case'ler çözülene kadar bekleyeceğim
    • Birkaç milisaniye daha beklemek benim için sorun değil
  • pandas'ın kütüphane API'si her zaman sezgisel değil

    • NaN/None sorunu var, ama bu küçük bir rahatsızlık
  • pandas kullanma sebebi birleşik ekosistemi

    • json dosyaları, csv dosyaları, python dict'lerinden veri okuyup plotly ile görselleştirme yaparken pandas kullanışlı
    • Ibis, pandas dataframe'leriyle uyumluysa backend tarafını çok da önemsemem