CodeBlanks Logo Icon CodeBlanks

Eksik veri

Eksik değerler df.isna() ile bulunur, df.fillna() ya da SimpleImputer ile doldurulur.

Eksik değerleri bulmak

Eksik değer pandas'ta NaN olarak görünür. Önce nerede ve ne kadar olduğuna bakılır:

print(df.isna().sum())        # sütun başına eksik sayısı
print(df.isna().mean() * 100) # yüzde olarak

scikit-learn modellerinin çoğu NaN içeren veriyle eğitilemez ve ValueError verir; bu yüzden eksikler mutlaka ele alınmalıdır.

Atmak mı, doldurmak mı?

Az sayıda satırda eksik varsa atılabilir; çoksa veri kaybı büyür ve doldurmak daha iyidir:

df.dropna()                          # eksikli satırları at
df["yas"].fillna(df["yas"].median()) # medyanla doldur

from sklearn.impute import SimpleImputer
imp = SimpleImputer(strategy="mean")
X = imp.fit_transform(X)

SimpleImputer eğitim verisinden öğrendiği değeri test verisine de aynen uygular; böylece test bilgisi eğitime sızmaz.

Uygulama Eksikleri doldur

SimpleImputer(strategy="mean") ile X'teki np.nan değerlerini doldur ve sonucu yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.impute import SimpleImputer

X = np.array([[1, 10], [np.nan, 20], [3, np.nan]])

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.impute import SimpleImputer

X = np.array([[1, 10], [np.nan, 20], [3, np.nan]])

imp = SimpleImputer(strategy="mean")
print(imp.fit_transform(X))

Beklenen çıktı

[[ 1. 10.]
 [ 2. 20.]
 [ 3. 15.]]

Soru ve cevaplar

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

1 Eksik değer içeren veriyle <code>LinearRegression().fit</code> çağrılırsa ne olur?

  • Eksikleri sıfır sayar
  • Eksik satırları atlar
  • Uyarı verip devam eder
  • ValueError verir Doğru cevap

Açıklama: Eksikleri önce atmak ya da doldurmak gerekir.

2 Eksikleri sütun ortalamasıyla dolduran nesneyi oluştur.

Soru
imp = SimpleImputer(strategy=____)
Cevap
imp = SimpleImputer(strategy="mean")

Açıklama: strategy "mean", "median", "most_frequent" ya da "constant" olabilir.

3 Araçları eşleştir.

Kavram Anlamı
isna() Eksikleri işaretler
dropna() Eksikli satırları atar
fillna() Eksikleri doldurur
SimpleImputer Eğitilebilir doldurucu

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