2016-04-17 41 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

相关问题