手把手教你用R处理常见的数据清洗问题(附步骤解析、R语言代码)

640?wx_fmt=png

作者:James D. Miller

翻译:王雨桐

校对:万文菁

本文约5300字,建议阅读10+分钟。

本文将介绍数据清洗过程的主要步骤,并通过案例和代码演示如何利用R语言进行数据清洗。


R是进行运算、清洗、汇总及生成概率统计等数据处理的一个绝佳选择。此外,由于它独立于平台、短期内不会消失,所以生成的程序可以在任何地方运行。并且,它具备非常棒的辅助资源。

 

本文摘录自James D.Miller撰写的《数据科学统计学》(Statistics for Data Science)一书,该书由Packt Publishing出版。

 

R是一种易上手的语言和环境,它本身很灵活且专注于统计计算,因此成为运算、清洗、汇总及生成概率统计等数据处理的一个绝佳选择。

 

此外,以下是用R进行数据清洗的其他原因:


  • 由于大量数据科学家都在使用R,所以它短时间内不会消失。

  • R独立于平台,因此可以在任意地方运行程序。

  • R有绝佳的辅助资源---Google一下,你就可以看到。


注:尽管作者将示例数据命名为“赌博数据”(Gamming Data),它只是用来演示代码的赌博数据。

 

离群点


对离群点最简单的解释是:离群点是和其余数据不匹配的数据点。按照惯例,任何过高、过低或者异常(基于项目背景)的数据都是离群点。作为数据清洗的一部分,数据科学家通常要识别出离群点并用通用的方法解决它:


  • 删除离群点的值,甚至是离群点对应的实际变量。

  • 转换变量值或变量本身。


让我们来看一下实际案例中如何用R识别并解决数据离群点。

 

老虎机在赌博界十分流行(老虎机的操作方法是把硬币投入到机器中,并拉动把手来决定回报)。如今大部分老虎机都电子化了,编程使它们的所有活动都能被持续追踪。在本文的案例中,赌场的投资者希望利用这些数据(以及各种补充数据)来调整盈利策略。换句话说,什么能让老虎机赚更多钱?是机器的主题还是类型?新机器比旧机器或老式机器更有利可图吗?机器的位置会产生怎样的影响?低面额的机器会赚更多钱吗?我们尝试用离群点来找到答案。

 

给定一个集合或赌博数据库(格式为逗号分隔或CSV文本文件),其中包括的数据如老虎机的位置、钱的面额、月份、日、年、机器类型、机器的年龄、促销、优惠券、天气和投币量(投币量是放入机器的钱币总额减去支付的数额)。


作为一个数据科学家,第一步要对数据进行综评(有时称为概述),此时我们要确定是否存在异常值,第二步是解决这些离群点。


步骤一 数据概述


R使这一步骤变得非常简单。尽管可以通过很多方式编程求解,但我们要尝试用最少的程序代码或脚本来解决问题。将CSV文件定义为R的变量(命名为MyFile)并将文件读入为数据框(命名为Mydata):


MyFile<-"C:/GammingData/SlotsResults.csv"

MyData<- read.csv(file=MyFile, header=TRUE, sep=",")

 

在统计学上,箱型图是一种简单的方式以得到统计数据集的分布、变异性和中心(或中位数)相关信息,所以我们将用箱型图来研究我们能否识别出中位数Coin-in以及能否找到离群点。为了达成这些,我们可以让R画出文件中每个老虎机的Coin-in值,绘制箱型图的函数如下:


boxplot(MyData[11],main='GammingData Review', ylab = "Coin-in")

 

注:Coin-in是文件中的第11列,所以直接将它作为boxplot函数的参数。此外还添加了一个可选择的参数(再次强调,本文已尽量保持代码的简洁度),以便在可视化图中添加标题。


执行前文的代码可以得到下图效果,包括中位数(中位数在箱型图中是中间横穿的线)以及四个离群点:

  

640?wx_fmt=png


步骤2-处理离群点


现在我们发现数据中确实存在离群点,我们要解决这些点以保证它们不会对本研究产生负面影响。首先,我们知道Coin-in有负值是不合理的,因为机器输出的钱币一定不会比投入到机器中的硬币多。基于这个原则,我们可以从文件中删除Coin-in为负值的记录。此外,R可以帮助我们用subset生成一个新的数据框,新数据集中只有Coin-in中的非负值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值