专栏首页数据小魔方左手用R右手Python系列8——数据去重与缺失值处理

左手用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 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

本文分享自微信公众号 - 数据小魔方(datamofang),作者:杜雨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ggplot2玫瑰图案例——星巴克门店分布图

    使用ggplot2制作放射状玫瑰图本不是什么难事,仅需将普通单序列柱形图添加添加一个极坐标转化参数即可。 但是遇到比较小清新的案例,还是值得手动操作一下的。 本...

    数据小磨坊
  • ggplot2都有哪些使用不多但是却异常强大的图层函数

    要说ggplot2中那些使用不多但是却功能强大的图层函数,我首先想到的就是geom_rect、geom_linerange、geom_segment、geom_...

    数据小磨坊
  • R语言爬虫实战——网易云课堂数据分析课程板块数据爬取

    R语言的爬虫生态虽然与Python相比要弱小很多,but,如果你真的想要用R干一些有趣的事情,那么R语言目前所具有的的网络爬取工具也能给你带来很多方便。 今天...

    数据小磨坊
  • 高颜值可定制在线绘图工具-第三版

    生信宝典推出之前推出了一系列画图相关文章,包括多种形式的热图、线图、柱状图、箱线图、泡泡图、韦恩图、进化树、火山图、生存分析、共表达分析聚类如等,都是基于R代码...

    生信宝典
  • Android 中ContentProvider的实例详解

    * Android中的Content Provider 机制可支持在多个应用中存储和读取数据。这也是跨应用

    砸漏
  • [剑指offer题解][Java]最小的k个数

    有多高,以我目前不多的面试来看,在所有遇到的面试算法题中,出现原题的概率大概能有6成,如果把基于原题的变种题目算上,那么这个出现概率能到达9成,10题中9题见过...

    Rude3Knife的公众号
  • 加速 SpringBoot 应用开发,官方热部署神器真带劲!

    SpringBoot官方开发工具,如果你的应用集成了它,即可实现热部署和远程调试。

    macrozheng
  • 你不知道的Jupyter Notebook的4个很棒的技巧

    https://towardsdatascience.com/4-awesome-tips-for-enhancing-jupyter-notebooks-4d...

    HuangWeiAI
  • LeetCode 1062. 最长重复子串(二分查找)

    类似题目: LeetCode 875. 爱吃香蕉的珂珂(二分查找) LeetCode LCP 12. 小张刷题计划(二分查找) LeetCode 1011...

    Michael阿明
  • .DS_store ( Desktop Services Store) 文件是什么?

    .DS_Store(英文全称 Desktop Services Store)是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义...

    一个会写诗的程序员

扫码关注云+社区

领取腾讯云代金券