缺少值处理_字符串缺失值 | 学习笔记

简介: 快速学习缺少值处理_字符串缺失值

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:缺少值处理_字符串缺失值】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12085


缺少值处理_字符串缺失值

 

使用 SparkSQL 处理异常字符串

两种处理方式:第一种,替换;第二种,过滤(丢弃)

打开最原始的数据集,如下图,这个数据集当中,可以看到是 NA,它并不是我们所说的 NAN。我们所说的 NAN,是 double 下的 NAN,代表的含义是 not a number。但是,这个 NA 就是一个字符串。

image.png

下面讲解遇到这种字符串的时候应该如何处理:

首先,创建出来我们的一个方法,这时处理方式也是两种,第一种是处理方式就是丢弃,第二种处理方式是替换。在进行丢弃操作之前应该先读取数据集。

第一步读取数据集,大家要注意这个数据集跟前面使用的 beijingpm_with_nan_csvVS 不同,这个里面存放的都是最原始的数据,比如说,如果某一列为 NAN,那这一列的这个数据,叫做 NA,是字符串。直接通过 spark.read 来进行读取,但是没有 spark,故把前面的 spark,直接移出去,刚才写过的 spark 放在最外层,如下所示:

class Nullprocessor {

@Test

def nullAndNaN( ): unit = {

// 1.创建 sparkSession

val spark = Sparksession.builder()

master( master = "local[6]")

appName( name = "null processor")

getorcreate()

变为:

class Nullprocessor {

// 1.创建 sparkSession

val spark = Sparksession.builder()

master( master = "local[6]")

appName( name = "null processor")

getorcreate()

@Test

def nullAndNaN( ): unit = {

代码:

@Test

def strprocessor(): unit = {

//读取数据集

val sourceDF = spark.read

option("header", value = true)

option(""inferschema", value = true)

csv( path = "dataset/BeijingPM20100101_20151231.csv")

在讲丢弃之前,先查看数据集大概形状

sourceDF.show ()

运行代码,数据集如下图:

image.png

PM_Dongsi 一列是字符串列,PM_Nongzhanguan 一列也是字符串列。

假如一行数据里有 NAN 就要丢弃,直接过滤掉 PM_Dongsi 中等于 NAN 的所有数据就可以,下面讲如何进行过滤:

// 1.丢弃

import spark .implicits.

sourceDF.where( condition = "PM_Dongsi -!= "NA" ) .show()

运行:如下图,PM_Dongsi 一列中已经没有 NA,变成了具体值。

image.png

如果想将 NA 替换成 NAN,或者替换成 double 当中的 NAN,应该怎么做:可以直接使用 sourceDFf.select。

探讨 select 里面如何写:在 sql 语句中可以进行 select 比如说 name,age,还可以写上 when…then…,最终可以写 else.

在 sql 语句当中,是可以使用 case 和 then 的, 在进行替换操作时也是可以使用 case 和 then,如何使用:

首先,在 select 当中另起一行,再接下来使用 when 函数,导入 org.apache.spark.sql.functions._

导入这样一个 function 后,就可以使用 when 函数。

// 2.替换

import org.apache. spark.sql.functions._

// select name,age,case

// when ... then ...

// when ... then ...

// else

sourceDF.select(

cols = "No as "id"", "year,"month,"day,"hour,'season,

when( condition = "PM_Dongsi ==="NA"",Double.NaN)

otherwise( value = "PM_Dongsi cast DoubleType)

as( alias = "pm")

).show()

}

当 PM_Dongsi 的值为 NA 时,替换为 NaN 样的 double 值;如果不是 NA,将正常的值转成 double 类型再进行 as。

Cast 是转换类型

}

运行结果:

image.png

除了以上两种处理字符串的方式外,还有一种方式

sourceDF.na.replace():

sourceDF.na.replace(col=“PM_Dongsi”,Map(“NA” >“NaN”,“NULL”>“null”)).show()

使用 replace 要注意:原类型和转换过后的类型必须一致

相关文章
|
1月前
数据的缺失值怎么去除
数据的缺失值怎么去除
|
1月前
|
数据采集 数据挖掘 数据处理
数据清洗的主要步骤包括**理解数据、处理重复值、处理空缺值、处理异常值、数据标准化和数据收集
【4月更文挑战第3天】数据清洗的主要步骤包括**理解数据、处理重复值、处理空缺值、处理异常值、数据标准化和数据收集
117 2
|
机器学习/深度学习 Windows
解决R语言出现“二进列运算符中有非数值参数”的错误!
解决R语言出现“二进列运算符中有非数值参数”的错误!
2088 0
解决R语言出现“二进列运算符中有非数值参数”的错误!
|
1月前
|
数据采集 Python
在Python中进行数据清洗和预处理缺失值处理缺失数据剔除
在Python中进行数据清洗和预处理缺失值处理缺失数据剔除
51 4
|
1月前
|
机器学习/深度学习 算法 前端开发
【视频】为什么要处理缺失数据?如何用R语言进行缺失值填充?
【视频】为什么要处理缺失数据?如何用R语言进行缺失值填充?
|
1月前
|
数据采集 SQL 监控
大数据清洗的艺术:有效处理缺失值、异常值与重复数据
【4月更文挑战第8天】本文探讨了大数据清洗的三个关键环节:缺失值处理、异常值识别与处理、重复数据消除。在处理缺失值时,涉及识别、理解原因、选择删除、填充或保留策略,并进行结果验证。异常值识别包括统计方法、业务规则和可视化检查,处理策略包括删除、修正和标记。重复数据的识别基于主键和关键属性,处理策略有删除、合并和哈希,处理后需持续监控。数据清洗是一门艺术,需要结合统计学、编程技能和业务理解。
234 2
|
1月前
|
缓存 自然语言处理 Java
还在为字典值、枚举值校验烦恼吗,不妨试试这个
本文介绍了如何在Java中实现常量值校验的封装,主要包括两个方面:字典值类型的校验和枚举类型的校验。首先,作者提到在进行数据验证时,实体类字段需要添加`@Valid`注解。然后,对于字典值类型的校验,可以通过`@DictVaild`注解检查当前字段值是否在数据库中的字典值类别内,或者与预定义的枚举类中的值相匹配。在进行校验时,可以设置`dictType`参数为`DictType.CODE`或`DictType.LABEL`来分别验证代码值或标签值。
58 0
|
10月前
|
运维 Shell Python
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(一)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)
103 0
|
10月前
|
数据采集 Python 数据可视化
[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](三)
[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](三)
|
10月前
|
数据采集 Python
[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](二)
[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](二)