2016-04-17 42 views
0

如何使用Python/pandas從此csv中獲取5分鐘的數據? 對於每隔5分鐘的時間間隔,我試圖獲取5分鐘間隔的日期,時間,開放,高,低,關閉,音量。以5分鐘爲間隔的組數據框

DATE  TIME  OPEN HIGH LOW  CLOSE VOLUME 
02/03/1997 09:04:00 3046.00 3048.50 3046.00 3047.50 505   
02/03/1997 09:05:00 3047.00 3048.00 3046.00 3047.00 162   
02/03/1997 09:06:00 3047.50 3048.00 3047.00 3047.50 98   
02/03/1997 09:07:00 3047.50 3047.50 3047.00 3047.50 228   
02/03/1997 09:08:00 3048.00 3048.00 3047.50 3048.00 136   
02/03/1997 09:09:00 3048.00 3048.00 3046.50 3046.50 174   
02/03/1997 09:10:00 3046.50 3046.50 3045.00 3045.00 134   
02/03/1997 09:11:00 3045.50 3046.00 3044.00 3045.00 43   
02/03/1997 09:12:00 3045.00 3045.50 3045.00 3045.00 214   
02/03/1997 09:13:00 3045.50 3045.50 3045.50 3045.50 8    
02/03/1997 09:14:00 3045.50 3046.00 3044.50 3044.50 152 
+0

問題必須表現出最小的研究工作。你有什麼嘗試? –

+0

粘貼鏈接並不告訴我你已經嘗試過。這不是在你問這裏之前努力解決這個問題的一個例子。你能發佈一些你試過的代碼嗎?如果你還沒有任何代碼,你可能不想問這裏,直到你做。 –

+1

我去扔了這個,並嘗試了很多不同的東西。 [鏈接(http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.DataFrame.html)我嘗試了asfreq和剪輯以及其他一些東西。我每隔一段時間就會想到.at_time,並以某種方式將它們加在一起。但我認爲還有更好的辦法。但我會繼續嘗試。 –

回答

4

您可以使用df.resample根據日期/時間變量進行聚合。你需要一個日期時間指數,你可以指定在讀取CSV文件:

df = pd.read_csv("filename.csv", parse_dates = [["DATE", "TIME"]], index_col=0) 

這將導致與在日期和時間組合索引(source)一個數據幀:

df.head() 
Out[7]: 
         OPEN HIGH  LOW CLOSE VOLUME 
DATE_TIME             
1997-02-03 09:04:00 3046.0 3048.5 3046.0 3047.5  505 
1997-02-03 09:05:00 3047.0 3048.0 3046.0 3047.0  162 
1997-02-03 09:06:00 3047.5 3048.0 3047.0 3047.5  98 
1997-02-03 09:07:00 3047.5 3047.5 3047.0 3047.5  228 
1997-02-03 09:08:00 3048.0 3048.0 3047.5 3048.0  136 

之後,您可以使用resample獲取這五分鐘間隔的總和,平均值等。

df.resample("5T").mean() 
Out[8]: 
         OPEN HIGH  LOW CLOSE VOLUME 
DATE_TIME             
1997-02-03 09:00:00 3046.0 3048.5 3046.0 3047.5 505.0 
1997-02-03 09:05:00 3047.6 3047.9 3046.8 3047.3 159.6 
1997-02-03 09:10:00 3045.6 3045.9 3044.8 3045.0 110.2 
1997-02-03 09:15:00 3043.6 3044.0 3042.8 3043.2  69.2 
1997-02-03 09:20:00 3044.7 3045.2 3044.5 3045.0  65.8 
1997-02-03 09:25:00 3043.8 3044.0 3043.5 3043.7  59.0 
1997-02-03 09:30:00 3044.6 3045.0 3044.3 3044.6  56.0 
1997-02-03 09:35:00 3044.5 3044.5 3043.5 3044.5  44.0 

牛逼用於分鐘的頻率。Here是其他單位的名單。)

+0

當我嘗試(「5T」)甚至(「H」),我得不到這個工作,我得到這個DatetimeIndexResampler [頻率= <5 * Minutes>,軸= 0,封閉=左,標籤=左,約定=開始,基= 0]。但是,當我運行只是df.resample它工作正常,沒有間隔調整。 –

+0

你能解釋你想做什麼類型的調整嗎? – ayhan

+0

'DatetimeIndexResampler [freq = <5 * Minutes>,axis = 0,closed = left,label = left,convention = start,base = 0]是調用resample的結果。您可以在該對象上應用方法(如採取均值,標準差等)。如果你沒有調用任何方法,它只會返回分組。你可以添加你期望的例子輸出到這個問題嗎? – ayhan

相關問題