Polars vs Pandas 2.0 vs DuckDB: Hız Karşılaştırması
Pandas 2.0 Arrow desteği alsa da, veri analizi için üç ayrı motor artık ciddi şekilde rekabet ediyor. Bu karşılaştırmada 12 GB veri üzerinde çalışan Polars ve DuckDB, Pandas'ı çok geride bırakıyor.
Pandas 2.0 hâlâ tek-thread çalışırken, Polars Rust tabanlı ve multi-threaded. Groupby işleminde Pandas 48 saniye alırken Polars 5 saniyede yapıyor. 50 milyon satır join'de fark daha da açılıyor: Pandas 31 saniye, Polars 3.9 saniye. DuckDB de benzer şekilde hızlı (6.8 s groupby, 4.4 s join), ama SQL sorgu yazman gerekiyor.
Bellek kullanımında da Polars avantajlı. Pandas groupby sırasında 41 GB RAM tüketiyor; Polars çok daha verimli. Bunun sebebi Arrow'un columnar formatı ve Polars'ın lazy evaluation stratejisi. Sorguyu önce optimize ediyor, sonra çalıştırıyor.
Eğer Pandas'ı tercih ediyorsan, Arrow backend'i açmayı unutma (`.convert_dtypes(dtype_backend='pyarrow')`). Ama gerçekten hız istiyorsan, veri büyüdükçe Polars'a geçmek mantıklı. DuckDB ise SQL biliyorsan ve analitik sorgular yazıyorsan ideal, özellikle CSV/Parquet dosyalarıyla çalışırken doğrudan okuyabiliyor.
Praktik tavsiye: Prototip aşamasında Pandas'ta kal, üretim ortamında 100 MB+ veri varsa Polars'ı dene. Zaten Polars API'si Pandas'a benzer, geçiş kolay.
0 yorum