Mah*_*HTB 8 dataframe apache-spark apache-spark-sql
我有一个dataset缺少值,我想得到每列的缺失值的数量.以下是我所做的,我得到了非缺失值的数量.如何使用它来获取缺失值的数量?
df.describe().filter($"summary" === "count").show
Run Code Online (Sandbox Code Playgroud)
+-------+---+---+---+
|summary| x| y| z|
+-------+---+---+---+
| count| 1| 2| 3|
+-------+---+---+---+
Run Code Online (Sandbox Code Playgroud)
请帮助dataframe我们找到一个列,并为每个列找到缺失值的列数.
非常感谢
mto*_*oto 22
isNull()在将方法的布尔输出转换为整数后,您可以通过对方法的布尔输出求和来计算缺失值:
在Scala:
import org.apache.spark.sql.functions.{sum, col}
df.select(df.columns.map(c => sum(col(c).isNull.cast("int")).alias(c)): _*).show
Run Code Online (Sandbox Code Playgroud)
在Python:
from pyspark.sql.functions import col,sum
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()
Run Code Online (Sandbox Code Playgroud)
或者,您也可以使用输出df.describe().filter($"summary" === "count"),并按数据中的行数减去每个单元格中的数字:
在Scala:
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
Run Code Online (Sandbox Code Playgroud)
在Python:
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11887 次 |
| 最近记录: |