使用 pandas 将 csv 文件中的数据读入时间序列
Posted
技术标签:
【中文标题】使用 pandas 将 csv 文件中的数据读入时间序列【英文标题】:Reading data from csv file into time series with pandas 【发布时间】:2013-03-11 04:10:28 【问题描述】:我的目标是将 EURUSD data(每天)读入一个时间序列对象,我可以在其中轻松地根据不规则的时间范围对信息进行切片、聚合和重新采样。这很可能是一个简单的答案。我正在使用 Python 进行数据分析,但似乎无法弥合差距。
下载并解压data后,我运行以下代码:
>>> import pandas as pd
>>> df = pd.read_csv('EURUSD_day.csv', parse_dates = 'Timestamp' : ['<DATE>', '<TIME>'], index_col = 'Timestamp')
到目前为止一切顺利。我现在有一个以时间戳为索引的漂亮数据框。
但是,这本书暗示(第 295 页)我应该能够对数据进行子集化,如下所示,以查看 2001 年的所有数据。
>>> df['2001']
但是,这行不通。
阅读此question and answer 告诉我可以导入时间戳:
>>> from pandas.lib import Timestamp
>>> s = df['<CLOSE>']
这似乎适用于特定的一天:
>>> s[Timestamp('2001-01-04)]
0.9506999999
然而,以下代码为我想要的 2001 年所有数据范围生成了一个值。
>>> s[Timestamp('2001')]
0.8959
我知道我缺少一些简单的东西,一些基本的东西。有人可以帮忙吗?
谢谢你, 布赖恩
【问题讨论】:
【参考方案1】:pg 上的例子。 295 正在 Series 对象上执行,这就是使用年份进行索引的原因。使用 DataFrame,您可能希望 df.ix['2001']
获得相同的结果。
【讨论】:
谢谢!!!您的答案非常适合数据框。如何将数据导入 Series 对象? 系列是一个简单的一维数组类对象。它有一个索引和与每个索引关联的值。一个 DataFrame 由多个 Series 对象组成(每一列都是一个 Series)。因此,要从 DataFrame 中获取系列,您可以选择任何单独的列,例如df["Column Name"]
,结果将是一个系列。或者要按索引访问该列中的值,请尝试df["Column Name"]['2001']
。
谢谢您,先生。我知道我遗漏了一些基本的,而你做到了。我无法告诉你我多么感谢你清晰简洁的解释。
@Brian:您并不需要对任何答案进行投票(单击向上箭头),但是由于这个答案(以及相关的 cmets)对您有很大帮助,因此您应该考虑投票社区将更有可能在未来相应地信任此用户。【参考方案2】:
如果你想获取所有的列,那么df.ix['2001']
。
如果你只对“CLOSE”感兴趣,因为你已经做了s = df['<CLOSE>']
,你可以通过s['2001']
得到2001年的值
【讨论】:
以上是关于使用 pandas 将 csv 文件中的数据读入时间序列的主要内容,如果未能解决你的问题,请参考以下文章
将当前工作目录中的所有 CSV 文件读入具有正确文件名的 pandas
如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?
如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?