您好,登錄后才能下訂單哦!
如何用R語言和Python進行數據去重與缺失值處理,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
因為最近事情略多,最近更新的不勤了,但是學習的腳步不能停,一旦停下來,有些路就白走了,今天就盤點一下R語言和Python中常用于處理重復值、缺失值的函數。
在R語言中,涉及到數據去重與缺失值處理的函數一共有下面這么幾個:
unique
distinct
intersect
union
duplicated #布爾判斷
is.na()/!is.na() #缺/非缺失值
na.rm=TRUE/FALSE #移除缺失值
na.omit(lc) #忽略缺失值
complete.cases() #完整值
mydata<-data.frame(A=runif(20,0,100),B=sample(LETTERS[1:5],20,replace=TRUE))
mydata[sample(1:20,5,replace=FALSE),"A"]<-NA #認為構造了5個缺失值。
#unique函數通常用于去重:
unique(mydata$B) #對含有重復值得向量進行去重
dplyr::distinct(mydata,B) #對含有重復值字段的數據框去重
#交集與補集:
dplyr中提供了兩個函數可以執行交集與補集操作:
duplicated(mydata$B) #返回重復對象的布爾值
mydata[!duplicated(mydata$B),] #剔除重復值,僅保留唯一值
A=LETTERS[1:10];B=LETTERS[6:15]
intersect(A,B) #交集
unique(A,B) #補集
#缺失值處理:
is.na()/!is.na() #缺/非缺失值判斷
is.na(mydata) #返回存在缺失值的布爾結果
!is.na(mydata) #返回非缺失值的布爾結果
na.rm=TRUE/FALSE #移除缺失值
rm.na通常作為基礎統計函數的參數使用,如mean,sum等
mean(mydata$A,na.rm=TRUE)
sum(mydata$A,na.rm=TRUE)
na.omit(mydata) #忽略缺失值所在行
complete.cases(mydata) #完整值(返回布爾結果)
mydata[!complete.cases(mydata$A),]#使用該函數的布爾索引確定缺失值或者排除缺失值
關于更為復雜的缺失值插補技術,因為涉及到一些比較深入的方法,這里暫且不呈現,僅對缺失值的描述和篩選做以上簡單歸總。
---------
Python:
---------
#列表去重:
set(將列表元組化過濾重復數據)
M=[1,4,3,6,5,4,3,2,7,8]
list(set(M))
#數據框的去重:
import pandas as pd
import numpy as np
mydata=pd.DataFrame({
"A":["A","B","C","D","B","C"],
"B":[43,32,56,67,32,56]
})
mydata.drop_duplicates()
#使用pandas提供的數據框去重函數drop_duplicates去重重復值。
#缺失值處理:
對于列表而言,numpy中諸多統計函數都有針對缺失值的操作:
nansum/nanmean/nanmin/nanmax
val= np.array([5,np.nan,8,9,np.nan])
np.nansum(val)
np.nanmean(val)
np.nanmin(val)
np.nanmax(val)
pandas中的序列和數據框都有固定的缺失值檢測、描述、差值方法:
myserie=pd.Series(["A","B",np.nan,"C"])
mydata=pd.DataFrame({
"A":["A","B","C","D","E","F"],
"B":[43,np.nan,56,67,np.nan,56]
})
#檢測缺失值:
myserie.isnull()
mydata.isnull()
#返回非缺失值:
myserie.notnull()
mydata.notnull()
#過濾缺失值:
myserie.dropna()
mydata.dropna()
#針對數據框而言,默認情況下,dropna丟棄含有缺失值的行。
mydata.dropna(how="all",axis=1) #丟棄含有缺失值的行或者列
#缺失值填充:
fillna函數一共兩個參數:
value表示要插補的值
method表示缺失值插補方法
myserie.fillna(0)
mydata.fillna(0)
------------
本文小結:
------------
R語言:
數值去重:
unique
distinct
intersect
union
duplicated
缺失值處理:
is.na()/!is.na()
na.rm=TRUE/FALSE
na.omit(lc)
complete.cases()
Python:
重復值:
set(針對列表通過元組過濾)
drop_duplicates(針對pandas中的序列和數據框)
缺失值處理:
nansum/nanmean/nanmin/nanmax
isnull
dropna
fillna
關于如何用R語言和Python進行數據去重與缺失值處理問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。