Apache spark Pyspark上大约1000列的并行处理

Apache spark Pyspark上大约1000列的并行处理,apache-spark,machine-learning,pyspark,Apache Spark,Machine Learning,Pyspark,我有一个大约1500列的数据集,我正在尝试将所有列的零替换为Null。如何在Pyspark中有效地执行此操作 我曾尝试使用spark UDF,但由于数据很广,我无法并行处理多个列 我们不需要UDF。您可以使用spark内置的函数df.na.replace来实现它。你可以找到更多关于它的信息。我举了一个简单的例子来说明这一点 from pyspark.sql import functions as F df = sc.parallelize([(1, 0, 5), (1,2, 0), (0,

我有一个大约1500列的数据集,我正在尝试将所有列的零替换为Null。如何在Pyspark中有效地执行此操作


我曾尝试使用spark UDF,但由于数据很广,我无法并行处理多个列

我们不需要UDF。您可以使用spark内置的函数df.na.replace来实现它。你可以找到更多关于它的信息。我举了一个简单的例子来说明这一点

 from pyspark.sql import functions as F

 df = sc.parallelize([(1, 0, 5), (1,2, 0), (0,4, 5),  (1,7, 0), (0,0, 3),  
 (2,0, 5),  (2,3, 0)]).toDF(["a", "b", "c"])

        +---+---+---+
    |  a|  b|  c|
    +---+---+---+
    |  1|  0|  5|
    |  1|  2|  0|
    |  0|  4|  5|
    |  1|  7|  0|
    |  0|  0|  3|
    |  2|  0|  5|
    |  2|  3|  0|
    +---+---+---+

    df1=df.na.replace(0,None).show()

    +----+----+----+
    |   a|   b|   c|
    +----+----+----+
    |   1|null|   5|
    |   1|   2|null|
    |null|   4|   5|
    |   1|   7|null|
    |null|null|   3|
    |   2|null|   5|
    |   2|   3|null|
    +----+----+----+
计算df中的不同值的步骤

    from pyspark.sql import functions as F
    df2=df1.agg(*(F.countDistinct(F.col(c)).alias(c) for c in df.columns))

    df2.show()

    +---+---+---+
    |  a|  b|  c|
    +---+---+---+
    |  2|  4|  2|
    +---+---+---+     
计算99%和1%

    df1.summary('99%', '1%').show()

    +-------+---+---+---+
    |summary|  a|  b|  c|
    +-------+---+---+---+
    |    99%|  2|  7|  5|
    |     1%|  1|  2|  3|
    +-------+---+---+---+

谢谢我可能提出了一个过于简单的问题。我还研究了df.summary提供之外的基本统计数据的计算,例如统计不同的值、99%、1%等等。。有没有一种有效的方法可以做到这一点?