Pandas vs Polars vs Dask, canlı grafiklerde
Üç Python dataframe kütüphanesi, üç canlı Chart.js grafiği: ekosistem için bir bubble chart, rengi kütüphaneden değil değerden gelen scriptable bir bubble chart ve benimseme için ilerlemeli animasyonlu bir çizgi grafik. Ekran görüntüsü yok – yukarıdaki canvas’ı tarayıcınız çiziyor.
pandas, Polars ve Dask arasındaki farkı, Polars’ın sadece "hızlı" olduğunu söylemek yerine gerçekten gösteren tek bir sayfa istedim. Yukarıdaki üç grafik, elle seçtiğim sabit bir veri kümesi üzerinde istemci tarafında çalışan Chart.js – yer tutucu sayılarla hazır bir şablon değil. Ekosistem istatistikleri bir bubble chart olarak. Rengin kütüphaneye değil değere göre hesaplandığı scriptable bir bubble chart olarak bir benchmark. Gerçek büyümenin yıldan yıla açıldığı gibi, soldan sağa ilerlemeli olarak kendini çizen bir benimseme eğrisi.
Üç kütüphane, tek bir iş – Python’da tablo verisi – ve verim, bellek ve mevcut pandas kodunuzun ne kadarının geçişten sağ çıkacağı arasında çok farklı üç ödünleşim. Aşağıdaki sayılar yuvarlanmıştır, Eylül 2026 tarihlidir ve benchmark, bu sayfada birebir tekrarladığım bir koşu değil, açıklayıcı niteliktedir. Bunu bir kez fazla söylemeyi, bir grafiğin sahip olmadığı bir kesinliği ima etmesine izin vermeye tercih ederim.
1. Baloncukları neden yalnızca üç kütüphane paylaşıyor
Bubble ve scatter grafikler, her işaretin diğer her işaretin tam yanına düşebildiği tek grafik türüdür; bu yüzden kategorik bir renk paleti sadece bir legend’daki komşuları değil, olası her çifti atlatmalıdır. Bu "tüm çiftler" kontrolünü her zamanki sekiz renk tonu setime uyguladığımda, hem açık hem koyu modda, renk körü bir okuyucu için sadece ilk üç renk testi geçiyor. Bu bir zevk meselesi değil – yukarıdaki ekosistem grafiğinin beş kütüphaneyi beş donuk renkte değil de tam olarak pandas, Polars ve Dask’ı karşılaştırmasının gerçek nedeni bu. PySpark ve Modin, bir baloncuk yerine sayfanın altına yakın bir paragrafı hak ediyor.
pandas indirmelerde hâlâ bir büyüklük mertebesi önde – on beş yıllık, binlerce entegrasyonu olan bir standarttan tam olarak beklenen de bu. Daha ilginç olan, Polars’ın katkıda bulunanların yaklaşık onda biriyle GitHub yıldızlarında Dask’a ne kadar yaklaştığı – mevcut bir API’yi genişletmek yerine motoru sıfırdan yeniden yazan küçük, odaklanmış bir ekip, çok daha büyük bir ekibi geçebiliyor.
2. Kimlik rengi değil, scriptable renk
Performans grafiği, bir CSV üzerinde iki boyutta groupby ve agregasyon çalıştırıyor – belleğe rahatça sığan 2 GB ve tipik bir dizüstünün sınırındaki 20 GB. Chart.js, elements.point.radius ve backgroundColor’ı sabit değerler yerine fonksiyon olarak tanımlamanıza izin verir – Chart.js’in kendi scriptable options örneğinin gösterdiği tam olarak budur. Ben bunu burada gerçek bir anlamı olan bir şey için kullandım: renk, kütüphaneye sabitlenmek yerine doğrudan saniye cinsinden çalışma süresinden hesaplanıyor – hızlı, orta, yavaş – böylece aynı yeşil hem 2 GB’de Polars’a hem 20 GB’de Dask’a ait olabiliyor. Baloncuk yarıçapı, alanın (ham yarıçapın değil) belleği yaklaşık doğrusal takip etmesi için karekök ölçeğinde tepe RAM’den geliyor.
2 GB’de Dask, sıradan pandas’a bile kaybediyor – bir görev grafiği kurmanın, ancak dağıtacak yeterli iş olduğunda karşılığını veren bir yükü var. 20 GB’de tablo tersine dönüyor: veriyi bellekte kopyalayan tek iş parçacıklı pandas en çok geriliyor; Rust üzerinde SIMD ve akış tabanlı çalıştırma ile Polars "orta" bantta kalıyor; dosyayı parçalara bölen Dask belleği kontrol altında tutuyor ve Polars’a süre farkının çoğunu kapatıyor.
3. İlerlemeli çizgiler ve gerçekten neyi seçerdim
Büyüme grafiği, aynı üç kütüphane için 2019’dan 2026’ya tahmini haftalık PyPI indirmelerini izliyor ve Chart.js’in kendi progressive-line örneği gibi canlandırılıyor: her nokta, kendi indeksine göre ayrı bir gecikme alıyor, böylece çizgi sadece belirmek yerine soldan sağa kendini çiziyor. Bu konunun kasıtlı bir yankısı, süs değil – gerçek benimseme de yıldan yıla açıldı. pandas düzleniyor; bu, geri çekilen bir kütüphanenin değil, olgun, on beş yıllık bir standardın görünümüdür. 2020’de yayımlanan Polars, ders kitabı niteliğinde geç başlangıç eğrisi gösteriyor: başta zar zor görünür, sonra Rust meraklıları balonunun dışındakiler hızı hakkında yazmaya başlayınca keskin bir kırılma.
Peki gerçekten neyi tercih ederdim? Ekosistem ve ekibin kas hafızası ham saniyelerden daha önemliyse pandas. Belleğin ve CPU’nun gerçek paraya mal olduğu tek güçlü bir makinedeki yeni bir pipeline için Polars. Veri tek bir makineye artık hiç sığmıyorsa ve PySpark’ta yeniden yazmak yerine pandas biçimli kodu korumak istiyorsanız Dask. PySpark ve Modin bir adım daha ötede duruyor – kesin olarak küme bölgesindeyseniz ya da Spark zaten altyapınızı çalıştırıyorsa PySpark; dürüst hedef tek satırlık bir import değişikliğiyle paralel bir hızlanmaysa ve yeniden yazmaya hiç niyetiniz yoksa Modin.
- pandas – birkaç GB’a kadar veri, maksimum ekosistem, API’yi zaten ezbere bilen bir ekip.
- Polars – tek güçlü bir makine, sürüklenecek eski kod olmayan yeni bir pipeline, gerçekten paraya mal olan bellek ve CPU.
- Dask – artık tek bir makineye sığmayan veri, vazgeçmek istemediğiniz pandas biçimli bir API, var olan veya gelmekte olan bir küme.
- PySpark veya Modin – bir adım daha ileride: kesin olarak küme bölgesindeyseniz PySpark, yeniden yazma söz konusu değilse tek satırlık bir import değişikliği için Modin.
Rakamlar hakkında
GitHub yıldızları ve haftalık PyPI indirmeleri, pepy.tech gibi genel takip araçlarından ve her projenin kendi deposundan alınan, Eylül 2026 itibarıyla yuvarlanmış tahminlerdir. Benchmark rakamları, bu sayfa için çalıştırdığım bir koşuyu değil, genel groupby karşılaştırmalarının tipik şeklini yeniden üretir – gerçek saniyeler donanıma, sürümlere ve verinizin şekline bağlıdır. Üç grafik de Chart.js üzerine kurulu: bir bubble chart, scriptable bir bubble chart ve bir progressive-line animasyonu – Chart.js’in kendi belgelerinde sunduğu aynı üç örnek desen.
Projenizi konuşalım mı?
React ve Next.js konusunda uzman kıdemli bir web geliştiriciyim - dünya çapında freelance projelere açığım.
E-posta
i.vynnychenko@gmail.comKonum
Kyiv, Ukrayna
Upwork
Profili görüntüleTelegram
Bana yazınViber
Bana yazın