Hor*_*aje 3 python data-processing apache-spark data-cleaning pyspark
我在 PySpark 中有一个更大的数据集,想要计算每列 None/NaN 值的百分比并将其存储在另一个名为 Percentage_missing 的数据框中。例如,如果以下是输入数据帧:
df = sc.parallelize([
(0.4, 0.3),
(None, None),
(9.7, None),
(None, None)
]).toDF(["A", "B"])
Run Code Online (Sandbox Code Playgroud)
我希望输出是一个数据框,其中“A”列包含值 0.5,“B”列包含值 0.75。
我正在寻找这样的东西:
for column_ in my_columns:
amount_missing = df[df[column_] == None].count().div(len(df)) * 100
Run Code Online (Sandbox Code Playgroud)
如果有一个库具有执行此操作的功能,我也很乐意使用它。
以下代码完全按照您的要求执行:
from pyspark.sql.functions import *
df:
+----+----+
| A| B|
+----+----+
| 0.4| 0.3|
|null|null|
| 9.7|null|
|null|null|
+----+----+
# Generic solution for all columns
amount_missing_df = df.select([(count(when(isnan(c) | col(c).isNull(), c))/count(lit(1))).alias(c) for c in df.columns])
amount_missing_df.show()
amount_missing_df:
+---+----+
| A| B|
+---+----+
|0.5|0.75|
+---+----+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11562 次 |
| 最近记录: |