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

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

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

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

相关文章
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1020 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1717 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
660 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
623 13
|
5天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
383 4