2

私はdatasetに欠損値がありますので、各列の欠損値の数を取得したいと思います。以下は私がやったことです、私は欠損値の数を得ました。どのようにして欠損値の数を取得することができますか?データフレームのスパークで欠損値の数をカウントする

df.describe().filter($"summary" === "count").show 
+-------+---+---+---+ 
|summary| x| y| z| 
+-------+---+---+---+ 
| count| 1| 2| 3| 
+-------+---+---+---+ 

任意の助け私たちは列とそれぞれの欠損値の数を見つけることができますするdataframeを得るためにしてください。

感謝

+0

も参照してください。https://stackoverflow.com/questions/41765739/count-the-number-of-non-null-values-in-a-spark-dataframe/41766643#41766643 –

答えて

7

あなたはそれを整数型に変換した後、isNull()方法のブール出力を加算することにより、欠損値を数えることができる:Python

import org.apache.spark.sql.functions.{sum, col} 
df.select(df.columns.map(c => sum(col(c).isNull.cast("int")).alias(c)): _*).show 

Scalaでは:

from pyspark.sql.functions import col,sum 
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show() 

あるいは、またdf.describe().filter($"summary" === "count")の出力を使用して、データの行の数で各セルに数値を引くことができ:Scala

Python

import org.apache.spark.sql.functions.lit, 

val rows = df.count() 
val summary = df.describe().filter($"summary" === "count") 
summary.select(df.columns.map(c =>(lit(rows) - col(c)).alias(c)): _*).show 

from pyspark.sql.functions import lit 

rows = df.count() 
summary = df.describe().filter(col("summary") == "count") 
summary.select(*((lit(rows)-col(c)).alias(c) for c in df.columns)).show() 
+0

ご協力いただきありがとうございます。しかし、そこに代替WA大きいデータのために多くの時間がかかりましたので、時間がかかりません –

+0

編集で別のアプローチを参照してください – mtoto

関連する問題