使用pandas从csv文件读取时间序列数据

3 投票
2 回答
7850 浏览
提问于 2025-04-17 19:53

我的目标是将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']来得到相同的结果。

撰写回答