Расчет среднего и стандартного отклонения с использованием Spark / SCALA - PullRequest
0 голосов
/ 25 марта 2020

У меня есть кадр данных:

+------------------+
|         speed    |
+------------------+
|               0.0|
|               0.0|
|               0.0|
|               0.0|
|               0.0|
|               0.0|
| 3.851015222867941|
| 4.456657435740331|
|               0.0|
|               NaN|
|               0.0|
|               0.0|
|               NaN|
|               0.0|
|               0.0|
| 5.424094717765175|
|1.5781185921913181|
|2.6695439462433033|
| 17.43513658955467|
| 5.440912941359523|
|11.507138536880484|
|12.895677610360089|
| 9.930875909722456|
+------------------+

Я хочу вычислить среднее и стандартное отклонение столбца скорости. Когда я выполняю этот код

dataframe_final.select("speed").orderBy("id").agg(avg("speed")).show(1000)

, я получаю

+------------+
|avg(speed)|
+------------+
|         NaN|
+------------+

Откуда возникает проблема? Есть ли возможность решить это?

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

В вашем наборе данных есть NaN (не число) значений. Вы не можете рассчитать среднее с этими.

Либо вы фильтруете их:


dataframe_final
  .filter($"speed".isNotNull())
  .select("speed")
  .orderBy("id")
  .agg(avg("speed"))
  .show(1000)

, либо заменяете их на 0, используя функцию fill :

dataframe_final
  .select("speed")
  .na.fill(0)
  .agg(avg("speed"))
  .show(1000)

Кроме того, вы пытаетесь объединить столбец Vitesse, а не speed.

1 голос
/ 25 марта 2020
we can also createOrReplaceTempView(dataframe_final) and then we can use spark sql to query and take avg of the speed column

val tableview= dataframe_final.createOrReplaceTempView()
val query = select avg(speed) from tableview where speed IS NOT NULL order by Id
spark.sql(query).show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...