CodeBlanks Logo Icon CodeBlanks

Veri temizleme

Eksik verileri tespit edip temizlersin.

Boşlukları doldurma

İki boş hücre var: 2. günün nemi ve 3. günün sıcaklığı. Satırları atmak verinin %40'ını kaybetmek olur; bunun yerine her sütunu kendi ortalamasıyla dolduracağız. np.nanmean, nan'ları yok sayarak ortalama alır:

print(np.nanmean(veri, axis=0))   # [ 3.   23.   48.75]
print(veri.mean(axis=0))          # [ 3.  nan  nan]  nan bulaşıcıdır

nan içeren her işlem nan verir; bu yüzden nan-güvenli fonksiyonlar gerekir.

np.where ile seçerek doldurma

np.where(koşul, a, b), koşul doğruysa a'dan, değilse b'den alır. Yayınlama sayesinde sütun ortalamaları her satıra uygulanır:

ort = np.nanmean(veri, axis=0)
veri = np.where(np.isnan(veri), ort, veri)
print(np.isnan(veri).sum())   # 0

Aynı işi scikit-learn'de SimpleImputer(strategy="mean") yapar; burada mantığını elle gördün.

Uygulama Temizle

veri'deki nan değerleri np.nanmean(veri, axis=0) ve np.where ile doldur. Sıcaklık sütununu (veri[:, 1]) ve nem sütununu (veri[:, 2]) alt alta yazdır.

Başlangıç kodu

model.py
import io
import numpy as np

csv = "gun,sicaklik,nem\n1,20,40\n2,22,\n3,,60\n4,26,50\n5,24,45\n"
veri = np.genfromtxt(io.StringIO(csv), delimiter=",", skip_header=1)

# buraya yaz

Örnek çözüm

model.py
import io
import numpy as np

csv = "gun,sicaklik,nem\n1,20,40\n2,22,\n3,,60\n4,26,50\n5,24,45\n"
veri = np.genfromtxt(io.StringIO(csv), delimiter=",", skip_header=1)

ort = np.nanmean(veri, axis=0)
veri = np.where(np.isnan(veri), ort, veri)
print(veri[:, 1])
print(veri[:, 2])

Beklenen çıktı

[20. 22. 23. 26. 24.]
[40.   48.75 60.   50.   45.  ]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>np.array([1, np.nan, 3]).mean()</code> neyi verir?

  • 2.0
  • 1.33
  • Hata
  • nan Doğru cevap

Açıklama: nan içeren toplam nan olur; nanmean ise 2.0 verirdi.

2 nan değerleri yok sayarak sütun ortalamalarını al.

Soru
ort = np.____(veri, axis=0)
Cevap
ort = np.nanmean(veri, axis=0)

Açıklama: nanmean, nan olmayan değerlerin ortalamasıdır.

3 Fonksiyonları eşleştir.

Kavram Anlamı
np.nanmean nan'sız ortalama
np.where Koşullu seçim
np.isnan nan maskesi
x.mean() nan varsa nan döner

Başlangıç bölümündeki tüm dersler