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

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

开发者学堂课程【大数据 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小时以外的数据。

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

相关文章
|
11天前
|
数据可视化 数据挖掘
R语言分段回归数据数据分析案例报告
R语言分段回归数据数据分析案例报告
10 0
|
1月前
|
存储 数据采集 数据挖掘
python数据分析——数据分类汇总与统计
数据分类汇总与统计是指将大量的数据按照不同的分类方式进行整理和归纳,然后对这些数据进行统计分析,以便于更好地了解数据的特点和规律。
64 1
|
1月前
|
数据挖掘
统计的基本概念及抽样分布
统计的基本概念及抽样分布
统计的基本概念及抽样分布
|
8月前
|
数据挖掘
怎么理解数据分析、维度和指标?
怎么理解数据分析、维度和指标?
|
10月前
|
数据挖掘
数据分析|R-描述性统计
数据分析|R-描述性统计
|
11月前
|
人工智能 自然语言处理 数据管理
分析的四个维度
分析的四个维度
|
机器学习/深度学习 数据挖掘
数据分析:5个数据相关性指标
相似性度量是许多数据分析和机器学习任务中的重要工具,使我们能够比较和评估不同数据片段之间的相似性。有许多不同的指标可用,每个指标各有利弊,适用于不同的数据类型和任务。
205 0
时间序列分析(2)R语言-基本统计量
时间序列分析(2)R语言-基本统计量
63 0
|
数据采集 消息中间件 分布式计算
数据预处理-链路统计-serverCoverCount计算|学习笔记
快速学习数据预处理-链路统计-serverCoverCount计算
69 0
数据预处理-链路统计-serverCoverCount计算|学习笔记
|
数据采集 存储 NoSQL
数据预处理-链路统计-activeUserCount 计算|学习笔记
快速学习数据预处理-链路统计-activeUserCount 计算
75 0