如何使用火花统计功能

问题描述 投票:0回答:1

我使用spark-sql-2.4.1v我正在尝试在给定数据的每一列上找到分位数,即precentile 0,precentile 25等。

当我在做多个百分位数时,如何从结果中检索每个计算的百分位数?

这里是样品。数据如下所示

+----+---------+-------------+----------+-----------+
|  id|     date|total_revenue|con_dist_1| con_dist_2|
+----+---------+-------------+----------+-----------+
|3310|1/15/2018|  0.010680705|         6|0.019875458|
|3310|1/15/2018|  0.006628853|         4|0.816039063|
|3310|1/15/2018|   0.01378215|         4|0.082049528|
|3310|1/15/2018|  0.010680705|         6|0.019875458|
|3310|1/15/2018|  0.006628853|         4|0.816039063|
|3310|1/15/2018|   0.01378215|         4|0.082049528|
|3310|1/15/2018|  0.010680705|         6|0.019875458|
|3310|1/15/2018|  0.010680705|         6|0.019875458|
|3310|1/15/2018|  0.014933087|         5|0.034681906|
|3310|1/15/2018|  0.014448282|         3|0.082049528|
+----+---------+-------------+----------+-----------+

我需要计算“ con_dist_1”,“ con_dist_2”等的偏心0,偏心25等。

我正在对下半数50做以下操作

val col_list = Array("con_dist_1","con_dist_2")
val median_col_list = partitioned_data.stat.approxQuantile(col_list, Array(0.5),0.0)
println(median_col_list)

其给出的结果为

median_col_list: Array[Array[Double]] = Array(Array(4.0), Array(0.034681906))

如何绘制结果?有什么办法可以使结果低于专栏?请针对以上情况提出任何更好的建议。

apache-spark pyspark statistics apache-spark-dataset
1个回答
0
投票
val col_list = Array("con_dist_1", "con_dist_2") val percentiles = Array(0.0, 0.25, 0.5, 0.75, 1.0) val median_col_list = partitioned_data.stat.approxQuantile(col_list, percentiles, 0.0)

结果现在将是具有所有百分位数的数组的数组。

要知道百分位数对应于哪一列很简单,它取决于col_list的顺序。因此,在这种情况下,median_col_list(0)对应于“ con_dist_1”,median_col_list(1)对应于“ con_dist_1”。遵循相同的比喻,例如median_col_list(1)(2)对应于“ con_dist_1”列的50%。
© www.soinside.com 2019 - 2024. All rights reserved.