使用pandas从csv文件读取时间序列数据
我的目标是将EURUSD的数据(每日数据)读入一个时间序列对象,这样我就可以轻松地对数据进行切片、汇总和重新采样,基于不太规则的时间框架。这可能是个简单的问题。我正在使用Python进行数据分析,但似乎无法解决这个问题。
在下载并解压缩数据后,我运行了以下代码:
>>> import pandas as pd
>>> df = pd.read_csv('EURUSD_day.csv', parse_dates = {'Timestamp' : ['<DATE>', '<TIME>']}, index_col = 'Timestamp')
到目前为止一切顺利。我现在有一个漂亮的数据框,时间戳作为索引。
然而,书中提到(第295页)我应该能够像下面这样对数据进行子集选择,以查看2001年的所有数据。
>>> df['2001']
但是,这个方法不奏效。
阅读这个问题和答案告诉我,我可以导入时间戳:
>>> from pandas.lib import Timestamp
>>> s = df['<CLOSE>']
这似乎对某一天的数据有效:
>>> s[Timestamp('2001-01-04)]
0.9506999999
然而,以下代码却只返回了我想要的2001年所有数据的一个值。
>>> s[Timestamp('2001')]
0.8959
我知道我缺少了一些简单的东西,一些基本的东西。有人能帮忙吗?
谢谢,
布莱恩
2 个回答
0
如果你想获取所有的列,可以使用 df.ix['2001']
。
如果你只对“收盘价”感兴趣,因为你已经用 s = df['<CLOSE>']
获取了这个数据,那么你可以通过 s['2001']
来获取2001年的值。
4
第295页的例子是在Series对象上进行的,所以用年份来索引是有效的。如果你是在DataFrame上操作,你需要用df.ix['2001']
来得到相同的结果。