您的位置:首頁>正文

左手用R右手Python系列8—資料去重與缺失值處理

感謝關注天善智慧, 走好資料之路↑↑↑

歡迎關注天善智慧, 我們是專注于商業智慧BI, 大資料, 資料分析領域的垂直社區, 學習, 問答、求職一站式搞定!

每週2-3場免費資料領域公開課, 每月線下活動, 歡迎關注!

因為最近事情略多, 最近更新的不勤了, 但是學習的腳步不能停, 一旦停下來, 有些路就白走了, 今天就盤點一下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

天善學院svip正火爆報名中!包含業務知識一站通、Excel BI商業智慧、七周成為資料分析師、對話大資料數列技術、R語言15案例、Python3網路爬蟲實戰案例、Python機器學習、Python資料科學家精華實戰課程、深度學習模型和實戰課程、資料分析報告共10套課程,其他課程只需五折即可,歡迎大家關注報名。https://www.hellobi.com/svip

本文作者:天善智慧社區專家杜雨資料小魔方

天善社區博客地址:https://ask.hellobi.com/blog/zlx19930503/9228

公開課地址:https://edu.hellobi.com/course/195

這裡暫且不呈現,僅對缺失值的描述和篩選做以上簡單歸總。

---------

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

天善學院svip正火爆報名中!包含業務知識一站通、Excel BI商業智慧、七周成為資料分析師、對話大資料數列技術、R語言15案例、Python3網路爬蟲實戰案例、Python機器學習、Python資料科學家精華實戰課程、深度學習模型和實戰課程、資料分析報告共10套課程,其他課程只需五折即可,歡迎大家關注報名。https://www.hellobi.com/svip

本文作者:天善智慧社區專家杜雨資料小魔方

天善社區博客地址:https://ask.hellobi.com/blog/zlx19930503/9228

公開課地址:https://edu.hellobi.com/course/195

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示