R 数据质量分析①

简介: 数据质量分析数据质量分析是数据挖掘中数据准备的最重要一环,是数据处理的前体。数据质量分分析主要任务是识别脏数据。常见的脏数据包括:缺失值异常值不一致的值重复数据或者包括特殊符号的数据缺失值处理处理数据缺失的一般步骤:识别缺失数据检测导致数据缺失的原因删除包含缺失值的实例或用合理的数值代替(插补)缺失值。

数据质量分析

数据质量分析是数据挖掘中数据准备的最重要一环,是数据处理的前体。数据质量分分析主要任务是识别脏数据。常见的脏数据包括:

  • 缺失值

  • 异常值

  • 不一致的值

  • 重复数据或者包括特殊符号的数据

缺失值处理

处理数据缺失的一般步骤:

  • 识别缺失数据

  • 检测导致数据缺失的原因

  • 删除包含缺失值的实例或用合理的数值代替(插补)缺失值。

1、识别缺失数据:

R语言中,NA代表缺失值,NaN代表不可能值,Inf和-Inf代表正无穷和负无穷。推荐使用is.na,is.nan,is.finite,is.infinite4个函数去处理。

setwd("E:\\Rwork\\data")
library(mice)
library(VIM)
a <- read.csv('catering_sale.csv',header = T)
dim(a)
sum(complete.cases(a))
sum(!complete.cases(a))
mean(!complete.cases(a))
a[!complete.cases(a), ]


# 异常值检测箱线图
sp <- boxplot(a$"销量", boxwex = 0.7)
title("销量异常值检测箱线图")
xi <- 1.1
sd.s <- sd(a[complete.cases(a), ]$"销量")
mn.s <- mean(a[complete.cases(a), ]$"销量")
points(xi, mn.s, col = "red", pch = 18)
arrows(xi, mn.s - sd.s, xi, mn.s + sd.s, code = 3, col = "pink", angle = 75, length = .1)
text(rep(c(1.05, 1.05, 0.95, 0.95), length = length(sp$out)), 
     labels = sp$out[order(sp$out)], sp$out[order(sp$out)] + 
       rep(c(150, -150, 150, -150), length = length(sp$out)), col = "red")
img_d78bd5232a896cc385fecf24df3124b5.png

complete.case()可用来识别矩阵或数据框中没有缺失值的行

> complete.cases(a)
  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
 [16]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [31]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [46]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [61]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [76]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [91]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[106]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[121]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[136]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[151]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
[166]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[181]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[196]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
> is.na(a)
        日期  销量
  [1,] FALSE FALSE
  [2,] FALSE FALSE
  [3,] FALSE FALSE
  [4,] FALSE FALSE
  [5,] FALSE FALSE
  [6,] FALSE FALSE
  [7,] FALSE FALSE
  [8,] FALSE FALSE
  [9,] FALSE FALSE
 [10,] FALSE FALSE
 [11,] FALSE FALSE
 [12,] FALSE FALSE
 [13,] FALSE FALSE
 [14,] FALSE FALSE
 [15,] FALSE  TRUE
 [16,] FALSE FALSE
 [17,] FALSE FALSE
 [18,] FALSE FALSE
 [19,] FALSE FALSE
 [20,] FALSE FALSE
 [21,] FALSE FALSE
 [22,] FALSE FALSE
 [23,] FALSE FALSE
 [24,] FALSE FALSE
 [25,] FALSE FALSE
 [26,] FALSE FALSE
 [27,] FALSE FALSE
 [28,] FALSE FALSE
 [29,] FALSE FALSE
 [30,] FALSE FALSE
 [31,] FALSE FALSE
 [32,] FALSE FALSE
 [33,] FALSE FALSE
 [34,] FALSE FALSE
 [35,] FALSE FALSE
 [36,] FALSE FALSE
 [37,] FALSE FALSE
 [38,] FALSE FALSE
 [39,] FALSE FALSE
 [40,] FALSE FALSE
 [41,] FALSE FALSE
 [42,] FALSE FALSE
 [43,] FALSE FALSE
 [44,] FALSE FALSE
 [45,] FALSE FALSE
 [46,] FALSE FALSE
 [47,] FALSE FALSE
 [48,] FALSE FALSE
 [49,] FALSE FALSE
 [50,] FALSE FALSE
 [51,] FALSE FALSE
 [52,] FALSE FALSE
 [53,] FALSE FALSE
 [54,] FALSE FALSE
 [55,] FALSE FALSE
 [56,] FALSE FALSE
 [57,] FALSE FALSE
 [58,] FALSE FALSE
 [59,] FALSE FALSE
 [60,] FALSE FALSE

> md.pattern(a)
    日期 销量  
195    1    1 0
  6    1    0 1
       0    6 6

备注:0表示变量的列中没有缺失,1则表示有缺失值。
第一行给出了没有缺失值的数目(共多少行)。
第一列表示各缺失值的模式。
最后一行给出了每个变量的缺失值数目。
最后一列给出了变量的数目(这些变量存在缺失值)。

aggr(a,prop=F,numbers=T)
img_a464474fda46c8faacef9d26002ed8e6.png
matrixplot(a)
img_819a3cad645f21a02c73c4ed02e8b24b.png

2. 缺失值处理

  • 行删除法:数据集中含有缺失值的行都会被删除,一般假定缺失数据是完全随机产生的,并且缺失值只是很少一部分,对结果不会造成大的影响。即:要有足够的样本量,并且删除缺失值后不会有大的偏差!

行删除的函数有na.omit()和complete.case()

  • 删除含有缺失值的行

newdata<-na.omit(a)
newdata<-a[complete.cases(a),]
  • 删除含有缺失值的列

t(na.omit(t(a)))

na_flag <- apply(is.na(a), 2, sum)
a <- a[, which(na_flag == 0)]

lapply(Y, na.omit)
  • 预测插补法
> a <- read.csv("titanic.train.csv",header = T, row.names = 1) 
> sapply(a,function(x) sum(is.na(x)))
Survived   Pclass     Name      Sex      Age    SibSp    Parch 
       0        0        0        0      177        0        0 
  Ticket     Fare    Cabin Embarked 
       0        0        0        0 
> age.model <- rpart(Age ~ Pclass + Sex + SibSp + 
+                      Parch + Fare + Embarked  ,
+                    data=a[!is.na(a$Age), ],
+                    method='anova')
> 
> a$Age[is.na(a$Age)] <- predict(age.model, a[is.na(a$Age), ])
> sapply(a,function(x) sum(is.na(x)))
Survived   Pclass     Name      Sex      Age    SibSp    Parch 
       0        0        0        0        0        0        0 
  Ticket     Fare    Cabin Embarked 
       0        0        0        0 
> 
目录
相关文章
|
存储 数据采集 XML
再谈主数据管理|一文读懂主数据项目实施
主数据管理是企业改善其关键数据资产(如产品数据,资产数据,客户数据,位置数据等)的一致性和质量的必要数据管理活动。
|
JSON 监控 关系型数据库
Docker 容器日志分析
Docker 容器日志分析
601 0
|
数据采集 SQL 存储
DataWorks数据质量介绍及实践 | 《一站式大数据开发治理DataWorks使用宝典》
数据质量问题虽然从数据工程师的角度来看是个简单问题,但是从业务的角度来看是个很严重的问题。所以数据质量是数据开发和治理全生命周期中,非常重要的一个环节。在DataWorks产品版图里,数据质量也是非常重要的模块之一。
4758 0
DataWorks数据质量介绍及实践 | 《一站式大数据开发治理DataWorks使用宝典》
|
数据采集 数据可视化 大数据
R语言在统计分析中的应用与实践
【7月更文挑战第30天】R语言以其强大的统计分析能力和开源自由的特性,在统计分析领域发挥着重要作用。无论是基础的描述性统计、推断性统计,还是复杂的回归分析、时间序列分析和生存分析,R语言都提供了丰富的函数和包来支持。通过学习和掌握R语言,数据分析师和研究者可以更加高效地进行数据分析,获取有价值的信息和结论。未来,随着大数据和云计算等新兴技术的发展,R语言的应用前景将更加广阔。
|
12月前
|
数据采集 数据安全/隐私保护
​ CDGA|电子行业数据治理六大痛点及突围之道
电子行业在数据治理方面面临着诸多痛点。为了突围而出,企业需要针对这些痛点制定有效的解决方案和措施,包括统一数据标准、打破数据孤岛、保障数据安全、制定合理策略、培养及建立高效团队以及引进先进技术等方面。通过这些努力,企业可以不断提升数据治理的能力和水平,为业务发展提供有力支撑。
|
iOS开发 MacOS Python
【Mac 系统】解决已有清华镜像但出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url
在尝试使用清华镜像创建conda环境时遇到下载超时问题,通过删除原有镜像并添加针对Mac OS的清华镜像解决了该问题。
426 3
|
Kubernetes 持续交付 Docker
构建高效微服务架构:Docker与Kubernetes的完美结合
【5月更文挑战第28天】在现代软件开发中,微服务架构已成为提高系统可维护性和扩展性的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes集群管理工具共同打造一个高效、可靠的微服务环境。通过分析两者的核心优势及互补特性,我们展示了一种优化的部署策略,旨在帮助开发者和系统管理员理解和实践在复杂分布式系统中实现服务的有效管理和自动化部署。
|
安全 关系型数据库 Linux
centos7_安装mysql8(局域网访问navicat连接)
centos7_安装mysql8(局域网访问navicat连接)
334 1
|
存储 SQL 数据可视化
离线数仓(十)【ADS 层开发】(1)
离线数仓(十)【ADS 层开发】
|
存储 SQL HIVE
金融审批数仓(离线)--DWD层、ADS层
金融审批数仓(离线)--DWD层、ADS层
387 4