Pandas, büyük veri setleri üzerinde verimli bir şekilde çalışabilen güçlü bir kütüphanedir. Ancak, bazı durumlarda yavaş çalışabilir, özellikle büyük veri setleri üzerinde döngüler veya karmaşık işlemler kullanıldığında. Bu sorunu çözmek ve işlemleri hızlandırmak için swifter kütüphanesini kullanabilirsiniz.
swifter Nedir?
swifter, Pandas DataFrame’leri üzerindeki bazı işlemleri paralel hale getirerek performansı artıran bir kütüphanedir. Özellikle apply gibi yavaş çalışan işlemleri hızlandırmak için kullanışlıdır.
Nasıl Kullanılır?
Önce basit bir DataFrame oluşturalım:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': np.random.randint(1, 10, 1000000),
'B': np.random.randint(1, 10, 1000000)})
Şimdi, swifter ile apply fonksiyonunu kullanarak bu DataFrame üzerinde hızlı bir işlem gerçekleştirelim:
import swifter
# swifter ile apply işlemi
def my_function(row):
return row['A'] * row['B']
df['Result'] = df.swifter.apply(my_function, axis=1)
Bu, swifter kullanarak apply fonksiyonunu paralelleştirdik ve işlemi daha hızlı hale getirdik.
Bir örnek daha yapalım, swifter kütüphanesini kullanarak bir Pandas DataFrame üzerinde gerçekleştirilen daha geniş bir örnek:
import pandas as pd
import numpy as np
import swifter
# Büyük bir DataFrame oluşturalım
df = pd.DataFrame({
'A': np.random.randint(1, 100, 1000000),
'B': np.random.randint(1, 100, 1000000),
'C': np.random.choice(['X', 'Y', 'Z'], size=1000000)
})
# Swifter ile bir fonksiyon tanımlayalım
def complex_operation(row):
if row['C'] == 'X':
return row['A'] * row['B']
elif row['C'] == 'Y':
return row['A'] + row['B']
else:
return row['A'] - row['B']
# Swifter ile apply işlemi
df['Result'] = df.swifter.apply(complex_operation, axis=1)
# Başka bir sütunu swifter ile işleme alalım
df['NewColumn'] = df.swifter.apply(lambda x: x['A'] + x['B'] if x['C'] == 'X' else x['A'] - x['B'], axis=1)
# Swifter ile bir sütunu döngü kullanmadan güncelleme
def update_column(row):
return row['A'] * 2
df['UpdatedA'] = df['A'].swifter.apply(update_column)
# Sonuçları gösterelim
print(df.head())
Daha Fazla Özellik
swifter ayrıca çeşitli özellikler sunar. Örneğin, progress_bar parametresini kullanarak işlemin ilerlemesini takip edebilirsiniz:
df['Result'] = df.swifter.apply(my_function, axis=1, progress_bar=True)
Bu, işlemin tamamlanma yüzdesini gösteren bir ilerleme çubuğu ekler.
Performans ve Avantajlar
swifter kütüphanesi, büyük veri setleri üzerinde apply fonksiyonları gibi yavaş çalışan işlemleri hızlandırmak için etkili bir araçtır. Paralelleştirme sayesinde, işlemler daha hızlı tamamlanabilir ve Pandas’ın performansını artırabilirsiniz.
Bu kısa örnek, swifter kütüphanesini kullanarak Pandas işlemlerini hızlandırmanın temel bir örneğini içermektedir. Daha fazla detay ve kullanım senaryolarını keşfetmek için kütüphanenin resmi belgelerine başvurmanız önerilir.