Ana içeriğe geç

R'da Eksik Değerleri Yönetmek için na.rm Nasıl Kullanılır

Yaygın R fonksiyonlarında eksik (NA) değerleri hariç tutmak için na.rm = TRUE ayarlanır. Bu, doğru istatistikler hesaplamamıza ve sonuçlarımızın güvenilirliğini artırmamıza yardımcı olur.
· 8 dk. oku

Yapay Zeka ile Keşfedin

Veriler, kritik iş kararlarını yönlendirmek için endüstriyel bir hızla üretilip tüketiliyor. Ancak, veri analizindeki yaygın zorluklardan biri eksik değerlerin varlığıdır. Bu durum sonuçları çarpıtarak, herhangi bir veri analisti için bu değerleri etkin biçimde ele almayı kaçınılmaz kılar. R'da eksik değerleri yönetmek için temel araçlardan biri na.rm parametresidir.

Bu yazı, eksik verileri ele almanın önemini, R'da na.rm'in nasıl çalıştığını, çeşitli fonksiyonlarda kullanımını örneklerle açıklıyor ve eksik verileri tespit edip ele almak için bazı alternatif tekniklerle sonlanıyor.

Kısa Cevap: na.rm nedir?

R'daki na.rm parametresi "NA remove" anlamına gelir ve hesaplamalar sırasında NA (eksik) değerleri yok sayar. na.rm = TRUE olarak ayarlandığında, mean(), sum(), min(), max(), median() ve sd() gibi fonksiyonlar sonuçları eksik değerlerden etkilenmeden hesaplar.

Küçük harfle yazılan na.rm parametresi, bir Boole değeri içerir—TRUE veya FALSE. na.rm = TRUE olarak ayarladığımızda R, hesaplamalardan NA değerlerini hariç tutar. Bu parametre olmadan, veride eksik değerler varsa fonksiyonlar NA döndürür. Aşağıya bakın.

vector_with_na <- c(1, 2, NA)

sum(vector_with_na, na.rm = TRUE) # removes NA values — returns 3
sum(vector_with_na) # includes NA values — returns NA
sum(vector_with_na, na.rm = FALSE) # includes NA values — returns NA

Temel R programlaması hakkında daha fazlası için Introduction to R kursuna göz atın.

Neden na.rm kullanılır?

Eksik değerleri ele almak, doğru sonuçları sağlamak için veri analizinde kritik öneme sahiptir; çünkü bu değerler istatistiksel hesaplamaları önemli ölçüde etkileyebilir ve farkında olmadan yanlış çıkarımlara yol açabilir. na.rm kullanmak, bu eksik değerleri atlayarak hatalardan kaçınmayı kolaylaştırır; böylece güvenilir hesaplamalar yapar ve veri bütünlüğünü koruruz.

Data Cleaning in R kursu, veri analizi becerilerimizi ilerletmede değerlidir.

na.rm Kullanan Yaygın Fonksiyonlar: Bazı Pratik Örnekler

Şimdi R'da na.rm'in nasıl kullanılacağını anlayalım. Birçok R fonksiyonu na.rm parametresini içerir (varsayılan değeri FALSE). İşte bazı yaygın örnekler:

sum()

Adından da anlaşılacağı gibi, sum() bir vektördeki değerlerin toplamını hesaplar. Bu eğitim boyunca kullanacağımız vector_with_na adlı bir vektör oluşturalım.

vector_with_na <- c(1, 2, NA, 4)

sum(vector_with_na) 
# Returns NA

sum(vector_with_na, na.rm = TRUE) 
# Returns 7

mean()

Aynı örneği kullanarak, mean() fonksiyonu ortalamayı, yani vektörümüzdeki değerlerin aritmetik ortalamasını hesaplar.

mean(vector_with_na) 
# Returns NA

mean(vector_with_na, na.rm = TRUE) 
# Returns 2.33

sd()

vector_with_na ile devam ederek, sd() vektörün standart sapmasını hesaplar.

sd(vector_with_na) 
# Returns NA

sd(vector_with_na, na.rm = TRUE) 
# Returns 1.53

min()

min() en küçük değeri bulur.

min(vector_with_na) 
# Returns NA

min(vector_with_na, na.rm = TRUE) 
# Returns 1

max()

max() en büyük değeri bulur.

max(vector_with_na) 
# Returns NA

max(vector_with_na, na.rm = TRUE) 
# Returns 4

median()

median(), sıralandığında ortada kalan değeri bulur.

median(vector_with_na) 
# Returns NA

median(vector_with_na, na.rm = TRUE) 
# Returns 2

na.rm = TRUE olmadığında bu toplulaştırma fonksiyonlarının tümünün NA döndürdüğünü unutmayın.

na.rm = TRUE ayarlanarak bu fonksiyonlar NA değerlerini hariç tutar ve doğru, anlamlı hesaplamalara olanak sağlar. Bu fonksiyonların kullanımını ve söz dizimini daha iyi anlamak için R Programming Fundamentals beceri yolu iyi bir kaynak olabilir.

Farklı Veri Yapılarında Eksik Değerleri Ele Alma

Farklı veri yapılarında eksik değerlerin nasıl ele alınacağına bir göz atalım. Devam etmeden önce, R veri yapıları hakkında daha fazla bilgi edinmek isterseniz R Programlama Dilinde Veri Yapılarına Hâkim Olma rehberimize göz atın. 

Vektörler

Vektörlerde, eksik değerleri hariç tutmak için na.rm doğrudan fonksiyonların içinde kullanılabilir. Önceki bölümde paylaşılan örneklerin tümü, vektörler üzerinde na.rm kullanımına örnektir.

Veri çerçeveleri

Veri çerçevelerinde, na.rm belirli sütunlarda kullanılan fonksiyonların içinde veya aşağıda gösterildiği gibi apply() ile satırlar genelinde uygulanabilir:

apply(X, MARGIN, FUN)

Burada:

  • X: dizi, veri çerçevesi veya matris

  • MARGIN: fonksiyonun nereye uygulanacağını belirtir:

    • MARGIN=1 satır bazlı işlemler için

    • MARGIN=2 sütun bazlı işlemler için

    • MARGIN=c(1,2) hem satır hem sütun işlemleri için

  • FUN: uygulanacak fonksiyonu belirtir. mean(), median(), sum(), min(), max() gibi yerleşik fonksiyonlar ve kullanıcı tanımlı fonksiyonlar uygulanabilir.

Bu eğitim boyunca referans almak üzere bir veri çerçevesi oluşturalım.

dataframe_with_na <- data.frame(col1 = c(1, NA, 3, 6), col2 = c(4, 5, NA, 7))

print(dataframe_with_na)
# Returns
#   col1 col2
# 1    1    4
# 2   NA    5
# 3    3   NA
# 4    6    7

apply(dataframe_with_na, 1, mean)
# Returns
# [1] 2.5  NA  NA 6.5

apply(dataframe_with_na, 1, mean, na.rm = TRUE)
# Returns
# [1] 2.5 5.0 3.0 6.5

apply(dataframe_with_na, 2, mean)
# Returns
# col1 col2 
#  NA   NA 

apply(dataframe_with_na, 2, mean, na.rm = TRUE)
# Returns   
#   col1     col2 
# 3.333333 5.333333

Listeler

R'daki lapply() fonksiyonu, bir listede, vektörde veya veri çerçevesinde yer alan her bir elemana belirtilen bir fonksiyonu uygulamak için kullanılır ve aynı uzunlukta bir liste döndürür. Bu fonksiyon bir MARGIN parametresi gerektirmez; işlemi otomatik olarak tüm öğelere uygular.

Sözdizimi:

lapply(vector_with_na, fun)

Burada:

  • vector_with_na: Girdi listesi, vektörü veya veri çerçevesi.
  • fun: Her bir girdi veri öğesine uygulanacak fonksiyon.

lapply()'i bir liste örneğiyle anlayalım. Burada, veri çerçevesine (dataframe_with_na) benzer öğelere sahip koleksiyonlardan (item_1 ve item_2) oluşan bir listemiz var. Amacımız, her koleksiyonun ortalamasını bulmak.

list_with_na <- list(item_1=c(1, NA, 3, 6), item_2=c(4, 5, NA, 7))

lapply(list_with_na, mean)
# Returns
# $item_1
# [1] NA
# 
# $item_2
# [1] NA

lapply(list_with_na, mean, na.rm =TRUE)
# Returns
# $item_1
# [1] 3.333333
# 
# $item_2
# [1] 5.333333

sapply() fonksiyonu, lapply()'e benzer ancak bir liste yerine dizi veya matris döndürür. Listedeki (list_with_na) her koleksiyonun değerlerinin ortalamasını hesaplamak için sapply()'i kullanalım.

sapply(list_with_na, mean)
# Returns
# a  b 
# NA NA 

sapply(list_with_na, mean, na.rm = TRUE)

# Returns
# a        b 
# 3.333333 5.333333

Şimdi de veri çerçevesini (dataframe_with_na) ve sapply()'i kullanarak her sütundaki değerlerin toplamını hesaplayalım.

sapply(dataframe_with_na, sum)

# Returns
# col1 col2 
# NA   NA 

sapply(dataframe_with_na, sum, na.rm=TRUE)
# Returns
# col1 col2 
# 10   16

R'da veri işleme hakkında daha geniş bir anlayış için Data Manipulation with dplyr kursu şiddetle tavsiye edilir. Özellikle apply() ailesi konusunda emin değilseniz, R Apply Ailesi Üzerine Rehberimiz'i okuyun.

na.omit() ve complete.cases() ile karşılaştırma

na.omit(): Bu fonksiyon, bir veri çerçevesindeki NA değeri içeren tüm satırları kaldırır. Bunu bir örnekle anlayalım:

na.omit(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 4    6    7

complete.cases(): Öte yandan, complete.cases() herhangi bir NA değeri içermeyen satırları belirler ve her satıra karşılık gelen bir mantıksal değer döndürür (NA içeren satırlar için FALSE ve tersi). Bu, aşağıda gösterildiği gibi veri çerçevesindeki eksik olmayan değerleri filtrelemek için kullanılabilir.

complete.cases(dataframe_with_na)
# Returns
# [1]  TRUE FALSE FALSE  TRUE

dataframe_with_na[complete.cases(dataframe_with_na), ]
# Returns
# col1 col2
# 1    1    4
# 4    6    7

Eksik Değerleri Ele Almada İleri Teknikler

na.rm'in ötesinde, R eksik verileri ele almak için gelişmiş yöntemler sunar:

Eksik değerleri belirlemek için is.na() kullanma

is.na() eksik verileri belirlemek için doğrudan bir vektör veya veri çerçevesi üzerinde uygulanabilir. Her eksik değere karşılık gelen bir TRUE döndürür.

is.na(vector_with_na)
# Returns
# [1] FALSE FALSE  TRUE FALSE

is.na(dataframe_with_na)
# Returns
# col1  col2
# [1,] FALSE FALSE
# [2,]  TRUE FALSE
# [3,] FALSE  TRUE
# [4,] FALSE FALSE

Atama (imputation) yöntemlerini uygulama

Atama, eksik değerleri ortalama veya medyan gibi tahmini değerlerle değiştirmektir; aşağıda gösterildiği gibi:

vector_with_na[is.na(vector_with_na)] <- mean(vector_with_na, na.rm = TRUE)

print(vector_with_na)
# Returns
# [1] 1.000000 2.000000 2.333333 4.000000

dataframe_with_na[is.na(dataframe_with_na)] <- sapply(dataframe_with_na, mean, na.rm=TRUE)
print(dataframe_with_na)
# Returns
# col1     col2
# 1 1.000000 4.000000
# 2 3.333333 5.000000
# 3 3.000000 5.333333
# 4 6.000000 7.000000

summary() fonksiyonunu kullanma

İlginç bir şekilde, summary() fonksiyonu eksik değerleri ele alma açısından na.rm kullanımından farklıdır. Varsayılan olarak, summary() özet istatistikleri hesaplarken eksik değerleri otomatik olarak hariç tutar ve ardından veride bulunan NA sayısını raporlar.

vector_with_na vektörü üzerinde summary()'yi çalıştıralım:

summary(vector_with_na)
#Returns
#   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
#  1.000   1.500   2.000   2.333   3.000   4.000       1

Ve dataframe_with_na veri çerçevesi üzerinde:

summary(dataframe_with_na)
# Returns
# col1           col2     
# Min.   :1.00   Min.   :4.00  
# 1st Qu.:2.50   1st Qu.:4.75  
# Median :3.00   Median :5.00  
# Mean   :3.25   Mean   :5.25  
# 3rd Qu.:3.75   3rd Qu.:5.50  
# Max.   :6.00   Max.   :7.00 

Daha gelişmiş veri işleme teknikleriyle ilgilenenler için Intermediate R kursu derinlemesine içgörüler sunar.

Eksik Değerleri Ele Almada En İyi Uygulamalar

Eksik değerleri etkin şekilde ele almak birkaç en iyi uygulamayı içerir:

Her zaman eksik değerleri kontrol edin

Hesaplamaları gerçekleştirmeden önce eksik verilerin kapsamını belirleyin ve anlayın. Aşağıdaki örnek, veri çerçevesinde toplam 2 eksik değer olduğunu gösterir.

print(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 2   NA    5
# 3    3   NA
# 4    6    7

sum(is.na(dataframe_with_na))
# Returns
# [1] 2

Koşullu kontroller kullanın

Her zaman eksik veri olup olmadığını doğrulayın ve buna göre atama tekniklerini uygulayın; tüm kenar durumlarının iyi ele alındığından emin olun.

if(any(is.na(dataframe_with_na))) {  
  if (class(dataframe_with_na) == "data.frame") {    
   dataframe_with_na[is.na(dataframe_with_na)] <- sapply(dataframe_with_na, median, na.rm=TRUE)      
  }
}

print(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 2    3    5
# 3    3    5
# 4    6    7

Bağlamı göz önünde bulundurun

Verilerin neden eksik olduğunu anlayın ve onları ele almak için uygun yöntemi seçin — kaldırma veya atama.

Veri analizi ve eksik değerleri ele almaya yönelik yapılandırılmış bir yaklaşım için Data Cleaning in R kursu harika bir kaynak olabilir.

Sonuç

na.rm'i anlamak ve kullanmak, güvenilir ve doğru veri analizi sağlamak için anahtardır. R projelerinizde na.rm kullanmayı pratik edin ve eksik verileri kapsamlı bir şekilde ele almak için ileri teknikleri keşfedin.

Daha fazla öğrenme için şu ek kaynakları inceleyin:

Vidhi Chugh

Yazar

Vidhi Chugh

Veri bilimi, ürün ve mühendisliğin kesişiminde çalışarak ölçeklenebilir makine öğrenimi sistemleri geliştiren bir Yapay Zeka Stratejisti ve Etik Uzmanıyım. Dünyadaki "En İyi 200 İş ve Teknoloji Yenilikçisinden" biri olarak listelenmiş bulunuyorum; makine öğrenimini demokratikleştirmek ve bu dönüşümün parçası olabilmeleri için herkes adına jargonu sadeleştirmek misyonuyla çalışıyorum.

Sıkça Sorulan Sorular

R'da na.rm parametresi nedir?

R'daki na.rm parametresi "NA remove" anlamına gelir. TRUE olarak ayarlandığında fonksiyonlara, hesaplamalar sırasında NA (eksik) değerleri yok saymalarını söyleyerek doğru sonuçları güvence altına alır.

na.rm yaygın R fonksiyonlarında nasıl kullanılır?

Eksik değerleri hesaplamalardan hariç tutmak için sum(), mean(), sd(), min(), max() ve median() gibi fonksiyonlarda na.rm = TRUE ayarıyla na.rm kullanabilirsiniz.

Veri analizinde eksik değerleri ele almak neden önemlidir?

Eksik değerler sonuçları çarpıtabilir ve yanlış çıkarımlara yol açabilir. Bunları etkin biçimde ele almak güvenilir hesaplamalar sağlar ve veri bütünlüğünü korur.

R'da na.rm veri çerçeveleri ve listelerle kullanılabilir mi?

Evet, na.rm, apply() gibi fonksiyonlarla veri çerçevelerinde ve lapply() ile sapply() gibi fonksiyonlarla listelerde, bu veri yapıları üzerindeki işlemler sırasında eksik değerleri hariç tutmak için kullanılabilir.

R'da eksik değerleri ele almak için bazı ileri teknikler nelerdir?

na.rm'in ötesinde, ileri teknikler arasında eksik değerleri belirlemek için is.na() kullanımı, bunları değiştirmek için atama (imputation) yöntemlerinin uygulanması ve daha karmaşık veri temizliği için na.omit() ile complete.cases() gibi fonksiyonlardan yararlanmak yer alır.

Konular

İlgili