Pandas, veri manipülasyonu ve analizi için güçlü bir Python kütüphanesidir. Koşullara bağlı olarak DataFrame’lerde yeni sütunlar oluşturmak yaygın bir işlemdir. Bu makale, hem açıklık hem de performans önceliklendirilerek bunu başarmak için birkaç etkili yöntemi ele almaktadır. Liste kavramalarını, NumPy yöntemlerini, pandas.DataFrame.apply
ve pandas.Series.map()
fonksiyonlarını ele alıp güçlü ve zayıf yönlerini karşılaştıracağız.
İçerik Tablosu
- Koşullu Sütun Oluşturma için Liste Kavramaları
- Optimize Edilmiş Koşullu Mantık için NumPy’den Faydalanma
- Esnek Koşullu Mantık için
pandas.DataFrame.apply()
Kullanımı pandas.Series.map()
ile Etkin Değer Eşleme- Performans Karşılaştırması ve Öneriler
Koşullu Sütun Oluşturma için Liste Kavramaları
Liste kavramaları, basit koşullara bağlı olarak yeni sütunlar oluşturmak için özlü bir sözdizimi sağlar. Özellikle daha küçük DataFrame’ler için etkilidirler. Bununla birlikte, performansları daha büyük veri kümeleriyle düşebilir.
import pandas as pd
data = {'Sales': [100, 200, 150, 250, 300],
'Region': ['North', 'South', 'North', 'East', 'West']}
df = pd.DataFrame(data)
df['SalesCategory'] = ['High' if sales > 200 else 'Low' for sales in df['Sales']]
print(df)
Optimize Edilmiş Koşullu Mantık için NumPy’den Faydalanma
NumPy, özellikle daha büyük DataFrame’ler için performansı önemli ölçüde artıran, yüksek derecede optimize edilmiş vektörize işlemler sunar. np.where()
koşullu atama için özellikle kullanışlıdır.
import numpy as np
df['SalesCategory_np'] = np.where(df['Sales'] > 200, 'High', 'Low')
print(df)
Esnek Koşullu Mantık için pandas.DataFrame.apply()
Kullanımı
apply()
yöntemi, satır bazlı (axis=1
) veya sütun bazlı (axis=0
) fonksiyonlar uygulayarak daha karmaşık koşullu mantık için esneklik sunar. Bununla birlikte, özellikle işlem yoğun fonksiyonlarda çok büyük DataFrame’ler için NumPy’den daha yavaş olabilir.
def categorize_sales(row):
if row['Region'] == 'North' and row['Sales'] > 150:
return 'High North'
elif row['Sales'] > 200:
return 'High'
else:
return 'Low'
df['SalesCategory_apply'] = df.apply(categorize_sales, axis=1)
print(df)
pandas.Series.map()
ile Etkin Değer Eşleme
map()
yöntemi, bir değer kümesinden diğerine eşlemeler uygulayarak, kategorik sütunları verimli bir şekilde oluşturmak için idealdir.
region_mapping = {'North': 'Northern Region', 'South': 'Southern Region', 'East': 'Eastern Region', 'West': 'Western Region'}
df['RegionMapped'] = df['Region'].map(region_mapping)
print(df)
Performans Karşılaştırması ve Öneriler
En uygun yöntem, koşul karmaşıklığı, DataFrame boyutu ve performans gereksinimleri gibi faktörlere bağlıdır. Basit koşullar ve daha küçük veri kümeleri için liste kavramaları özlüdür. NumPy’nin vektörize işlemleri, daha büyük veri kümeleri ve daha karmaşık mantık için önemli performans avantajları sunar. apply()
, karmaşık satır bazlı veya sütun bazlı işlemler için esneklik sağlar, map()
ise değer eşlemelerinde mükemmeldir. En verimli yaklaşımı belirlemek için belirli verilerinizde kıyaslama yapılması önerilir.