【问题标题】:How do I calculate the percentage of None or NaN values in Pyspark? [duplicate]如何计算 Pyspark 中 None 或 NaN 值的百分比? [复制]
【发布时间】:2020-05-15 02:03:56
【问题描述】:

我在 PySpark 中有一个更大的数据集,想要计算每列的 None/NaN 值的百分比,并将其存储在另一个名为 percent_missing 的数据框中。例如,如果以下是输入数据框:

df = sc.parallelize([
    (0.4, 0.3),
    (None, None),
    (9.7, None), 
    (None, None)
]).toDF(["A", "B"])

我希望输出是一个数据框,其中“A”列包含值 0.5,“B”列包含值 0.75。

我正在寻找这样的东西:

for column_ in my_columns:
  amount_missing = df[df[column_] == None].count().div(len(df)) * 100

如果有一个库具有执行此操作的功能,我也很乐意使用它。

【问题讨论】:

标签: python apache-spark pyspark data-cleaning data-processing


【解决方案1】:

以下代码完全符合您的要求:

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|
+---+----+

【讨论】:

    猜你喜欢
    • 2021-05-26
    • 2017-10-13
    • 2015-10-11
    • 2019-06-08
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多