【问题标题】:How to Import data through Panda for several years but specifc months?如何通过 Panda 导入几年但特定月份的数据?
【发布时间】:2017-09-18 18:05:53
【问题描述】:

我想从熊猫导入数据 10 年。但我需要每个季节单独导入。例如 2000 年到 2010 年 Spring 期间的所有数据。

我有以下代码,但这并没有将季节分开。

import pandas_datareader.data as web
import datetime
start = datetime.datetime(2000, 1, 1)
end = datetime.datetime(2010, 1, 1)
f = web.DataReader("F", 'yahoo', start, end)

还有吗?

【问题讨论】:

  • 在一个数据框中导入所有数据,然后按季节拆分。

标签: python python-2.7 python-3.x pandas-datareader


【解决方案1】:

假设您的目标是春季月份(可能是 1 月 1 日至 4 月 30 日,可能会有所变化),您可以创建一个日期为 tupleslist,其中每个 tuple 包含 startend 日期对于给定的year。例如,list 的第一个元素是(datetime.datetime(2000, 1, 1, 0, 0), datetime.datetime(2000, 4, 30, 0, 0))。这将是 2000 年 1 月 1 日至 4 月 30 日。

一旦您有了日期为tupleslist,您就可以遍历它们并获取startend 日期的每个组合的数据。结果也将是 list,但这次将是 listpandas DataFrames,您可以很容易地将它们连接在一起以获得所需的数据集。以下应作为工作脚本:

import pandas_datareader.data as web
import datetime
import pandas as pd


all_dates = [(datetime.datetime(year, 1, 1), datetime.datetime(year, 4, 30)) for year in range(2000, 2011)]
f = pd.concat([web.DataReader("F", 'yahoo', start, end) for start, end in all_dates], axis=1)

print(f.tail())

#             Close       Volume  Adj Close  
# Date                                       
# 2010-04-26  14.46  123029200.0  11.684445  
# 2010-04-27  13.57  292667400.0  10.965278  
# 2010-04-28  13.25  208023500.0  10.706701  
# 2010-04-29  13.58  110114400.0  10.973358  
# 2010-04-30  13.02  146322900.0  10.520849  

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 2015-04-03
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多