2013-04-07 38 views
3

我剛剛發現了熊貓和python。我已經閱讀了Wes的書,再加上我一直在SO上翻閱熊貓標記的問題來收集這個問題的答案。所以,我已經試過...我微薄的編程智能通過遺憾的是輝煌燦爛;)FX數據 - 分析日內數據

這裏是我想要做的事:

我有即日FX數據(每小時),而我試圖做一些很簡單的分析。我正在測試價格測試每日開放價格的頻率,並拒絕或通過它。

對我來說這似乎很簡單....我只是迷失在將所有組件集合到一起以獲得最終的完整解決方案。

在僞代碼這裏就是我想實現:

  • 在通過read_csv讀取數據
  • 計算每天的開放水平(?使用at_time)
  • 所有每小時蠟燭
    • 測試蠟燭低點是否低於日線開倉水平
    • 測試蠟燭是否收盤高於日線水平

如果有人可以請指點我在正確的方向,我真的很感激它。我現在正要放棄這一點。我覺得答案應該是很簡單的,但我此刻的

這裏失去的只是數據我一直在努力:

data = pd.read_csv('data/GBPUSD60.csv', 
       names=['Date','Time','Open','High','Low','Close','Volume'], 
       parse_dates={'Timestamp': ['Date', 'Time']}, 
       index_col=['Timestamp']) 

       # Get rid of the volume 
       del data['Volume'] 

導致DF:

     Open High Low  Close 
Timestamp     
2012-11-14 04:00:00 1.58766 1.58890 1.58749 1.58877  
2012-11-14 05:00:00 1.58874 1.58887 1.58819 1.58849  
2012-11-14 06:00:00 1.58849 1.58921 1.58831 1.58890  
2012-11-14 07:00:00 1.58890 1.58895 1.58811 1.58876  
2012-11-14 08:00:00 1.58874 1.58934 1.58841 1.58849  

我假設我需要採取以下兩種方式之一:

  • 要麼按天分組數據,要麼循環檢查日間蠟燭秒。
  • 其次,我可以使用df.apply功能和生成功能測試蠟燭

有兩種方法的問題是,我進入試圖訪問我需要的字段各種各樣的麻煩。

回答

1

您的僞代碼是斑點。這裏的語義

步驟1:日期列

df['date'] = [i.date() for i in df.index] 

2步:獲取每天開放(假設開盤價是當天的第一支蠟燭的政務公開欄)

df['dailyOpen'] = df.groupby('date').open.transform(lambda s: s[0]) 

第3步:比較

df['flag'] = (df.low < df.dailyOpen) & (df.close > df.dailyOpen) 

如果您想要在一天中發生上述情況的次數,t他應該工作

res = df.groupby('date').flag.sum() 
+0

謝謝。採用date()方法。更新了答案。屬性訪問似乎對我現在沒有問題 – user1827356 2013-04-07 13:13:35

+0

+1。原因屬性訪問不起作用是因爲我的列與OP的相同,即大寫字母。 :^) – DSM 2013-04-07 13:18:29

+0

奇妙 - 謝謝你! 我一直在我的頭上撞牆。 我能在本質上做他每週開放等相同的東西嗎?我不得不重新採樣每週ohlc的數據。 再次感謝! – user2253810 2013-04-08 01:55:45