使用Spark DataFrame和Window函数计算滚动平均回报

时间:2016-11-18 07:04:48

标签: python apache-spark pyspark spark-dataframe pyspark-sql

这是我第一次使用火花数据框,我正在试图弄清楚如何使用窗口函数来计算每个日期的每个股票的平均每日回报。

我试图通过自动收录器进行分组,然后尝试应用滚动差异窗口函数,但我找不到关于窗口函数或它们如何工作的大量文档。

我所拥有的数据是日期,开盘价,高价,低价,收盘价,成交量和自动收报机。

您可以通过从昨天的收盘价中减去昨天的收盘价然后将其全部除以昨天的收盘价来找到滚动平均收益率。

到目前为止我尝试了什么:

w =窗口() df.groupBy("股票&#34)

我正在尝试学习如何使用window和groupby来解决我的问题。

1 个答案:

答案 0 :(得分:3)

你的意思是:

w = Window().partitionBy("ticker").orderBy("date")

df.withColumn("percentDiff", (col("close") - lag("close", 1).over(w)) / lag("close", 1).over(w)) \
  .groupBy("date").agg(mean("percentDiff"))