【问题标题】:spark dataframe null value count火花数据帧空值计数
【发布时间】:2018-02-15 17:22:35
【问题描述】:

我是spark新手,我想计算每列的空率,(我有200列),我的功能如下:

def nullCount(dataFrame: DataFrame): Unit = {
val args = dataFrame.columns.length
val cols = dataFrame.columns
val d=dataFrame.count()
println("Follows are the null value rate of each columns")
for (i <- Range(0,args)) {
  var nullrate = dataFrame.rdd.filter(r => r(i) == (-900)).count.toDouble / d
  println(cols(i), nullrate)
}

}

但是我发现它太慢了,有没有更有效的方法来做到这一点?

【问题讨论】:

  • 我将null值设置为-900以避免模型训练中的infor丢失

标签: apache-spark null spark-dataframe


【解决方案1】:

改编自this answerzero323

import org.apache.spark.sql.functions.{col, count, when}

df.select(df.columns.map(c => (count(c) / count("*")).alias(c)): _*)

使用 -900:

df.select(df.columns.map(
  c => (count(when(col(c) === -900, col(c))) / count("*")).alias(c)): _*)

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2017-02-15
    • 2023-03-29
    相关资源
    最近更新 更多