Eksik Değerleri Kaldırma
Eşik değerini ve dikkate alınacak sütun alt kümesini denetleyerek NaN içeren satırları veya sütunları dropna() ile kaldırın.
Eksik Değerleri Kaldırma, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Eksik Değerler Ne Zaman Kaldırılmalı?
Eksik değer içeren satırları kaldırmak en basit atama stratejisidir; ancak bu yalnızca veriler Tamamen Rastgele Eksik (MCAR) olduğunda geçerlidir. Yani bir değerin eksik olma olasılığı ne eksik değerin kendisiyle ne de başka bir değişkenle ilişkilidir. Eksik veriler sistematikse (örneğin düşük gelirli katılımcılar maaş alanını boş bırakıyorsa), bu verileri kaldırmak yanlılığa yol açar. Kaldırmaya karar vermeden önce eksiklik örüntüsünü mutlaka inceleyin.
import pandas as pd
import numpy as np
# Example: randomly missing salary data (MCAR-like)
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Carol', 'Dave'],
'salary': [50000, np.nan, 70000, np.nan]
})
print('Before drop:', df.shape) # (4, 2)
print(df)dropna() — Temel Kullanım
DataFrame.dropna(), varsayılan olarak en az bir NaN değeri içeren tüm satırları kaldırır. Yeni bir DataFrame döndürür; inplace=True iletilmediği sürece özgün DataFrame değişmez. Küçük ve orta boyutlu veri kümelerinde bu varsayılan davranış, hızlı bir ilk veri temizleme adımı olarak çoğu zaman uygundur.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, 3, np.nan],
'b': [10, 20, np.nan, 40],
'c': [100, 200, 300, 400]
})
cleaned = df.dropna()
print(cleaned)
# a b c
# 0 1.0 10.0 100
print('Original shape:', df.shape) # (4, 3)
print('Cleaned shape:', cleaned.shape) # (1, 3)how='all' — Yalnızca Tümü NaN Olan Satırları Kaldırma
how='all' iletmek, dropna işlevine bir satırı yalnızca o satırdaki her bir değer NaN ise kaldırmasını söyler. Bu, varsayılan how='any' davranışından çok daha az katıdır. Veri kümenizde seyrek satırlar varsa how='all' kullanın: bir miktar veri içeren satırları tutmak anlamlıdır, tamamen boş satırlar ise açıkça gereksiz kayıtlardır.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, np.nan],
'b': [2, np.nan, np.nan],
'c': [3, 4, np.nan]
})
# Row 2 has ALL NaN — dropped
# Row 1 has partial NaN — kept with how='all'
cleaned = df.dropna(how='all')
print(cleaned)
# a b c
# 0 1.0 2.0 3.0
# 1 NaN NaN 4.0subset= — Yalnızca Belirli Sütunları Denetleme
subset parametresi, bir satırın kaldırılıp kaldırılmayacağına karar verilirken NaN açısından denetlenecek sütunları sınırlar. Bu, yalnızca belirli sütunların kritik olduğu durumlarda son derece kullanışlıdır; örneğin user_id veya target sütunu eksikse bir satır kaldırılabilir, ancak isteğe bağlı özellik sütunlarındaki NaN kabul edilebilir.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'user_id': [1, np.nan, 3],
'score': [88, 95, np.nan],
'notes': ['ok', 'good', np.nan]
})
# Drop row only if user_id is missing — score and notes NaN are ok
cleaned = df.dropna(subset=['user_id'])
print(cleaned)
# user_id score notes
# 0 1.0 88.0 ok
# 2 3.0 NaN NaNthresh= — En Az Null Olmayan Değer Gereksinimi
thresh parametresi, bir satırı yalnızca en az thresh adet NaN olmayan değer içeriyorsa tutar. Bu yaklaşım, how='any' veya how='all' seçeneklerinden daha inceliklidir: '5 sütunun en az 3'ünde veri varsa satırı tut' diyebilirsiniz. Bir miktar seyrekliğin beklendiği, ancak tamamen boş satırların kaldırılması gereken veri kümelerinde kullanışlıdır.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, np.nan],
'b': [2, 3, np.nan],
'c': [4, np.nan, np.nan],
'd': [5, 6, np.nan]
})
# Keep rows with at least 3 non-null values
cleaned = df.dropna(thresh=3)
print(cleaned)
# a b c d
# 0 1.0 2.0 4.0 5.0
# 1 NaN 3.0 NaN 6.0Satırlar Yerine Sütunları Kaldırma
Varsayılan olarak dropna(), satırları kaldırır (axis=0). Bunun yerine NaN içeren sütunları kaldırmak için axis=1 (veya axis='columns') iletin. Bu, çoğunlukla boş olan ve çok az bilgi sağlayan bir sütun için uygundur; sütunu tutmak yalnızca bir modele veya özet tablosuna gürültü ekler.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'id': [1, 2, 3],
'name': ['A', 'B', 'C'],
'temp': [np.nan, np.nan, np.nan], # completely empty column
'score': [80, 90, 85]
})
# Drop columns that have any NaN
cleaned = df.dropna(axis=1)
print(cleaned)
# id name score
# 0 1 A 80
# 1 2 B 90
# 2 3 C 85Eksik Değer Eşiğine Göre Sütunları Kaldırma
Güçlü bir yaklaşım, belirli bir eksik değer yüzdesini aşan sütunları kaldırmaktır. Sütun başına eksik oranını hesaplayın, eşiğinizin üzerindeki sütunları (örneğin %50) belirleyin ve bunları df.drop(columns=cols_to_drop) ile kaldırın. Bu, tek bir NaN içeren her sütunu kaldıran dropna(axis=1) yaklaşımından daha hedeflidir.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, np.nan, 4, 5],
'b': [np.nan, np.nan, np.nan, np.nan, 5], # 80% missing
'c': [1, np.nan, 3, 4, 5] # 20% missing
})
threshold = 0.5
high_missing = df.columns[df.isna().mean() > threshold]
print('Dropping:', high_missing.tolist()) # ['b']
cleaned = df.drop(columns=high_missing)
print(cleaned)dropna() Sonrasında Dizini Koruma
dropna() çağrıldıktan sonra özgün satır dizinleri korunur; yani 1. ve 3. satırlar kaldırılmışsa kalan DataFrame'in dizinleri 0, 2, 4 olur. Bu çoğu zaman istenir; çünkü özgün konumlara geri dönmenizi sağlar. Ancak bazen 0'dan başlayan temiz bir sıralı dizin isteyebilirsiniz. Satırları yeniden numaralandırmak için kaldırma işleminden sonra .reset_index(drop=True) çağırın.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'val': [1, np.nan, 3, np.nan, 5]
})
cleaned = df.dropna()
print('With original index:')
print(cleaned) # indices 0, 2, 4
cleaned_reset = cleaned.reset_index(drop=True)
print('With reset index:')
print(cleaned_reset) # indices 0, 1, 2Bir İş Akışında dropna()
dropna() bir DataFrame döndürdüğü için bir yöntem zincirine doğal biçimde eklenir. Yükleme ve analiz adımları arasına dropna() eklemek, geçici değişkenler kullanmadan iş akışını okunabilir tutan temiz bir yaklaşımdır. Ayrıca bunu query(), assign() ve groupby() ile zincirleyebilirsiniz.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'region': ['East', 'West', None, 'East'],
'revenue': [100, np.nan, 300, 400]
})
result = (
df
.dropna(subset=['region', 'revenue'])
.groupby('region')['revenue'].sum()
)
print(result)
# region
# East 500.0
# dtype: float64Ne Zaman Kaldırmamalı: Doldurmayı Tercih Etme
Satırları kaldırmak veri kaybına yol açar. Eksik değer oranı %5-10'dan az olan sütunlarda doldurma (atama), genellikle kaldırmaktan daha iyidir. Ayrıca eksik değerler hedef değişkenle ilişkiliyse (Rastgele Olmayan Eksik, MNAR), bunları kaldırmak yanlılığa yol açar. Genel kural şudur: yalnızca eksiklik gerçekten rastgeleyse, veri kümesi kaybolan satırların önem taşımayacağı kadar büyükse ve sütun ya da satır geri kazanılabilir bir bilgi sağlamıyorsa kaldırma işlemi yapın.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'user': ['Alice', 'Bob', 'Carol', 'Dave'],
'age': [25, np.nan, 30, np.nan]
})
missing_pct = df['age'].isna().mean()
print(f'Missing age: {missing_pct:.0%}') # 50%
# 50% missing is high — consider imputing instead of dropping
# df['age'].fillna(df['age'].median(), inplace=True)Uygulamalı Temizleme İş Akışı
Uygulamalı bir eksik değer iş akışı, birden çok dropna stratejisini birleştirir: önce tamamen boş satırları kaldırın, ardından %60'tan fazlası boş olan sütunları kaldırın, sonra kritik ID veya hedef sütunları eksik olan satırları kaldırın ve son olarak geriye kalan dağınık NaN değerlerini doldurun. Bu katmanlı yaklaşım, mümkün olduğunca fazla veriyi korur.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'id': [1, 2, 3, np.nan],
'feature': [1.0, np.nan, 3.0, 4.0],
'useless': [np.nan, np.nan, np.nan, np.nan]
})
clean = (
df
.dropna(how='all') # remove all-NaN rows
.drop(columns=df.columns[df.isna().mean() > 0.9]) # remove >90% empty cols
.dropna(subset=['id']) # must have an ID
)
print(clean)
# id feature
# 0 1.0 1.0
# 1 2.0 NaN
# 2 3.0 3.0Hızlı Denetim
Eksik değerleri dropna() ile kaldırma konusundaki anlayışınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: dropna() varsayılan olarak NaN içeren satırları kaldırır; how='all' yalnızca tamamen boş satırları kaldırır; subset= denetimi belirli sütunlarla sınırlar; thresh= ise en az sayıda null olmayan değer içeren satırları tutar. Satırlar yerine sütunları kaldırmak için axis=1 kullanın. Sırada eksik değerleri kaldırmak yerine fillna() ile doldurmayı ele alacağız.
Sıkça Sorulan Sorular
“Eksik Değerleri Kaldırma” dersi ücretsiz mi?
Evet — “Eksik Değerleri Kaldırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Eksik Değerleri Kaldırma” dersinde ne öğreneceğim?
Eşik değerini ve dikkate alınacak sütun alt kümesini denetleyerek NaN içeren satırları veya sütunları dropna() ile kaldırın. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Eksik Değerleri Kaldırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Eksik Değerleri Belirleme
- Eksik Değerleri Kaldırma
- Eksik Değerleri Doldurma
- Enterpolasyon ve İleri Düzey Atama