Apache spark Pyspark上大约1000列的并行处理
我有一个大约1500列的数据集,我正在尝试将所有列的零替换为Null。如何在Pyspark中有效地执行此操作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,
我曾尝试使用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%等等。。有没有一种有效的方法可以做到这一点?