数据分析 第一篇:数据质量分析(值分析)
數(shù)據(jù)質(zhì)量通常是指數(shù)據(jù)值的質(zhì)量,包括準(zhǔn)確性、完整性和一致性。數(shù)據(jù)的準(zhǔn)確性是指數(shù)據(jù)不包含錯(cuò)誤或異常值、完整性是指數(shù)據(jù)不包含缺失值、一致性是數(shù)據(jù)在各個(gè)數(shù)據(jù)源中都是相同的。廣義的數(shù)據(jù)質(zhì)量還包括數(shù)據(jù)整體的有效性,例如,數(shù)據(jù)整體是否是可信的、數(shù)據(jù)的取樣是否合理等。本文的數(shù)據(jù)質(zhì)量分析,是指對原始數(shù)據(jù)值的質(zhì)量進(jìn)行分析,以檢查數(shù)據(jù)的質(zhì)量。沒有可信的數(shù)據(jù),數(shù)據(jù)分析將是空中樓閣,因此,數(shù)據(jù)分析的前提就是要保證數(shù)據(jù)質(zhì)量是可信的。
數(shù)據(jù)質(zhì)量分析的主要任務(wù)是檢測原始數(shù)據(jù)中是否存在臟數(shù)據(jù),臟數(shù)據(jù)一般是指不符合要求,以及不能直接進(jìn)行相應(yīng)分析的數(shù)據(jù),臟數(shù)據(jù)一般包括:
缺失值
異常值(離群點(diǎn))
不一致的值
內(nèi)容未知的值
通常情況下,原始數(shù)據(jù)中都會(huì)存在不完整(有缺失值)、不一致、數(shù)據(jù)異常等問題,這些臟數(shù)據(jù)會(huì)降低數(shù)據(jù)的質(zhì)量,影響數(shù)據(jù)分析的結(jié)果,因此,在進(jìn)行數(shù)據(jù)分析之前,需要對數(shù)據(jù)進(jìn)行清洗、集成、轉(zhuǎn)換等處理,以提高數(shù)據(jù)的質(zhì)量。對于內(nèi)容未知和不一致的數(shù)據(jù),通常需要人工識(shí)別,進(jìn)而才能確定處理方法,本文重點(diǎn)介紹缺失值和異常值的分析方法。
一,缺失值分析
數(shù)據(jù)的缺失一般是指觀測的缺失和觀測中變量值的缺失,兩者都會(huì)造成分析結(jié)果的不準(zhǔn)確。觀測的缺失會(huì)導(dǎo)致由樣本數(shù)據(jù)推斷出的總體數(shù)據(jù)的性質(zhì)和特點(diǎn)出現(xiàn)偏差。
本小節(jié)涉及的是樣本中數(shù)據(jù)值的分析,使用簡單的統(tǒng)計(jì)分析,可以得到含有缺失值的屬性的個(gè)數(shù)和樣本空間的缺失率。缺失的數(shù)據(jù)可能會(huì)對數(shù)據(jù)分析的結(jié)果產(chǎn)生誤差,從而使樣本數(shù)據(jù)不能很好地代表數(shù)據(jù)總體。
用作分析缺失值的數(shù)據(jù)集:
df <- data.frame(col1 = c(1,3, NA,7,5),
col2 = c("a", NA,"b", "a","d"),
col3 = c(TRUE, FALSE, NA, TRUE,FALSE),
col4 = c(2.5, 4.2, 3.2, NA,1.4),
stringsAsFactors = TRUE)
1,識(shí)別缺失數(shù)據(jù)
在R語言中,缺失值通常以NA表示,可以使用函數(shù)is.na()判斷缺失值是否存在,另外,函數(shù)complete.cases()通過識(shí)別樣本數(shù)據(jù)是否完整,從而判斷缺失情況。
(1)is.na()標(biāo)記出現(xiàn)NA的變量
is.na()返回邏輯值向量,當(dāng)變量值為NA時(shí),把該元素所在的值設(shè)置為TRUE,表明該元素是NA。
> is.na(df)
col1 col2 col3 col4
[1,] FALSE FALSE FALSE FALSE
[2,] FALSE TRUE FALSE FALSE
[3,] TRUE FALSE TRUE FALSE
[4,] FALSE FALSE FALSE TRUE
[5,] FALSE FALSE FALSE FALSE
(2)complete.cases()函數(shù)測試觀測是否完整
complete.cases()是stats包中的一個(gè)函數(shù),返回一個(gè)邏輯向量,向量的每個(gè)元素表示每個(gè)觀測是否完整,完整是指觀測中的所有變量都不包含缺失值。
complete.cases(df) [1] TRUE FALSE FALSE FALSE TRUE
2,缺失值分析
缺失值分析包括:含有缺失值的記錄和屬性,包含缺失值的觀測總數(shù)和缺失率。
(1)查看含有缺失值的記錄和屬性
使用complete.cases()函數(shù)來查看包含缺失值的觀測
df[!complete.cases(df), ] col1 col2 col3 col4 2 3 <NA> FALSE 4.2 3 NA b NA 3.2 4 7 a TRUE NA
(2)包含缺失值的統(tǒng)計(jì)數(shù)據(jù)
各列包含異常值的數(shù)量:
colSums(is.na(df)) col1 col2 col3 col4 1 1 1 1
包含異常值的總行數(shù):
sum(!complete.cases(df)) [1] 3
(3)缺失率
包含缺失值的觀測數(shù)量占比是60%
mean(!complete.cases(df)) [1] 0.6
3,處理缺失值
對缺失值的處理,常用的處理方法是刪除缺失值所在的記錄,均值替換和插補(bǔ)。插補(bǔ)法比較復(fù)雜,本文暫不討論該主題。
(1)刪除
當(dāng)缺失值所占的比例比較少時(shí),可以使用刪除法,以減少樣本數(shù)據(jù)量來換取數(shù)據(jù)的完整性。
刪除缺失值可以通過na.omit()函數(shù)移除所有含有缺失值的觀測。
df <- na.omit(df)
通常情況下,字符類型的缺失值可以不做任何處理;如果缺失值是因子,且占比較少,可以直接刪除:
df <- df[!is.na(df$col2),]
(2)均值替換
均值替換法屬于插補(bǔ)法的一種簡單形式,適用于缺失率低的場景。
使用均值來替換缺失值,這是處理缺失值中比較常見的作法。對于數(shù)值類型的缺失值,一般用該變量在其他有效觀測中的均值來替換該缺失值。如果是非數(shù)值型變量,則使用該變量其他全部有效觀測值的眾數(shù)來替換。
df$col1[is.na(df$col1)] <- round(mean(df$col1, na.rm = TRUE)) df$col4[is.na(df$col4)] <- mean(df$col4, na.rm = TRUE)
眾數(shù),簡單地說,就是在一組數(shù)據(jù)中出現(xiàn)次數(shù)最多的那個(gè)數(shù)據(jù),是原數(shù)據(jù),而不是出現(xiàn)的次數(shù)。例如:一組數(shù)據(jù) 1,2,3,3,4的眾數(shù)是3,而1,2,3,4,5沒有眾數(shù)。
不同于平均值和中位數(shù),眾數(shù)可以是數(shù)字?jǐn)?shù)據(jù),也可以是字符數(shù)據(jù)。R沒有標(biāo)準(zhǔn)的內(nèi)置函數(shù)來計(jì)算眾數(shù),因此,我們將創(chuàng)建一個(gè)用戶自定義函數(shù)來計(jì)算數(shù)據(jù)集的眾數(shù)。
該函數(shù)將向量作為輸入,并將眾數(shù)值作為輸出。
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
對因子數(shù)據(jù)做眾數(shù)處理:
df$col2[is.na(df$col2)] <- getmode(na.omit(df$col2))
(3)不處理缺失值
在數(shù)據(jù)集中保留缺失值
二,異常值分析
異常值在統(tǒng)計(jì)學(xué)上的全稱是疑似異常值,也稱作離群點(diǎn),異常值的分析也稱作離群點(diǎn)分析。異常值是指樣本中出現(xiàn)的“極端值”,數(shù)據(jù)值看起來異常大或異常小,其分布明顯偏離其余的觀測值。異常值分析是檢驗(yàn)數(shù)據(jù)中是否存在不合常理的數(shù)據(jù),在數(shù)據(jù)分析中,既不能忽視異常值的存在,也不能簡單地把異常值從數(shù)據(jù)分析中剔除。重視異常值的出現(xiàn),分析其產(chǎn)生的原因,常常成為發(fā)現(xiàn)新問題進(jìn)而改進(jìn)決策的契機(jī)。
1,簡單統(tǒng)計(jì)量分析
對變量做一個(gè)描述性分析,進(jìn)而查看哪些數(shù)據(jù)是不合理的。常用的統(tǒng)計(jì)量是最大值和最小值,用來判斷變量的取值是否超出了合理的范圍,例如,客戶年齡的最大值是199,該取值就存在異常。
2,3σ原則
如果數(shù)據(jù)服從正態(tài)分布,在3σ原則下,異常值被定義為一組測定值中與平均值的偏差超過三倍標(biāo)準(zhǔn)差的值。在正態(tài)分布下,距離平均值3σ之外的值出現(xiàn)的概率為P(|x-μ|>3σ)<=0.003,屬于極個(gè)別的小概率事件。
如果數(shù)據(jù)不服從正態(tài)分布,也可以用遠(yuǎn)離平均值的多少倍標(biāo)準(zhǔn)差來描述。
3,箱型圖分析
箱線圖提供了識(shí)別異常值的一個(gè)標(biāo)準(zhǔn)方法:
異常值通常被定義為小于QL- l.5 IQR或者 大于Qu+ 1.5 IQR的值,QL稱為下四分位數(shù),Qu稱為上四分位數(shù),IQR稱為四分位數(shù)間距,是Qu上四分位數(shù)和QL下四分位數(shù)之差,其間包括了全部觀察值的一半。
4,異常值的處理
在數(shù)據(jù)處理時(shí),異常值的處理方法,需視具體情況而定。有時(shí),異常值也可能是正常的值,只不過異常的大或小,所以,很多情況下,要先分析異常值出現(xiàn)的可能原因,再判斷如何處理異常值。
處理的異常值的常用方法有:
刪除含有異常值的記錄;
插補(bǔ),把異常值視為缺失值,使用缺失值的處理方法進(jìn)行處理,好處是利用現(xiàn)有數(shù)據(jù)對異常值進(jìn)行替換,或插補(bǔ);
不處理,直接在含有異常值的數(shù)據(jù)集上進(jìn)行數(shù)據(jù)分析;
三,一致性分析
數(shù)據(jù)不一致性是指數(shù)據(jù)的矛盾性,主要是由于數(shù)據(jù)源不同,導(dǎo)致數(shù)據(jù)編碼的不一致;例如,對于一組數(shù)據(jù),性別是M和F,而其他數(shù)據(jù)源中使用Male和Female表示性別,那么這兩種數(shù)據(jù)就產(chǎn)生編碼不一致性的問題。
另外,數(shù)據(jù)更新不同步也容易導(dǎo)致的數(shù)據(jù)不一致性,例如,同一個(gè)人的工作地點(diǎn),在不同的數(shù)據(jù)表中,可能是不同的,這就是在更新數(shù)據(jù)時(shí),由于更新的不同步導(dǎo)致數(shù)據(jù)出現(xiàn)不一致性。
當(dāng)數(shù)據(jù)出現(xiàn)不一致性時(shí),需要對數(shù)據(jù)進(jìn)行清洗和集成操作,去除冗余數(shù)據(jù)、統(tǒng)一變量名、統(tǒng)一數(shù)據(jù)的計(jì)量單位等,并使用最新的數(shù)據(jù)來消除不一致性。
參考文檔:
數(shù)據(jù)分析中的缺失值處理
Dealing with Missing Values
總結(jié)
以上是生活随笔為你收集整理的数据分析 第一篇:数据质量分析(值分析)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公对公转账要交税吗 公对公的转账要交税吗
- 下一篇: 安全风险点指的是什么