加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 计算Spark DataFrame中非空值的数量

发布时间:2020-12-16 18:21:17 所属栏目:安全 来源:网络整理
导读:我有一个带有一些列的数据框,在进行分析之前,我想了解这样的数据帧是多么完整,所以我想过滤数据帧并为每列计算非空值的数量,可能返回数据帧回来了. 基本上,我试图获得与this question中表达的相同的结果,但使用Scala而不是Python … 说你有: val row = Row(
我有一个带有一些列的数据框,在进行分析之前,我想了解这样的数据帧是多么完整,所以我想过滤数据帧并为每列计算非空值的数量,可能返回数据帧回来了.

基本上,我试图获得与this question中表达的相同的结果,但使用Scala而不是Python …

说你有:

val row = Row("x","y","z")
val df = sc.parallelize(Seq(row(0,4,3),row(None,3,4),None,5))).toDF()

如何总结每列的非空数并返回具有相同列数的数据帧,只返回一行的答案?

解决方法

虽然我喜欢Psidoms的答案,但我常常对空值的分数感兴趣,因为只有非空值的数量并不能说明多少……

你可以这样做:

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

df.agg(
   (sum(when($"x".isNotNull,0).otherwise(1))/count("*")).as("x : fraction null"),(sum(when($"y".isNotNull,0).otherwise(1))/count("*")).as("y : fraction null"),(sum(when($"z".isNotNull,0).otherwise(1))/count("*")).as("z : fraction null")
 ).show()

编辑:sum(when($“x”.isNotNull,0).otherwise(1))也可以由count($“x”)替换,只计算非空值.当我发现这不明显时,我倾向于使用更清晰的总和符号

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读