Pandas, veri manipülasyonu ve analizi için güçlü bir Python kütüphanesidir. Sıkça karşılaşılan bir ihtiyaç, aynı fonksiyonun birden fazla DataFrame sütununa uygulanmasıdır. Bu makale, tekrarlayan sütun sütun işlemlerinden kaçınarak bunu başarmak için verimli yöntemleri özetlemektedir.
İçindekiler Tablosu
- Vektörize Edilmiş İşlemler: En Hızlı Yaklaşım
apply()
Metodu: Satır Bazlı İşlemlerapplymap()
: Eleman Bazlı Dönüşümler- Özlü Yazım İçin Lambda Fonksiyonları
- Çeşitli Veri Türlerinin İşlenmesi
- Doğru Metodun Seçimi
Vektörize Edilmiş İşlemler: En Hızlı Yaklaşım
Sayısal işlemler için Pandas’ın vektörize edilmiş fonksiyonları üstün hız sunar. NumPy’nin optimize edilmiş dizi işleme özelliklerinden yararlanarak doğrudan tüm sütunlar üzerinde çalışırlar. Bu, büyük veri kümeleri için yinelemeli metotlardan önemli ölçüde daha hızlıdır.
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
# A ve B sütunlarını eleman bazında topla
df['Sum_AB'] = df['A'] + df['B']
print(df)
# A sütunundaki değerlerin karesini al
df['A_Squared'] = df['A']**2
print(df)
apply()
Metodu: Satır Bazlı İşlemler
apply()
metodu, fonksiyonları satır bazlı (axis=1
) veya sütun bazlı (axis=0
) uygulamak için çok yönlüdür. Fonksiyonunuzun her satır içinde birden fazla sütuna erişmesi gerektiğinde idealdir.
# A ve B sütunlarının çarpımını hesaplayan fonksiyon
def multiply_ab(row):
return row['A'] * row['B']
df['Product_AB'] = df.apply(multiply_ab, axis=1)
print(df)
applymap()
: Eleman Bazlı Dönüşümler
applymap()
, bir fonksiyonu bir DataFrame’in (veya seçilen sütunların) her bir elemanına uygular. Basit, eleman bazlı dönüşümler için verimlidir.
# 'A' ve 'C' sütunlarındaki elemanlara özel bir fonksiyon uygula
def custom_function(x):
if x > 5:
return x * 2
else:
return x
df[['A', 'C']] = df[['A', 'C']].applymap(custom_function)
print(df)
Özlü Yazım İçin Lambda Fonksiyonları
Lambda fonksiyonları, apply()
veya diğer metodlarla kullanıldığında okunabilirliği artıran, basit, isimsiz fonksiyonları satır içi tanımlamanın özlü bir yolunu sunar.
# Özlü yazım için apply ile lambda fonksiyonu kullanımı
df['Sum_AB_Lambda'] = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(df)
Çeşitli Veri Türlerinin İşlenmesi
Birden fazla sütunla çalışırken, veri türlerindeki farklılıkları öngörün. Sağlam fonksiyonlar, potansiyel tür uyuşmazlıklarını yönetmek ve beklenmedik hataları önlemek için hata işleme (örneğin, try-except
blokları) içermelidir.
Doğru Metodun Seçimi
En uygun yaklaşım, fonksiyonunuzun karmaşıklığına ve veri kümesi boyutuna bağlıdır:
- Vektörize işlemler: Birden fazla sütunda basit sayısal işlemler için en hızlı yöntemdir.
applymap()
: Birden fazla sütundaki bireysel hücrelerde eleman bazlı işlemler için verimlidir.apply()
(axis=1
veyaaxis=0
ile): Birden fazla sütuna erişimi gerektiren satır bazlı veya sütun bazlı işlemler için esnektir. Çok büyük DataFrame’ler için daha yavaş olabilir.- Lambda fonksiyonları:
apply()
veya diğer metodlar içindeki basit fonksiyonlar için kod okunabilirliğini artırır.
En iyi performans için mümkün olduğunca vektörize işlemlere öncelik verin. Bu teknikleri anlamak, Pandas’ta verimli veri manipülasyonu sağlar.