Polars 2.0: Veri analitiğinde neler değişti?

Polars 2.0: Veri analitiğinde neler değişti?
audio-thumbnail
Polars 2.0: Veri analitiğinde neler değişti?
0:00
/0

Polars 2.0: Veri analitiğinde neler değişti?

Polars 2.0, veri bilimi dünyasında önemli bir atılım olarak sunuldu. Bu sürüm, performans ve API açısından önemli yeniliklerle geliyor. Özellikle SQL desteklerine odaklanan bu güncellemeyi, hem veri analisti hem de geliştirici olanlar için bir dizi yenilikle tanıtmak gerekiyor.

SQL Destekleri: Polars’ın ilk sınıf konumu

Polars 2.0 ile birlikte, SQL destekleri ilk sınıf konumuna yükseldi. Daha önce sadece isteğe bağlı olarak kullanılabilen SQL, artık bir parçası olarak geliştirildi. Bu değişiklik, hem veri analisti hem de geliştirici için daha esnek ve güçlü bir yaklaşım sunuyor.

SQL desteklerinin gelişmesi, optimizasyon ve motor katmanlarında önemli iyileştirmelerle destekleniyor. Özellikle sorgu yeniden sıralama (reordering), ortak alt-sağlama (common-subplan-elimination) ve dinamik predicates/bloom filtreleri gibi gelişmeler, performansı ciddi ölçüde artırdı.

Bu iyileştirmeler, Polars’ın TPC-H ve TPC-DS gibi tipik SQL testlerinde DataFusion ve DuckDB gibi rakiplerinden daha hızlı çalışmasını sağladı. Özellikle küçük veri kümesi üzerinde çalışırken, Polars 2.0'nun performansı dikkat çekici.

Akış Motoru ve Disk Dışı (OOC) Destek

2.0 sürümünde, LazyFrame üzerinde collect çağrısı yapılırken akış motoru (streaming engine) varsayılan olarak kullanılmaya başlandı. Bu değişiklik, büyük veri kümelerinde bellek kullanımı ve performans açısından büyük bir katkı sağlıyor. Ancak bazı işlemler (örneğin join veya group_by) üzerinde sıraya dikkat edilmesi gerekiyor. Bu durumda maintain_order=True parametresi ile sıraya dikkat edilebilir.

Ayrıca, disk dışına (spill-to-disk) destek de varsayılan olarak etkinleştirildi. Bu, bellek sınırlarını aşan işlemlerde verilerin diskte tutulmasına olanak sağlıyor. Bellek kullanımı %80'e ulaştığında otomatik olarak çalışmaya başlıyor ve varsayılan disk bütçesi 64GB.

Bu iki özellik, özellikle hafif veri analisti kullanıcıları için büyük bir avantaj sunuyor. Veri setleri büyüdükçe, sistem daha dayanıklı ve sorunsuz çalışabiliyor.

Yeni Map Veri Tipi

Polars 2.0 ile birlikte, Arrow MapType doğrudan Polars Map veri tipi olarak desteklenmeye başladı. Bu, Python sözlüklerine benzer bir yapı sunuyor. Önceden bu veri tipi, List(Struct({"key": ..., "value": ...})) olarak tanımlanıyordu.

Bu yeni tip, sorgularda anahtar aramaları (key lookups) ve sözlük benzeri yöntemlerle daha kolay kullanılabilir. Örneğin, bir "scores" sütununda matematik ve sanat notlarını içeren bir harita varsa, bu veri tipi ile doğrudan math veya art notlarına erişim yapılabilir.

Ayrıca, map.get, map.contains_key, map.len, map.keys ve map.values gibi yöntemlerle, haritalar üzerinde daha karmaşık sorgular yapılabiliyor. Bu, veri analizlerinde daha esnek ve güçlü bir yapı sunuyor.

Daha Strikte ve Açık Duyarlı Veri Tipleri

Polars 2.0, veri tipleri açısından daha strikte ve açık olacak şekilde yeniden yapılandırıldı. Bu değişiklik, hataların daha hızlı tespit edilmesine ve geliştirme süreçlerinin daha hızlı ilerlemesine yardımcı oluyor. Özellikle yapay zeka geliştirme süreçlerinde, bu tür doğrulamalar, iterasyon süresini kısaltıyor.

Sonuç

Polars 2.0, performans, SQL desteği ve veri tipleri açısından önemli bir atılım sunuyor. Akış motoru, disk dışına destek ve yeni Map veri tipi gibi özellikler, hem veri analisti hem de geliştirici için daha güçlü bir araç sağlıyor. Bu sürüm, Polars'ın veri analitiği dünyasındaki konumunu pekiştiriyor ve gelecekteki gelişmeler için sağlam bir temel oluşturuyor.