使用 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['&lt;CLOSE&gt;'],你可以通过s['2001']得到2001年的值

【讨论】:

以上是关于使用 pandas 将 csv 文件中的数据读入时间序列的主要内容,如果未能解决你的问题,请参考以下文章

将当前工作目录中的所有 CSV 文件读入具有正确文件名的 pandas

Pandas.read_csv 将所有文件读入一列

如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?

如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?

将文本文件中的数据导入 pandas 数据框

如何将带有文本信息的 1.3 GB csv 文件读入 Python 的 pandas 对象?