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

NumPy isnan ile eksik sayısal değerler nasıl bulunur?

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

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni

Eksik sayısal değerleri bulma​


NumPy'de eksik sayısal değerleri bulmak için diziyi np.isnan() işlevine verin. Sonuç, her eleman için True veya False üreten bir Boolean dizisidir; True olan konumlar NaN değerlerini gösterir. Bu maskeyi hem eksik değerlerin yerini bulmak hem de diziyi temizlemek için kullanabilirsiniz.

Temel kullanım​


Ön koşul olarak NumPy'nin kurulu ve içe aktarılmış olması gerekir. Aşağıdaki örnekte np.nan, eksik sayısal değeri temsil eder:

Python:
import numpy as np

sayilar = np.array([12.5, np.nan, 8.0, np.nan, 21.3])

eksik_mi = np.isnan(sayilar)
print(eksik_mi)
print("Eksik değer sayısı:", np.sum(eksik_mi))
print("Eksik değerlerin konumları:", np.where(eksik_mi)[0])

Bu kodun beklenen çıktısı şöyledir:

Kod:
[False  True False  True False]
Eksik değer sayısı: 2
Eksik değerlerin konumları: [1 3]

Burada ikinci ve dördüncü eleman NaN olduğu için karşılık gelen maskelerde True görülür. np.where(eksik_mi)[0] ifadesi, eksik değerlerin sıfırdan başlayan indislerini verir. Bu sonuç eksik değerlerin bulunduğunu gösterir; bu değerlerin neden eksik olduğunu veya hangi gerçek değerin yazılması gerektiğini göstermez.

Eksik değerleri seçmek veya saymak​


Boolean maske, dizinin içinden eksik ya da eksik olmayan değerleri ayırmak için doğrudan kullanılabilir:

Python:
import numpy as np

sayilar = np.array([12.5, np.nan, 8.0, np.nan, 21.3])

eksik_mi = np.isnan(sayilar)

print("Eksik değerler:", sayilar[eksik_mi])
print("Eksik olmayan değerler:", sayilar[~eksik_mi])
print("Eksik değer var mı?", np.any(eksik_mi))
print("Tüm değerler eksik mi?", np.all(eksik_mi))

Beklenen sonuç:

Kod:
Eksik değerler: [nan nan]
Eksik olmayan değerler: [12.5  8.  21.3]
Eksik değer var mı? True
Tüm değerler eksik mi? False

np.any() en az bir NaN olup olmadığını, np.all() ise bütün elemanların NaN olup olmadığını kontrol eder. Eksik olmayan değerlerin tamamını almak için maskenin tersini ~eksik_mi şeklinde kullanabilirsiniz.

Eksik değerleri başka bir değerle değiştirme​


Eksik değerleri örneğin sıfırla değiştirmek istiyorsanız önce maskeyi oluşturup yalnızca True olan konumlara atama yapın:

Python:
import numpy as np

sayilar = np.array([12.5, np.nan, 8.0, np.nan, 21.3])

sayilar[np.isnan(sayilar)] = 0
print(sayilar)

Çıktı:

Kod:
[12.5  0.   8.   0.  21.3]

Sıfır her veri seti için doğru bir anlam taşımaz. Ortalama, medyan veya alanın gerektirdiği başka bir değerle değiştirme kararı veri bağlamına göre verilmelidir; np.isnan() yalnızca eksik konumları bulur.

NaN, sonsuz değer ve diğer eksik gösterimleri arasındaki fark​


np.isnan() yalnızca NaN değerlerini işaretler. Pozitif veya negatif sonsuzluk eksik değer değildir; ancak hesaplamayı bozabileceği için ayrıca kontrol edilebilir. Bunun için np.isfinite() kullanılabilir.
KontrolBulduğu durumÖrnek kullanım
np.isnan(x)NaN olan elemanlarEksik sayısal değerleri bulma
np.isfinite(x)Sonlu olmayan NaN ve sonsuz değerler dışındaki elemanları ayırmaHesaplamaya uygun değerleri seçme
x == NonePython None değerini karşılaştırmaNaN kontrolü yerine geçmez
Örneğin np.isnan(np.array([1.0, np.inf, -np.inf])) sonucu bütün elemanlar için False olur; çünkü sonsuzluk NaN değildir. Hem NaN hem de sonsuz değerleri geçersiz saymak istiyorsanız şu maskeyi kullanabilirsiniz:

Python:
import numpy as np

sayilar = np.array([10.0, np.nan, np.inf, -np.inf, 5.0])

gecerli_mi = np.isfinite(sayilar)
print(gecerli_mi)
print(sayilar[gecerli_mi])

Çıktı:

Kod:
[ True False False False  True]
[10.  5.]

Dikkat edilmesi gereken veri türü​


np.isnan() sayısal dizilerde doğrudan çalışır. Dizi metin, karma nesne veya uygun olmayan bir veri türü içeriyorsa NumPy bir tür hatası verebilir. Böyle bir durumda önce verilerin gerçekten sayısal olup olmadığını ve eksik değerlerin NaN olarak mı, yoksa boş metin veya None olarak mı tutulduğunu kontrol edin.

Örneğin boş metin NaN değildir. Bu nedenle yalnızca np.isnan() çağırmak, veri kaynağındaki tüm eksik gösterimlerini yakalamaz. Önce boş metinleri ve benzeri özel işaretleri uygun biçimde np.nan değerine dönüştürmek, ardından maskeyi uygulamak gerekir.
 

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