SparkSQL-对数据缺失和异常值进行处理

这篇具有很好参考价值的文章主要介绍了SparkSQL-对数据缺失和异常值进行处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

缺失数据

准备数据

 处理方式

丢弃规则

填充规则

异常数据

 方法1:丢弃处理

 方法2:替换处理


缺失数据

准备数据

SparkSQL-对数据缺失和异常值进行处理

 处理方式

1、丢弃/过滤:DataFrame.na.drop()

2、填充:DataFrame.na.fill()

3、替换:DataFrame.na.replace()

丢弃规则

1、any 一行中有任何一个是NaN/null就丢弃

df.na.drop("any").show() //任何出现NaN/null就丢弃

SparkSQL-对数据缺失和异常值进行处理

2、all 只有一行中所有都是NaN/null才丢弃

df.na.drop("all").show() //一行都是NaN/null才丢弃

SparkSQL-对数据缺失和异常值进行处理

3、某些规则 针对某些列有NaN/null ,是否丢弃该列

df.na.drop("any",List("age","dt")).show() //针对特定列出现NaN/null就丢弃改行

SparkSQL-对数据缺失和异常值进行处理

填充规则

1、针对所有列进行默认填充

df.na.fill(0).show() //针对所有列都填充0

2、针对特定的列

df.na.fill(0,List("age","dt")).show() //针对特定列进行填充

SparkSQL-对数据缺失和异常值进行处理

异常数据

准备数据 

SparkSQL-对数据缺失和异常值进行处理

        方法1:丢弃处理

df2.where('dt =!= "NaN").show() //只获取dt列 =!=(不为)NaN的数据

SparkSQL-对数据缺失和异常值进行处理

        方法2:替换处理

        如果需要使用when 则需要导入functions的隐式转换操作 

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

        1、直接替换

 df2.select( //如果dt等于NA就替换为Double类型的NaN(NA是字符串类型 NaN是double类型)
      when('age === "NA",Double.NaN)
        .otherwise('age cast DoubleType)//还需要统一该列其他的数据类型
        .as("ok") //指定为新的列名
    ).show()

SparkSQL-对数据缺失和异常值进行处理

         2、使用na.repalce替换 

repalce("指定列",Map("原始数据" -> "替换后的数据")) 进行替换但是Map替换的方式不能变

注意:Map()转换的时候原类型和转换后的类型必须是一致的 

df2.na.replace("dt",Map("NaN" -> "NA","Null" -> "null")).show()

SparkSQL-对数据缺失和异常值进行处理

代码: 文章来源地址https://www.toymoban.com/news/detail-451960.html

  def main(args: Array[String]): Unit = {
    //创建Session对象
    val spark = SparkSession
      .builder() //构建器
      .appName("sparkSQL") //序名称程
      .master("local[*]") //执行方式:本地
      .getOrCreate() //创建对象
    //导入转换
    import spark.implicits._
    //因为自定推断字段类型可能识别NAN为String类型,不方便处理,所以这里指定schema
    val schema: StructType = StructType(List(
      StructField("id", LongType),
      StructField("name", StringType),
      StructField("age", IntegerType),
      StructField("dt", DoubleType)
    ))
    schema
    //读取数据
      //因为数据中已有表头则设置option("header",true)
    val df: DataFrame = spark.read.option("header",true).schema(schema).csv("file:///D:\\spark.test\\datas\\a1.csv")
    //数据缺失处理
      //方式1:丢弃原则 any、all、自定义
    //df.na.drop("any").show() //任何出现NaN/null就丢弃
    //df.na.drop("all").show() //一行都是NaN/null才丢弃
    //df.na.drop("any",List("age","dt")).show() //针对特定列出现NaN/null就丢弃改行

      //方式2:填充
    //df.na.fill(0).show() //针对所有列都填充0
    //df.na.fill(0,List("age","dt")).show() //针对特定列进行填充

    //读取数据
    val df2: DataFrame = spark.read.option("header",true).csv("file:///D:\\spark.test\\datas\\a2.csv")
    //异常数据处理
      //1.丢弃处理
    //df2.where('dt =!= "NaN").show() //只获取dt列 =!=(不为)NaN的数据
      //2、替换处理
    import org.apache.spark.sql.functions._
        //直接替换
//    df2.select( //如果dt等于NA就替换为Double类型的NaN(NA是字符串类型 NaN是double类型)
//      when('age === "NA",Double.NaN)
//        .otherwise('age cast DoubleType)//还需要统一该列其他的数据类型
//        .as("ok") //指定为新的列名
//    ).show()

    //df2.na.replace("dt",Map("NaN" -> "NA","Null" -> "null")).show()
  }

到了这里,关于SparkSQL-对数据缺失和异常值进行处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据分析】缺失值处理

    1. 均值填充: 对于 数值型 的特征,采用该特征在已有数据中的 平均值或中位数 来填充缺失值。 2. 众数填充: 对于 类别型 的特征,采用该特征在已有数据中 出现频率最高的类别 来填充缺失值。 3. 插值法: 通过已有的数据,推算出缺失值,常用的插值方法包括线性插值、

    2024年02月11日
    浏览(43)
  • pandas数据清洗——缺失值处理

    使用DataFrame对象的info()方法 原始数据 ​​ 注:NaN为空缺值   查看是否有缺失值    Non-Null Count列显示的是每个索引中不是空缺的个数 使用DataFrame的isnull()方法和notnull()方法 1. isnull()方法——判断是否为空,输出结果为True和False,不为NaN时返回False,为NaN时返回True。     2.

    2024年02月12日
    浏览(55)
  • 如何进行错误处理和异常处理?

    错误处理和异常处理是编程中非常重要的概念,它们允许我们在程序运行时处理各种问题和异常情况,以确保程序的稳定性和可靠性。在C语言中,错误处理和异常处理通常通过条件语句和函数来实现。本文将详细讨论C语言中的错误处理和异常处理的方法,包括错误类型、处

    2024年02月09日
    浏览(47)
  • 数据缺失值的4种处理方法

    缺失值的产生的原因多种多样,主要分为机械原因和人为原因。机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。 人为原因是由于人的主观失误、历史

    2024年02月04日
    浏览(36)
  • 【机器学习】数据清洗之处理缺失点

    🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 引言: 在机器学习领域,数据被广泛认为是驱动模型性能的关键。然而,在真实世界的数据中,缺

    2024年02月20日
    浏览(43)
  • 【数据挖掘 | 数据预处理】缺失值处理 & 重复值处理 & 文本处理 确定不来看看?

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月07日
    浏览(72)
  • R语言处理缺失数据(1)-mice

           备注:mice包支持的方法:  

    2024年02月11日
    浏览(33)
  • F#奇妙游(31):数据缺失的处理

    在处理数据时,缺失数据和无效数据是一个常见的问题。在Python中,通常使用None来表示缺失数据。 在F#中,我们可以使用FSharpOption来表示缺失数据。FSharpOption是一个泛型类型,它有两个值:Some和None。Some表示一个值,而None表示一个缺失的值。FSharpOption的定义如下: 从ADT的组

    2024年02月09日
    浏览(31)
  • 缺失数据(missing data)的处理(理论)

    expectation maximization 期望最大化 maximum likelihood 最大似然 case substitution prior knowledge 先验知识 图片来源:https://github.com/dataprofessor/infographic 对原始数据进行缺失值检查。 若无缺失数据,则继续进行其他数据预处理步骤,进而进行机器学习模型的建立。 若有缺失数据,按照数据

    2024年02月06日
    浏览(39)
  • Spark重温笔记(四):秒级处理庞大数据量的 SparkSQL 操作大全,能否成为你的工作备忘指南?

    前言:今天是温习 Spark 的第 4 天啦!主要梳理了 SparkSQL 工作中常用的操作大全,以及演示了几个企业级案例,希望对大家有帮助! Tips:\\\"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博

    2024年04月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包