• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Pandas dropna ile eksik değerli kayıtlar nasıl ele alınır?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 1
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
İlk olarak hangi eksik kayıtları kaldıracağınızı belirleyin: satırda en az bir eksik değer varsa df.dropna(), yalnızca belirli sütunlarda eksik değer aranacaksa subset, tüm değerleri eksik olan satırlar için how='all' kullanılır. Böylece özgün DataFrame’i koruyarak temizlenmiş yeni bir DataFrame elde edebilir, işlem sonunda satır sayısını ve kalan eksik değerleri kontrol edebilirsiniz.

dropna() ne yapar?​


dropna(), pandas DataFrame veya Series içindeki eksik değerleri içeren satır ya da sütunları kaldırır. Varsayılan davranış, eksik değer bulunan satırları silmektir; bu nedenle yalnızca tek bir sütundaki eksiklik bile satırın elenmesine yol açabilir. Burada eksiklik, pandas’ın isna() ile tanıdığı None, NaN veya pd.NA gibi değerlerdir. Boş metin, yalnız boşluk içeren metin ve sonsuzluk kendiliğinden eksik sayılmaz; bunları iş kuralınıza göre ayrıca değerlendirin.

Örnek olarak aşağıdaki varsayımsal DataFrame’de email sütununda eksik değer bulunan ikinci kayıt vardır:

Python:
import pandas as pd

df = pd.DataFrame({
    "ad": ["Ayşe", "Mehmet", "Zeynep"],
    "email": ["[email protected]", None, "[email protected]"],
    "puan": [85, 90, None]
})

temiz_df = df.dropna()
print(temiz_df)

temiz_df içinde yalnızca Ayşe’nin kaydı kalır. Mehmet’in email değeri, Zeynep’in ise puan değeri eksik olduğu için her iki satır da kaldırılır. Bu işlem eksik hücreleri doldurmaz; eksik hücre içeren kayıtları seçtiğiniz kurala göre eler.

En sık kullanılan dropna seçenekleri​


Aynı yöntem farklı parametrelerle farklı kayıtları kaldırır. Hangi bilgiyi zorunlu kabul ettiğinize göre seçim yapın.
KullanımEtkisi
df.dropna()Herhangi bir sütununda eksik değer bulunan satırları kaldırır.
df.dropna(how='all')Yalnızca bütün değerleri eksik olan satırları kaldırır.
df.dropna(subset=['email'])Sadece email sütununu kontrol eder; bu sütun eksikse satırı kaldırır.
df.dropna(axis=1)Eksik değer içeren sütunları kaldırır.
df.dropna(thresh=2)En az iki eksik olmayan değeri bulunan satırları korur.
Bazı seçenekler birlikte kullanılabilir; ancak how ile thresh aynı çağrıda birlikte verilemez. Örneğin bir kaydın email değeri zorunlu, puan değeri ise isteğe bağlıysa tüm sütunları denetleyen varsayılan dropna() yerine yalnızca email sütununu belirtmek daha uygundur. Böylece puanı eksik olan kayıtlar gereksiz yere silinmez.

Belirli sütunlara göre kayıt silme​


Zorunlu alanları subset içinde belirtin. Aşağıdaki örnekte yalnızca adı veya e-posta adresi eksik olan kayıtlar kaldırılır; puan eksikliği silme koşulu değildir.

Python:
import pandas as pd

df = pd.DataFrame({
    "ad": ["Ayşe", "Mehmet", "Zeynep"],
    "email": ["[email protected]", None, "[email protected]"],
    "puan": [85, 90, None]
})

temiz_df = df.dropna(subset=["ad", "email"])
print(temiz_df)

Çıktıda Ayşe ve Zeynep kalır. Zeynep’in puanı eksik olmasına rağmen e-posta adresi bulunduğu için kaydı korunur. Bu sonuç, subset ile yalnızca iş açısından gerekli sütunların denetlendiğini gösterir; diğer sütunlardaki eksikliklerin çözüldüğü anlamına gelmez.

Özgün DataFrame’i koruyarak uygulama​


Varsayılan kullanım yeni bir DataFrame döndürür ve df değişkenini değiştirmez. Temizlenmiş veriyi kullanmak için sonucu yeni bir değişkene atayın:

Python:
temiz_df = df.dropna(subset=["email"])

Özgün değişkenin doğrudan güncellenmesini istiyorsanız inplace=True kullanılabilir:

Python:
df.dropna(subset=["email"], inplace=True)

Dikkat: inplace=True sonrasında silinen satırlara df üzerinden erişemezsiniz. Karar vermeden önce özgün veriyi korumak, sonucu karşılaştırmak veya işlemi geri almak gerekebileceği için yeni değişkene atama genellikle daha güvenlidir.

İşlemden sonra sonucu kontrol etme​


Eksik kayıtların beklediğiniz şekilde ele alındığını doğrulamak için önce ve sonra satır sayısını, ardından kalan eksik değerleri inceleyin.
  1. İşlem öncesi satır sayısını kaydedin. len(df) veya df.shape[0] ile kaç kaydınız olduğunu görün.
  2. Uygun dropna kuralını çalıştırın. Örneğin yalnızca e-posta adresi zorunluysa df.dropna(subset=['email']) kullanın.
  3. Yeni sonucu satır sayısıyla karşılaştırın. len(temiz_df) değeri azaldıysa kayıtlar elenmiştir; azalma yoksa seçtiğiniz sütunlarda eksik değer bulunmuyor olabilir.
  4. Kalan eksikleri sütun bazında kontrol edin. temiz_df.isna().sum() her sütunda kaç eksik değer kaldığını gösterir. Bu değerlerin kalması, subset dışında bırakılan sütunlarda eksiklik olabileceği anlamına gelir.
Örneğin subset=['email'] kullandıktan sonra puan sütununda eksik değer kalması hata değildir; çünkü işlem yalnızca e-posta sütununu zorunlu kabul etmiştir. Puan da zorunluysa sütun adını listeye ekleyin veya eksik puanları silmek yerine alanın anlamına uygun başka bir yöntemle doldurun.

Silmek yerine ne zaman başka yöntem kullanılmalı?​


Eksik kayıtların silinmesi veri kümesini küçültür ve özellikle çok sayıda eksik değer varsa analiz sonucunu etkileyebilir. Bir satırın diğer bilgileri değerliyse dropna() kullanmadan önce eksik değerleri fillna() ile uygun bir değerle doldurmayı değerlendirebilirsiniz. Ancak ortalama, sabit değer veya başka bir tahmin kullanımı veri alanının anlamına uygun olmalıdır; dropna() otomatik olarak hangi seçeneğin doğru olduğuna karar vermez.

Pratik seçim şu şekilde yapılabilir: kayıt ancak belirli bir alan olmadan kullanılamıyorsa subset ile o alanı zorunlu tutun; satırın hiçbir yararlı bilgisi kalmadığında how='all' kullanın; her eksik hücreyi kesinlikle istemiyorsanız varsayılan dropna() davranışını seçin. İşlemden sonra satır sayısını ve isna().sum() çıktısını birlikte kontrol etmeden temizleme işleminin amacına ulaştığını varsaymayın.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst