IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 《大数据机器学习实践探索》 ---- 特征工程:基于spark 的缺失值处理 -> 正文阅读

[大数据]《大数据机器学习实践探索》 ---- 特征工程:基于spark 的缺失值处理


缺失值的定义

缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。

python 中的空值

scala 中的空值

  • Unit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。
  • Null null 或空引用

空值是 scala.Null 类型。

Scala.Null和scala.Nothing是用统一的方式处理Scala面向对象类型系统的某些"边界情况"的特殊类型。

Null类是null引用对象的类型,它是每个引用类(继承自AnyRef的类)的子类。Null不兼容值类型。


缺失值填充的目的


spark 缺失值填充

dataset 的 na 主要出现在下面的函数中

package org.apache.spark.sql
...
def na : org.apache.spark.sql.DataFrameNaFunctions = { /* compiled code */ }

# 函数罗列如下:
package org.apache.spark.sql
@org.apache.spark.annotation.InterfaceStability.Stable
final class DataFrameNaFunctions private[sql] (df : org.apache.spark.sql.DataFrame) extends scala.AnyRef {
  def drop() : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def drop(how : scala.Predef.String) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def drop(cols : scala.Array[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def drop(cols : scala.Seq[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def drop(how : scala.Predef.String, cols : scala.Array[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def drop(how : scala.Predef.String, cols : scala.Seq[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def drop(minNonNulls : scala.Int) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def drop(minNonNulls : scala.Int, cols : scala.Array[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def drop(minNonNulls : scala.Int, cols : scala.Seq[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Long) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Double) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Predef.String) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Long, cols : scala.Array[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Double, cols : scala.Array[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Long, cols : scala.Seq[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Double, cols : scala.Seq[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Predef.String, cols : scala.Array[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Predef.String, cols : scala.Seq[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Boolean) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Boolean, cols : scala.Seq[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(value : scala.Boolean, cols : scala.Array[scala.Predef.String]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(valueMap : java.util.Map[scala.Predef.String, scala.Any]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def fill(valueMap : scala.Predef.Map[scala.Predef.String, scala.Any]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def replace[T](col : scala.Predef.String, replacement : java.util.Map[T, T]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def replace[T](cols : scala.Array[scala.Predef.String], replacement : java.util.Map[T, T]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def replace[T](col : scala.Predef.String, replacement : scala.Predef.Map[T, T]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
  def replace[T](cols : scala.Seq[scala.Predef.String], replacement : scala.Predef.Map[T, T]) : org.apache.spark.sql.DataFrame = { /* compiled code */ }
}

注意主要出现了几个动作:

  • drop
  • fill
  • replace

drop

def drop(how: String): DataFrame
Returns a new DataFrame that drops rows containing null or NaN values.

If how is “any”, then drop rows containing any null or NaN values. If how is “all”, then drop rows only if every column is null or NaN for that row.

fill

def fill(valueMap: Map[String, Any]): DataFrame
(Scala-specific) Returns a new DataFrame that replaces null values.

The key of the map is the column name, and the value of the map is the replacement value. The value must be of the following type: Int, Long, Float, Double, String, Boolean. Replacement values are cast to the column data type.

For example, the following replaces null values in column “A” with string “unknown”, and null values in column “B” with numeric value 1.0.

df.na.fill(Map(
  "A" -> "unknown",
  "B" -> 1.0
))

replace


参考文献

最新版文档:

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:45:16  更:2021-07-25 11:45:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/30 16:36:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码