数据清洗_剪除反常数据_统计分布|学习笔记

简介: 快速学习数据清洗_剪除反常数据_统计分布

开发者学堂课程【大数据 Spark2020版(知识精讲与实战演练)第四阶段 数据清洗_剪除反常数据_统计分布】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/691/detail/12116


数据清洗_剪除反常数据_统计分布


数据清洗针对这一数据或字段为空,转换错了,包裹将数据转换成功,真正意义上数据清洗有一个步骤看到某一部分数据是否有问题。

假设所有的行车数据都分布在一个小时或三个小时以内,突然有一个十个小时的数据,是一个奇怪反常的数据,应该删掉

剪除反常数据,因为反常数据会影响最终的结果

要看到反常数据,编写代码剪除

看到反常数据要知道如何做,筛选数据集看到反常数据

观察数据集的时间分布

观察数据分布常用手段是直方图,直方图反应的是数据的“数量”分布

行程数据从上车时间到下车时间的差值,即行程时间,要去掉反常的行程时间,先看到行程时间分布,用直方图

直方图是数据可视化中非常重要的图

image.png

有一个数据集是乘客的数据集,横轴表示乘客年龄的范围,纵轴代表人数,数据有多高代表在这个范围内乘客个数是多少,直方图用于统计一个数据的一个列,列中数据分布情况,如10-20岁有多少个,20-30有多少个

通过这个图可以看到其实就是乘客年龄的分布,横轴是乘客的年龄,纵轴是乘客年龄的频数分布

因为我们这个项目中要对出租车利用率进行统计,所以需要先看—看单次行程的时间分布情况,从而去掉一些异常数据,保证数据是准确的

绘制直方图的"图""留在后续的 DNP项目中再次介绍,现在先准备好直方图所需要的数据集,通过数据集来观察即可,直方图需要的是两个部分的内容,一个是数据本身,另外一个是数据的分布,也就是频数的分布,步骤如下

(1)计算每条数据的时长,但是单位要有变化,按照分钟,或者小时来作为时长单位

(2)统计每个时长的数据量,例如有500个行程是一小时内完成的,有 300个行程是1-2小时内完成

观察数据分布,通过直方图观察,直方图与数据图是有明显差别的

如果无法将直方图的图画出,可以将直方图显示的数据显示出来,统计时间分布直方图,直接看到结果集,通过结果集反映问题

看行程时间分布,处理数据集

进入 idea

taxiGood 是转换过,没有任何问题的数据

//5.绘制时长直方图

使用 dropOffTime-pickUpTime,得到行程的时长,计算出用毫秒表示的数据后,转到更高的力度,如分钟、小时,进而进行处理

编写 UDF

//5.绘制时长直方图

//5.1编写 UDF 完成时长计算,将毫秒转为小时单位

接收 pickUpTime 与 dropOffTime,都是 Long 类型的,毫秒制,生成函数体,在函数体中计算 duration,即 dropOffTime-pickUpTime,使用 TimeUnit 进行转换,转成小时单位,执行 convert,获取小时表示,函数作用于每一条数据,直接作用于整个数据集,要转成 UDF,使用 UDF 函数接收 hours,UDF 生成,可以进行具体统计

//5.2进行统计

要看到时长分布,数据集是两列构成,结果集第一列是时长 hours,第二列是 count,按照时长进行分组,分组完求 count

拿到时长,第一列是 pickUpTime,第二列是 dropOffTime,执行转换操作,转换操作结束后,生成数据可能是不合适的,转为 duration,执行 count,进行统计,统计完通过 sort 进行排序处理,最终展示数据,直方图绘制完成

创建一个 UDF,使用 UDF 统一一个新的列,新的列是 groupBy 统计,按照小时分组,分组完使用 count 和 sort 排序,最终展示

//5.绘制时长直方图

//5.1编写 UDF 完成时长计算,将毫秒转为小时单位

val hours = (pickUpTime: Long,dropoffTime: Long) =>{

val duration = dropoffTime - pickupTime

val hours = TimeUnit.HOURS.convert(duration,Timeunit.MILLISECONDS)hours

}

val hoursUDF = udf(hours)

// 5.2进行统计

taxiGood.groupBy(hoursUDF($"pickupTime" ,$"dropoffTime") as "duration")

.count()

.sort( sortCol = "duration")

.show()

运行代码

image.png

结果总共10000条数据,9999条数据在1个小时以内,1条数据一个小时到两个小时之间,可以将1剪掉,如果拿到整个几千万条数据,在0-3小时分布数据较多,要剪掉0-3小时以外的数据。

第一步看到整个数据分布,接下来剪掉多余数据

相关文章
|
6月前
|
数据可视化 数据挖掘
R语言分段回归数据数据分析案例报告
R语言分段回归数据数据分析案例报告
|
6月前
|
数据挖掘
统计的基本概念及抽样分布
统计的基本概念及抽样分布
统计的基本概念及抽样分布
|
数据挖掘
r语言数据分析画数据相关性图热力图
r语言数据分析画数据相关性图热力图
237 1
|
数据挖掘
数据分析|R-描述性统计
数据分析|R-描述性统计
130 0
|
数据可视化 Serverless Go
scRNA分析|单细胞GSVA + limma差异分析-celltype分组?样本分组?
scRNA分析|单细胞GSVA + limma差异分析-celltype分组?样本分组?
984 0
|
机器学习/深度学习 数据挖掘
数据分析:5个数据相关性指标
相似性度量是许多数据分析和机器学习任务中的重要工具,使我们能够比较和评估不同数据片段之间的相似性。有许多不同的指标可用,每个指标各有利弊,适用于不同的数据类型和任务。
280 0
|
数据采集 消息中间件 分布式计算
数据预处理-链路统计-serverCoverCount计算|学习笔记
快速学习数据预处理-链路统计-serverCoverCount计算
数据预处理-链路统计-serverCoverCount计算|学习笔记
时间序列分析(2)R语言-基本统计量
时间序列分析(2)R语言-基本统计量
83 0
|
数据采集 消息中间件 监控
数据预处理-链路统计实现思路|学习笔记
快速学习数据预处理-链路统计实现思路
数据预处理-链路统计实现思路|学习笔记
下一篇
无影云桌面