Veri seçme ve filtreleme
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 16/112
- 5 dk
DataFrame'de koşula göre satır seçmek için boolean filtreleme kullanılır.
Koşulla filtreleme
NumPy'daki boolean maske pandas'ta da çalışır:
genc = df[df["yas"] < 30]
zengin_genc = df[(df["yas"] < 30) & (df["maas"] > 4000)]
print(len(genc))Koşulları & ve | ile birleştirirken parantez zorunludur; Python'un and/or anahtar kelimeleri burada çalışmaz.
loc ve iloc
loc etiketle, iloc konumla seçer; ikisi de [satır, sütun] biçimini kullanır:
df.loc[df["yas"] > 30, "ad"] # koşullu satırların ad sütunu
df.iloc[0] # ilk satır
df.iloc[:2, 1] # ilk iki satırın ikinci sütunuloc ile filtre ve sütun seçimini tek adımda yapmak hem okunur hem de "SettingWithCopy" uyarısını önler.
Uygulama Filtrele ve seç
Yaşı 25'ten büyük ve maaşı 4500'den büyük kişilerin adlarını loc ile seç ve tolist() ile liste olarak yazdır.
Başlangıç kodu
import pandas as pd
df = pd.DataFrame({
"ad": ["Ali", "Ece", "Can", "Su"],
"yas": [34, 28, 45, 22],
"maas": [5000, 4200, 7100, 3000],
})
# buraya yazÖrnek çözüm
import pandas as pd
df = pd.DataFrame({
"ad": ["Ali", "Ece", "Can", "Su"],
"yas": [34, 28, 45, 22],
"maas": [5000, 4200, 7100, 3000],
})
secilen = df.loc[(df["yas"] > 25) & (df["maas"] > 4500), "ad"]
print(secilen.tolist())Beklenen çıktı
['Ali', 'Can']
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>df[df["yas"] > 30 and df["maas"] > 0]</code> neden hata verir?
- 30 metin olmalıdır
- Hata vermez
- and bir Series'in tek doğruluk değerini ister; & ve parantez gerekir Doğru cevap
- Sütun yoktur
Açıklama: Eleman bazlı "ve" için (koşul1) & (koşul2) yazılır.
2 Konuma göre ilk satırı seç.
ilk = df.____[0]
ilk = df.iloc[0]
Açıklama: iloc tam sayı konumlarla çalışır.
3 Seçicileri eşleştir.
| Kavram | Anlamı |
|---|---|
loc |
Etiketle seçim |
iloc |
Konumla seçim |
& |
Eleman bazlı ve |
| |
Eleman bazlı veya |