如說()函數: https://databricks.com/blog/2015/06/02/statistical-and-mathematical-functions-with-dataframes-in-spark.html描述了行,而不是列
的describe()
函數適用於每個數字列,這是可能做到這一點對行?我的DF尺寸是53
cols和346,143
行,所以轉置不是一個選項。我該怎麼做?
我使用Spark 2.11
如說()函數: https://databricks.com/blog/2015/06/02/statistical-and-mathematical-functions-with-dataframes-in-spark.html描述了行,而不是列
的describe()
函數適用於每個數字列,這是可能做到這一點對行?我的DF尺寸是53
cols和346,143
行,所以轉置不是一個選項。我該怎麼做?
我使用Spark 2.11
你可以做自己的UDF。要麼你做一個單獨的UDF每個數量或把一切都放在1 UDF返回複雜結果:
val df = Seq(
(1.0,2.0,3.0,4.0,5.0)
).toDF("x1","x2","x3","x4","x5")
val describe = udf(
{ xs : Seq[Double] =>
val xmin = xs.min
val xmax = xs.max
val mean = xs.sum/xs.size.toDouble
(xmin,xmax,mean)
}
)
df
.withColumn("describe",describe(array("*")))
.withColumn("min",$"describe._1")
.withColumn("max",$"describe._2")
.withColumn("mean",$"describe._3")
.drop($"describe")
.show
給出:
+---+---+---+---+---+---+---+----+
| x1| x2| x3| x4| x5|min|max|mean|
+---+---+---+---+---+---+---+----+
|1.0|2.0|3.0|4.0|5.0|1.0|5.0| 3.0|
+---+---+---+---+---+---+---+----+
udf函數僅支持11列,OP表示53列。你必須解釋如何處理53個cols。 –
@RameshMaharjan這也適用於超過11列(我測試過),因爲UDF只有1個參數 –
是的你是對的。我的錯誤,我沒有注意到。 ;) 謝謝 –
所以,你要統計(最小值,最大值,平均值等)對所有列1排?然後,創建一個scala函數(用於數據集)或UDF(DataFrame),它可以進行所需的計算 –