Pandas, veri manipülasyonu ve analizi için güçlü bir Python kütüphanesidir. Yaygın bir görev, belirli sütunlara uygulanan koşullara bağlı olarak bir DataFrame’den satırları seçmeyi içerir. Bu makale, belirli bir ölçüte uyan satırların indekslerini almak için üç verimli yöntemi ele almaktadır.
İçerik Tablosu
- Boolean İndeksleme: Basit ve Verimli Bir Yaklaşım
- NumPy’nin
np.where()
Fonksiyonunu Esneklik İçin Kullanma - Pandas’ın
query()
Fonksiyonunu Okunabilir Karmaşık Sorgular İçin Kullanma
Boolean İndeksleme: Basit ve Verimli Bir Yaklaşım
Boolean indeksleme, basit seçim ölçütleri için özlü ve verimli bir çözüm sunar. Koşulun doğruluk değerini doğrudan satırları filtrelemek için kullanır.
Bir örnek ile açıklayalım:
import pandas as pd
data = {'col1': [1, 2, 3, 4, 5],
'col2': [6, 7, 8, 9, 10],
'col3': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)
print(df)
# 'col1' 2'den büyük olan satırların indekslerini al
indices = df[df['col1'] > 2].index.tolist()
print(indices) # Çıktı: [2, 3, 4]
Bu kod önce bir Boolean maskeleme (df['col1'] > 2
) oluşturur, ardından bunu DataFrame’i filtrelemek için kullanır ve son olarak seçilen satırların indekslerini .index.tolist()
kullanarak çıkarır.
NumPy’nin np.where()
Fonksiyonunu Esneklik İçin Kullanma
NumPy’nin np.where()
fonksiyonu, özellikle karmaşık koşullar veya birden fazla eş zamanlı koşul için yararlı olan daha çok yönlü bir yaklaşım sağlar.
import numpy as np
indices = np.where(df['col1'] > 2)[0].tolist()
print(indices) # Çıktı: [2, 3, 4]
np.where(df['col1'] > 2)
bir demet döndürür; ilk eleman, koşulu sağlayan indekslerin bir dizisini içerir. Bu elemana [0]
kullanarak erişir ve .tolist()
kullanarak listeye dönüştürürüz.
Pandas’ın query()
Fonksiyonunu Okunabilir Karmaşık Sorgular İçin Kullanma
query()
yöntemi, özellikle karmaşık koşullar için okunabilirliği artırır. Koşulları dize ifadeleri kullanarak belirtmeyi sağlar.
indices = df.query('col1 > 2').index.tolist()
print(indices) # Çıktı: [2, 3, 4]
# Birden fazla koşul içeren örnek
indices = df.query('col1 > 2 and col2 < 9').index.tolist()
print(indices) # Çıktı: [2]
query()
yöntemi, koşulun dize gösterimini doğrudan kabul eder, özellikle birden fazla veya karmaşık koşulda okunabilirliği önemli ölçüde iyileştirir.
Sonuç: Her yöntem, bir koşula bağlı olarak indeksleri etkili bir şekilde alır. Boolean indeksleme basit koşullar için en iyisidir; np.where()
daha karmaşık senaryoları ele alır; ve query()
gelişmiş filtreleme için okunabilirlikte mükemmeldir.