【发布时间】:2020-06-13 14:59:22
【问题描述】:
我有一个数据框:
val DF = {spark.read.option("header", value = true).option("delimiter", ";").csv(path_file)}
val cord = DF.select("time","longitude", "latitude","speed")
我想计算速度列每一行的z分数(x-mean)/std。我计算平均值和标准差:
val std = DF.select(col("speed").cast("double")).as[Double].rdd.stdev()
val mean = DF.select(col("speed").cast("double")).as[Double].rdd.mean()
如何计算每行列速度的z分数并得到这个结果:
+----------------+----------------+-
|A |B |speed | z score
+----------------+----------------+---------------------+
|17/02/2020 00:06| -7.1732833| 50 | z score
|17/02/2020 00:16| -7.1732833| 40 | z score
|17/02/2020 00:26| -7.1732833| 30 | z score
如何为每一行计算它。
【问题讨论】:
-
用你的平均值和标准来计算每一行的分数是否有意义?还是要计算每一行从第一行到当前行的均值和标准差?
-
我想用相同的平均值和标准计算每一行的 z 分数,像这样 (50-mean/std) 和 (40-mean/std) .... ......
-
我明白了。然后使用
df.withColumn("z test", col("speed") - mean / std) -
谢谢它对我有用。
标签: scala apache-spark hypothesis-test