pyspark - взвешенное скользящее среднее через неравномерную длину периода - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь вычислить взвешенное (основанное на длительности) скользящее среднее для кадра данных с неравными записями временных отметок. Ниже приведен пример DF.

+-----+-------------------+
|value|               date|
+-----+-------------------+
|  9.0|2017-03-15 11:42:00|
|  7.0|2017-03-16 13:02:00|
|  7.0|2017-03-16 19:02:00|
|  7.0|2017-03-16 21:38:00|
|  7.0|2017-03-16 21:58:00|
|  6.0|2017-03-18 10:07:00|
| 22.0|2017-03-18 12:21:00|
| 21.0|2017-03-20 23:21:00|
| 19.0|2017-03-21 10:21:00|
| 17.0|2017-03-04 11:01:00|
| 16.0|2017-03-09 18:41:00|
+-----+-------------------+

Я пытался использовать rangeBetween, но я думаю, что требуется только среднее значение Затем попытался использовать метод pyspark.sql.functions.window с w = window('date','7 days','5 minutes') и вычислить средневзвешенное значение с udf, но я не смог даже вычислить простое среднее, потому что его вычисление заняло целую вечность.

w = window('date','7 days','5 minutes')
win = Window.partitionBy(w).orderBy(df['date'].asc())
new_df = df.withColumn('average',avg('value').over(win))

Мне также посоветовали преобразовать таблицу в равномерно распределенный период времени. Какой из них вы советуете и почему, и как подходить к скольжению и заполнению окон? Я новичок в pyspark

Спасибо

...