Data Analysis

Pandas DataFrame’lerinde Tarih Bazlı Filtrelemede Ustalaşma

Spread the love

Tarih aralıklarına göre Pandas DataFrame’lerini verimli bir şekilde filtrelemek, veri analizinde çok önemli bir beceridir. Pandas bunu gerçekleştirmek için her birinin güçlü ve zayıf yönleri olan çeşitli yöntemler sunar. Bu makale, sözdizimlerini, verimliliğini ve kullanım durumlarını karşılaştıran dört popüler yaklaşımı ele almaktadır.

İçerik Tablosu

Boolean Maskeleme ile Filtreleme

Boolean maskeleme, en temel ve esnek yaklaşımı sunar. Belirtilen koşullara göre satırları filtreleyen bir boolean dizi (maske) oluşturur. Bu yöntem, karmaşık senaryolara oldukça uyumludur.


import pandas as pd

data = {'Tarih': pd.to_datetime(['2023-10-26', '2023-11-15', '2023-12-01', '2024-01-10', '2024-02-20']),
        'Değer': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

baslangic_tarihi = pd.to_datetime('2023-11-01')
bitis_tarihi = pd.to_datetime('2024-01-01')

maske = (df['Tarih'] >= baslangic_tarihi) & (df['Tarih'] <= bitis_tarihi)
filtrelenmis_df = df[maske]  #df.loc[maske]'den daha verimli
print(filtrelenmis_df)

.query() Yöntemini Kullanma

.query() yöntemi, filtreleme için daha okunabilir ve özlü bir alternatif sunar. Karmaşık koşullar için özellikle faydalıdır.


baslangic_tarihi = '2023-11-01'
bitis_tarihi = '2024-01-01'

filtrelenmis_df = df.query('@baslangic_tarihi <= Tarih <= @bitis_tarihi')
print(filtrelenmis_df)

.isin() Yöntemini Kullanma

.isin() yöntemi, sürekli bir aralık yerine belirli tarihlerin bir listesine göre satırları seçmeniz gerektiğinde uygundur. Büyük sürekli aralıklar için daha az verimlidir.


eklenecek_tarihler = pd.to_datetime(['2023-11-15', '2023-12-01'])
filtrelenmis_df = df[df['Tarih'].isin(eklenecek_tarihler)]
print(filtrelenmis_df)

.between() Yönteminden Yararlanma

.between() yöntemi, sürekli bir tarih aralığında satırları seçmek için kolaylaştırılmış bir yaklaşım sunar. Verimli ve okunması kolaydır.


baslangic_tarihi = pd.to_datetime('2023-11-01')
bitis_tarihi = pd.to_datetime('2024-01-01')

filtrelenmis_df = df[df['Tarih'].between(baslangic_tarihi, bitis_tarihi, inclusive='both')] #açıklık için inclusive argümanı eklendi
print(filtrelenmis_df)

Özetle, Pandas tarih tabanlı filtreleme için çeşitli yöntemler sunar. En uygun seçim, belirli ihtiyaçlarınıza ve kodlama stilinize bağlıdır. Boolean maskeleme maksimum esneklik sağlar, .query() okunabilirliği artırır ve .between() sürekli aralık seçimini basitleştirir. En iyi performans için tarih sütununuzun datetime64 türünde olduğundan emin olun.

Bir yanıt yazın

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