Data Analysis

Pandas’ta Koşullara Dayalı Veri Çerçevesi Sütunları Etkin Bir Şekilde Oluşturma

Spread the love

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ı

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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir