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

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

聯繫方式:

微信:ljty1991

博客主頁:raindu』s home

個人公眾號:數據小魔方(datamofang)

團隊公眾號:EasyCharts


推薦閱讀:

Python數據分析及可視化實例之CentOS7.2+Python3x+Flask部署標準化配置流程
Flask 實現小說網站 (二)
Python實現3D建模工具
Flask模板引擎:Jinja2語法介紹
OpenCV:圖片操作基本知識(二)

TAG:R编程语言 | Python | 数据分析 |