2016-11-18 9 views
0

コード:pysparkデータフレームを使用してstd devをパーティション化またはグループ化したデータを見つける方法は?

w = Window().partitionBy("ticker").orderBy("date") 
x = s_df.withColumn("daily_return", (col("close") - lag("close", 1).over(w))/lag("close", 1).over(w)) 

どのように見えるかs_df:その後、どのように見えるかをX

+----------+------+------+------+------+--------+------+ 
|  date| open| high| low| close| volume|ticker| 
+----------+------+------+------+------+--------+------+ 
|2016-11-02| 111.4|112.35|111.23|111.59|28331709| AAPL| 
|2016-11-01|113.46|113.77|110.53|111.49|43825812| AAPL| 
|2016-10-31|113.65|114.23| 113.2|113.54|26419398| AAPL| 
+----------+------+------+------+------+--------+------+ 

+----------+--------------------+ 
|  date| avg(daily_return)| 
+----------+--------------------+ 
|2015-12-28|0.004124786535090563| 
|2015-11-20|0.006992226387807268| 
|2015-12-29| 0.01730500286123971| 

私はすべての平均の標準偏差(daily_return)を見つけたいですティッカーのグループ。私が試した何

x.agg(stddev("avg(daily_return)")).over(w) 

私はこのエラーを取得する:

AttributeError: 'DataFrame' object has no attribute 'over' 

は、私は可能ではないが何をしようとしているか、それともそれを行うための別の方法は何ですか?

enter image description here

+0

'avg(daily_return)'カラムにどうやって到着しましたか? 'x'のコードが何か他のものを生成するためです。 – mtoto

+0

'groupBy(" date "、" ticker ")を実行できません。 – mtoto

+0

私たちは[チャットでこのディスカッションを続行しましょう](http://chat.stackoverflow.com/rooms/128470/discussion-between-pr338-and-mtoto)。 – pr338

答えて

2

tickerをできるように、これらの二つが一緒に集約することはできませんdataとは異なる寸法です。次のことができます。あなたが唯一のティッカーdatetickerグループがあり、標準偏差は不定となりますので

s_df_w_daily_rets = s_df.withColumn("daily_return", 
    (col("close") - lag("close", 1).over(w))/lag("close", 1).over(w)) 

s_df_w_daily_rets.groupBy("date").agg(avg("daily_return")) 
s_df_w_daily_rets.groupBy("ticker").agg(stddev("daily_return")) 

groupBy("date","ticker").agg(..)は意味がありません。

0

あなたは

x.groupBy("A").agg(stddev("D")) 
+0

これは、エラー分析エラーを返します:u "A '与えられた入力列を解決できません:[B、avg(E)];" – pr338

関連する問題