Ana içeriğe geç

Polars'a Giriş: Python'un Büyük Ölçekli Veri Analizi Aracı

Yüksek performanslı veri işleme ve analiz için güçlü bir Python kütüphanesi olan Polars'ı keşfedin. Özelliklerini, pandas'a göre avantajlarını ve veri analizi süreçlerinizi nasıl dönüştürebileceğini öğrenin.
Moez Ali
Moez Ali

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google ile devam edinDevam ederek, Kullanım Koşullarımızı ve Gizlilik Politikamızı kabul etmiş ve verilerinizin ABD'de saklandığını onaylamış olursunuz.

Veri analizi dünyasında, Python çok yönlülüğü ve zengin kütüphane ekosistemi nedeniyle popüler bir dildir. Veri işleme ve analiz, içgörü elde etmek ve bilinçli kararlar almak için kritik bir rol oynar. Ancak, veri kümeleri boyut ve karmaşıklık açısından büyümeye devam ettikçe, yüksek performanslı çözümlere duyulan ihtiyaç da kaçınılmaz hale gelir.

Büyük veri kümelerini verimli bir şekilde işlemek, hızlı hesaplamalar ve optimize edilmiş işlemler sunabilen araçlar gerektirir. İşte bu noktada Polars devreye girer. Polars, özellikle Python'da yüksek performanslı veri işleme ve analiz için tasarlanmış güçlü bir açık kaynak kütüphanesidir.

Polars Özellikleri

Polars, tamamen Rust ile yazılmış bir DataFrame kütüphanesidir ve Python geliştiricilerine verileri işlemek için ölçeklenebilir ve verimli bir çatı sunmak üzere inşa edilmiştir; oldukça popüler olan pandas kütüphanesine bir alternatif olarak görülür. Çok çeşitli veri işleme ve analiz görevlerini kolaylaştıran işlevsellikler sağlar. Polars kullanmanın bazı temel özellikleri ve avantajları şunlardır:

1. Hız ve performans

Polars, performans odaklı olarak geliştirilmiştir. Paralel işlemeyi ve bellek optimizasyon tekniklerini kullanır; bu sayede büyük veri kümelerini geleneksel yöntemlere kıyasla belirgin ölçüde daha hızlı işler.

2. Veri işleme yetenekleri

Polars, filtreleme, sıralama, gruplama, birleştirme ve toplulaştırma gibi temel işlemleri kapsayan kapsamlı bir veri işleme araç seti sunar. Polars, görece yeni olmasından ötürü pandas kadar kapsamlı bir işlevselliğe sahip olmayabilir; ancak pandas'taki yaygın işlemlerin yaklaşık %80'ini karşılar.

3. İfade gücü yüksek söz dizimi

Polars, öğrenmesi ve kullanması kolay, özlü ve sezgisel bir söz dizimi kullanır. Söz dizimi, pandas gibi popüler Python kütüphanelerini andırır; bu da kullanıcıların Polars'a hızla uyum sağlamasını ve mevcut bilgilerini kullanmasını mümkün kılar.

4. DataFrame ve Series yapıları

Polars'ın merkezinde, tablo verileriyle çalışmak için tanıdık ve güçlü bir soyutlama sunan DataFrame ve Series yapıları bulunur. Polars'taki DataFrame işlemleri zincirlenebilir; bu da verimli ve öz bir veri dönüşümü sağlar.

5. Polars tembel değerlendirmeyi destekler

Polars, tembel değerlendirme (lazy evaluation) uygular; bu, sorguların incelenip optimize edilerek performansın artırılması ve bellek tüketiminin azaltılması anlamına gelir. Polars ile çalışırken, kütüphane sorgularınızı analiz eder ve yürütmeyi hızlandırma ya da bellek kullanımını azaltma fırsatlarını arar. Buna karşılık, Pandas yalnızca hevesli değerlendirmeyi (eager evaluation) destekler; ifadelerle karşılaşılır karşılaşılmaz değerlendirilir.

Pandas varken neden Polars'ı seçelim?

pandas, esnekliği ve kullanım kolaylığıyla bilinen, yaygın olarak benimsenmiş bir kütüphanedir. Ancak büyük veri kümeleriyle çalışırken, tek iş parçacıklı yürütmeye dayanması nedeniyle Pandas performans darboğazları yaşayabilir. Veri kümesinin boyutu arttıkça, işlem süreleri aşırı uzayabilir ve üretkenliği kısıtlayabilir.

Polars, büyük veri kümelerini verimli şekilde ele almak üzere özel olarak tasarlanmıştır. Tembel değerlendirme stratejisi ve paralel yürütme yetenekleri sayesinde Polars, büyük miktarda veriyi hızla işler. Hesaplamaları birden çok CPU çekirdeğine dağıtarak paralelliği kullanır ve etkileyici performans kazanımları sağlar. Yuki tarafından yapılan Pandas ve Polars hız karşılaştırma testine bakın.

image4.png

Görsel Kaynağı

Polars ve pandas karşılaştırmasının tamamı için ayrı makalemize göz atın.

Polars'ın kurulumu

Polars, Python paket yöneticisi pip ile kurulabilir. Komut satırı arayüzünüzü açın ve aşağıdaki komutu çalıştırın:

install polars

Polars'ta bir veri kümesi yükleme

Polars, CSV dosyaları, Parquet dosyaları ve Pandas DataFrame'leri dahil olmak üzere çeşitli kaynaklardan veri yüklemek için kullanışlı yöntemler sunar. CSV veya Parquet dosyasını okuma yöntemleri pandas kütüphanesiyle aynıdır.

# read csv file
import polars as pl
data = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# check the head
data.head()

Çıktı:

image2.png

data değişkeninin türü polars.DataFrame'dir.

type(data)
>>> polars.dataframe.frame.DataFrame

Çıktı:

image7.png

Polars ile yaygın veri işleme fonksiyonları

Polars, veriyi seçme, filtreleme, sıralama, dönüştürme ve temizleme gibi işlemler için kapsamlı bir işlev seti sunar. Şimdi bazı yaygın veri işleme görevlerini ve bunların Polars ile nasıl yapılacağını inceleyelim:

1. Veriyi seçme ve filtreleme

Bir DataFrame'den belirli sütunları seçmek için select() yöntemini kullanabilirsiniz. Örnek:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# Select specific columns: carat, cut, and price
selected_df = df.select(['Carat Weight', 'Cut', 'Price'])


# show selected_df head
selected_df.head()

Çıktı:

image1.png

Belirli koşullara göre satırları filtrelemek için filter() yöntemini kullanabilirsiniz. Örneğin, karat değeri 1.0'dan büyük olan satırları filtrelemek için şunu yapabilirsiniz:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# filter the df with condition
filtered_df = df.filter(pl.col('Carat Weight') > 2.0)


# show filtered_df head
filtered_df.head()

Çıktı:

image9.png

2. Veriyi sıralama ve düzenleme

Polars, bir veya birden fazla sütuna göre bir DataFrame'i sıralamak için sort() yöntemini sunar. Örnek:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# sort the df by price
sorted_df = df.sort(by='Price')


# show sorted_df head
sorted_df.head()

Çıktı:

image12.png

3. Eksik değerleri ele alma

Polars, eksik değerleri ele almak için kullanışlı yöntemler sağlar. drop_nulls() yöntemi, herhangi bir eksik değer içeren satırları düşürmenizi sağlar:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# drop missing values
cleaned_df = df.drop_nulls()


# show cleaned_df head
cleaned_df.head()

Çıktı:

image5.png

Alternatif olarak, eksik değerleri belirtilen bir varsayılan değerle ya da bir doldurma yöntemiyle değiştirmek için fill_nulls() yöntemini kullanabilirsiniz.

4. Belirli sütunlara göre gruplama

Verileri belirli sütunlara göre gruplamak için groupby() yöntemini kullanabilirsiniz. Aşağıdaki örnek, verileri Cut sütununa göre gruplar ve her grup için ortalama Price değerini hesaplar:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# group by cut and calc mean of price
grouped_df = df.groupby(by='Cut').agg(pl.col('Price').mean())


# show grouped_df head
grouped_df.head()

Çıktı:

image8.png

Yukarıdaki çıktıda, elmasların Cut boyutuna göre ortalama fiyatını görebilirsiniz.

5. DataFrame'leri birleştirme ve bir araya getirme

Polars, farklı kaynaklardan gelen verileri birleştirmenize ve bir araya getirmenize olanak tanıyan esnek seçenekler sunar. Birleştirme işlemi yapmak için join() yöntemini kullanabilirsiniz. Aşağıda, ortak bir anahtar sütuna dayalı iki DataFrame arasında iç birleştirme örneği yer alıyor:

import polars as pl


# Create the first DataFrame
df1 = pl.DataFrame({
    'id': [1, 2, 3, 4],
    'name': ['Alice', 'Bob', 'Charlie', 'David']
})


# Create the second DataFrame
df2 = pl.DataFrame({
    'id': [2, 3, 5],
    'age': [25, 30, 35]
})


# Perform an inner join on the 'id' column
joined_df = df1.join(df2, on='id')


# Display the joined DataFrame
joined_df

Çıktı:

image6.png

Bu örnekte, pl.DataFrame yapıcısını kullanarak iki DataFrame (df1 ve df2) oluşturuyoruz. İlk DataFrame df1, id ve name sütunlarını; ikinci DataFrame df2 ise id ve age sütunlarını içerir. Ardından, join() yöntemini kullanarak id sütununda iç birleştirme gerçekleştiriyor ve id sütununu birleştirme anahtarı olarak belirtiyoruz.

Entegrasyon ve birlikte çalışabilirlik

Polars, diğer popüler Python kütüphaneleriyle sorunsuz entegrasyon sunarak veri analistlerinin geniş bir araç ve işlev yelpazesinden yararlanmasını sağlar. Entegrasyonun iki önemli yönüne bakalım: diğer kütüphanelerle çalışma ve Pandas ile birlikte çalışabilirlik.

Polars'ı diğer Python kütüphaneleriyle entegre etme

Polars, NumPy ve PyArrow gibi kütüphanelerle kolayca entegre olur; kullanıcıların veri analizi iş akışlarında birden çok aracın gücünü birleştirmesine olanak tanır. NumPy entegrasyonu sayesinde Polars, Polars DataFrame'leri ile NumPy dizileri arasında zahmetsizce dönüşüm yapar ve NumPy'nin güçlü bilimsel hesaplama yeteneklerinden yararlanır. Bu entegrasyon, sorunsuz veri geçişleri sağlar ve analistlerin NumPy fonksiyonlarını doğrudan Polars verilerine uygulamasına izin verir.

Benzer şekilde, PyArrow'dan yararlanarak Polars, Polars ve Arrow tabanlı sistemler arasındaki veri aktarımını optimize eder. Bu entegrasyon, Arrow formatında depolanan verilerle sorunsuz çalışmayı ve Polars'ın yüksek performanslı veri işleme yeteneklerinden yararlanmayı mümkün kılar.

Polars DataFrame'lerini pandas DataFrame'lerine dönüştürme

Polars, Polars DataFrame'lerini Pandas DataFrame'lerine sorunsuz bir şekilde dönüştürür. İşte Polars'tan pandas'a dönüşümü gösteren bir örnek.

import polars as pl
import pandas as pd


# Create a Polars DataFrame
df_polars = pl.DataFrame({
    'column_A': [1, 2, 3],
    'column_B': ['apple', 'banana', 'orange']
})


# Convert Polars DataFrame to Pandas DataFrame
df_pandas = df_polars.to_pandas()


# Display the Pandas DataFrame
df_pandas

Çıktı:

image3.png

Sonuç

Polars, Python'da yüksek performanslı veri işleme ve analiz için güçlü bir kütüphanedir. Hız ve performans optimizasyonları, büyük veri kümelerini verimli biçimde ele almak için onu ideal bir seçenek haline getirir.

İfade gücü yüksek söz dizimi ve DataFrame yapılarıyla Polars, veri işleme görevleri için tanıdık ve sezgisel bir arayüz sunar. Ayrıca Polars, NumPy ve PyArrow gibi diğer Python kütüphaneleriyle sorunsuz bir şekilde entegre olarak yeteneklerini genişletir ve kullanıcıların çeşitli araç ekosistemlerinden yararlanmasına olanak tanır.

Polars DataFrame'lerinin pandas DataFrame'lerine dönüştürülebilmesi, birlikte çalışabilirliği güvence altına alır ve Polars'ın mevcut iş akışlarına entegrasyonunu kolaylaştırır. İster karmaşık veri tipleriyle çalışıyor olun, ister büyük veri kümelerini ele alıyor olun ya da performans iyileştirmeleri arıyor olun, Polars, veri analizi çalışmalarınızın tüm potansiyelini açığa çıkarmak için kapsamlı bir araç seti sunar.

Moez Ali

Yazar

Moez Ali

Veri Bilimci, PyCaret'in Kurucusu ve Yaratıcısı

Konular

İlgili