R: na.omit & amp में गुम मान (NA) को कैसे बदलें; na.rm

विषय - सूची:

Anonim

डेटा विज्ञान में अनुपलब्ध मान तब उत्पन्न होता है जब डेटा फ्रेम के एक कॉलम में अवलोकन गायब होता है या इसमें संख्यात्मक मान के बजाय एक वर्ण मान होता है। डेटा से सही निष्कर्ष निकालने के लिए लापता मानों को गिराया जाना चाहिए या प्रतिस्थापित किया जाना चाहिए।

इस ट्यूटोरियल में, हम सीखेंगे कि कैसे dplyr लाइब्रेरी के साथ लापता मूल्यों से निपटना है। डेटा विश्लेषण का एहसास करने के लिए dplyr पुस्तकालय एक पारिस्थितिकी तंत्र का हिस्सा है।

इस ट्यूटोरियल में, आप सीखेंगे

  • म्यूटेट ()
  • छूटे हुए मान (NA) को छोड़ दें
  • मीन और मेडियन के साथ इंप्यूट मिसिंग वैल्यूज़ (NA)

म्यूटेट ()

Dplyr लाइब्रेरी में चौथी क्रिया नए वेरिएबल को बनाने या किसी मौजूदा वैरिएबल के मूल्यों को बदलने में सहायक है।

हम दो भागों में आगे बढ़ेंगे। हम सीखेंगे कि कैसे:

  • डेटा फ्रेम से गायब मानों को बाहर करें
  • मतलब और मंझले के साथ लापता मूल्यों को लागू करें

क्रिया उत्परिवर्तन () का उपयोग करना बहुत आसान है। हम इस वाक्य रचना के बाद एक नया चर बना सकते हैं:

mutate(df, name_variable_1 = condition,… )arguments:-df: Data frame used to create a new variable-name_variable_1: Name and the formula to create the new variable-… : No limit constraint. Possibility to create more than one variable inside mutate()

छूटे हुए मान (NA) को छोड़ दें

लापता डिपॉजिट को हटाने के लिए एक सरल तरीका है। डेटा से सभी एनए को छोड़ना आसान है लेकिन इसका मतलब यह नहीं है कि यह सबसे सुरुचिपूर्ण समाधान है। विश्लेषण के दौरान, लापता मूल्यों से निपटने के लिए विभिन्न तरीकों का उपयोग करना बुद्धिमान है

लापता टिप्पणियों की समस्या से निपटने के लिए, हम टाइटैनिक डेटासेट का उपयोग करेंगे। इस डेटासेट में, हम त्रासदी के दौरान यात्रियों की जानकारी तक पहुँच सकते हैं। इस डेटासेट में कई NA हैं जिनका ध्यान रखना आवश्यक है।

हम इंटरनेट से सीएसवी फ़ाइल अपलोड करेंगे और फिर जांचें कि कौन से कॉलम में एनए है। गुम डेटा के साथ कॉलम वापस करने के लिए, हम निम्नलिखित कोड का उपयोग कर सकते हैं:

आइए डेटा अपलोड करें और लापता डेटा को सत्यापित करें।

PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/test.csv"df_titanic <- read.csv(PATH, sep = ",")# Return the column names containing missing observationslist_na <- colnames(df_titanic)[ apply(df_titanic, 2, anyNA) ]list_na

आउटपुट:

## [1] "age" "fare"

यहाँ,

colnames(df_titanic)[apply(df_titanic, 2, anyNA)]

उन स्तंभों का नाम देता है जिनके पास डेटा नहीं है।

कॉलम की आयु और किराया में लापता मूल्य हैं।

हम उन्हें na.omit () के साथ छोड़ सकते हैं।

library(dplyr)# Exclude the missing observationsdf_titanic_drop <-df_titanic %>%na.omit()dim(df_titanic_drop)

आउटपुट:

## [1] 1045 13

नए डेटासेट में मूल डेटासेट के साथ 1309 की तुलना में 1045 पंक्तियाँ हैं।

मीन और मेडियन के साथ मिसिंग डेटा को इम्प्रूव करें

हम माध्य या माध्य के साथ लापता मान (पॉप्युलेट) भी कर सकते हैं। माध्य और माध्यिका के लिए दो अलग-अलग चर बनाने के लिए एक अच्छा अभ्यास है। एक बार बन जाने के बाद, हम गुम हुए मूल्यों को नवगठित चर के साथ बदल सकते हैं।

हम NA के साथ कॉलम के माध्य की गणना करने के लिए लागू विधि का उपयोग करेंगे। एक उदाहरण देखते हैं

चरण 1) पहले ट्यूटोरियल में, हमने सूची में सूची में लापता मानों के साथ कॉलम नाम संग्रहीत किया था जिन्हें list_na कहा जाता है। हम इस सूची का उपयोग करेंगे

चरण 2) अब हमें तर्क के साथ माध्य की गणना करने की आवश्यकता है na.rm = TRUE। यह तर्क अनिवार्य है क्योंकि स्तंभों में डेटा गायब है, और यह आर को उन्हें अनदेखा करने के लिए कहता है।

# Create meanaverage_missing <- apply(df_titanic[,colnames(df_titanic) %in% list_na],2,mean,na.rm = TRUE)average_missing

कोड स्पष्टीकरण:

हम लागू पद्धति में 4 तर्क पास करते हैं।

  • df: df_titanic [, colnames (df_titanic)%%% list_na]। यह कोड list_na ऑब्जेक्ट (यानी "आयु" और "किराया") से कॉलम नाम लौटाएगा
  • 2: कॉलम पर फ़ंक्शन की गणना करें
  • माध्य: माध्य की गणना करें
  • na.rm = TRUE: लापता मानों को अनदेखा करें

आउटपुट:

## age fare## 29.88113 33.29548

हमने गुम टिप्पणियों वाले स्तंभों का सफलतापूर्वक निर्माण किया। इन दो मूल्यों का उपयोग लापता टिप्पणियों को बदलने के लिए किया जाएगा।

चरण 3) NA मान बदलें

Dplyr लाइब्रेरी से क्रिया उत्परिवर्तन एक नया चर बनाने में उपयोगी है। हम मूल स्तंभ को बदलना नहीं चाहते हैं, इसलिए हम NA के बिना एक नया चर बना सकते हैं। म्यूट का उपयोग करना आसान है, हम सिर्फ एक चर नाम चुनते हैं और परिभाषित करते हैं कि इस चर को कैसे बनाया जाए। यहाँ पूरा कोड है

# Create a new variable with the mean and mediandf_titanic_replace <- df_titanic %>%mutate(replace_mean_age = ifelse(is.na(age), average_missing[1], age),replace_mean_fare = ifelse(is.na(fare), average_missing[2], fare))

कोड स्पष्टीकरण:

हम अनुसरण के रूप में दो चर बनाते हैं, प्रतिस्थापन_मेज_एज और रिप्लेसमैंट_मैंफेज:

  • रिप्ले_मैं_एज = आइफेल (is.na (आयु), औसत_मिसिंग [१], आयु)
  • रिप्ले_मैंन_फेयर = इफलेस (is.na (किराया), औसत_मिसिंग [२], किराया)

यदि स्तंभ की आयु में लापता मान हैं, तो औसत_मिसिंग (उम्र का मतलब) के पहले तत्व के साथ बदलें, अन्यथा मूल मान रखें। किराया के लिए एक ही तर्क

sum(is.na(df_titanic_replace$age))

आउटपुट:

## [1] 263

प्रतिस्थापन करें

sum(is.na(df_titanic_replace$replace_mean_age))

आउटपुट:

## [1] 0 

मूल स्तंभ की आयु में 263 लापता मान हैं जबकि नए बनाए गए चर ने उन्हें चर युग के माध्यम से बदल दिया है।

चरण 4) हम लापता टिप्पणियों को मंझला के साथ भी बदल सकते हैं।

median_missing <- apply(df_titanic[,colnames(df_titanic) %in% list_na],2,median,na.rm = TRUE)df_titanic_replace <- df_titanic %>%mutate(replace_median_age = ifelse(is.na(age), median_missing[1], age),replace_median_fare = ifelse(is.na(fare), median_missing[2], fare))head(df_titanic_replace)

आउटपुट:

चरण 5) एक बड़ा डेटा सेट में बहुत सारे लापता मूल्य हो सकते हैं और उपरोक्त विधि बोझिल हो सकती है। हम उपर्युक्त सभी चरणों को कोड की एक पंक्ति में sapply () विधि का उपयोग करके निष्पादित कर सकते हैं। हालांकि हमें मतलबी और औसत दर्जे का नहीं पता होता।

sapply एक डेटा फ़्रेम नहीं बनाता है, इसलिए हम डेटा फ़्रेम ऑब्जेक्ट बनाने के लिए sapply () फ़ंक्शन को data.frame () के भीतर लपेट सकते हैं।

# Quick code to replace missing values with the meandf_titanic_impute_mean < -data.frame(sapply(df_titanic,function(x) ifelse(is.na(x),mean(x, na.rm = TRUE),x)))

सारांश

गुम मूल्यों से निपटने के लिए हमारे पास तीन तरीके हैं:

  • सभी अनुपलब्ध टिप्पणियों को छोड़ दें
  • मतलब के साथ इम्प्रेस करें
  • मंझले के साथ इम्प्रेस करें

निम्न तालिका सारांशित करती है कि सभी गुम टिप्पणियों को कैसे हटाया जाए

पुस्तकालय उद्देश्य कोड
आधार लापता टिप्पणियों की सूची बनाएं
colnames(df)[apply(df, 2, anyNA)]
दुत्कार सभी लापता मान निकालें
na.omit(df)

माध्य या माध्यिका से विच्छेदन दो तरह से किया जा सकता है

  • प्रयोग का उपयोग करना
  • नीलम का उपयोग करना
तरीका विवरण लाभ नुकसान
लागू के साथ कदम से कदम अनुपलब्ध, संगणित माध्य / माध्यिका वाले स्तंभों की जाँच करें, मान को संचित करें, म्यूटेट के साथ बदलें () आप साधनों / माध्य का मूल्य जानते हैं अधिक निष्पादन समय। बड़े डेटासेट के साथ धीमा हो सकता है
नीलम के साथ त्वरित तरीका माध्य / माध्य के साथ अनुपलब्ध मानों को स्वचालित रूप से खोजने और बदलने के लिए sapply () और data.frame () का उपयोग करें लघु कोड और तेज संकेतन मूल्यों को नहीं जानते