【问题标题】:Get "Adj Close" using pandas DataReader使用 pandas DataReader 获取“Adj Close”
【发布时间】:2016-11-03 03:17:14
【问题描述】:

我刚从 pandas.io 切换到 pandas_datareader,我在获取调整后的收盘价时遇到了困难。在我可以使用以下代码之前

pd.io.data.get_data_yahoo(stock, start, end)['Adj Close']

现在当我尝试使用数据阅读器(作为网络导入)时,它不起作用。

web.get_data_yahoo(stock, start, end)['Adj Close'] 

我试图查找文档以查看 pandas_datareader 是否使用了新参数,但我没有运气。无论如何,是否可以使用新的 pandas 库仅提取调整后的关闭数据?

【问题讨论】:

    标签: python pandas datareader yahoo-finance


    【解决方案1】:

    我会为此使用DataReader

    In [61]: from pandas_datareader.data import DataReader
    
    In [62]: DataReader('AAPL', 'yahoo', '2016-06-25', '2016-06-30')['Adj Close']
    Out[62]:
    Date
    2016-06-27    92.040001
    2016-06-28    93.589996
    2016-06-29    94.400002
    Name: Adj Close, dtype: float64
    

    实际上您的代码也可以正常工作(pandas 0.18.1 和 pandas_datareader 0.2.1):

    In [63]: import pandas_datareader.data as web
    
    In [64]: web.get_data_yahoo('AAPL', '2016-06-25', '2016-06-30')
    Out[64]:
                     Open       High        Low      Close    Volume  Adj Close
    Date
    2016-06-27  93.000000  93.050003  91.500000  92.040001  45489600  92.040001
    2016-06-28  92.900002  93.660004  92.139999  93.589996  39311500  93.589996
    2016-06-29  93.970001  94.550003  93.629997  94.400002  36427800  94.400002
    
    In [65]: web.get_data_yahoo('AAPL', '2016-06-25', '2016-06-30')['Adj Close']
    Out[65]:
    Date
    2016-06-27    92.040001
    2016-06-28    93.589996
    2016-06-29    94.400002
    Name: Adj Close, dtype: float64
    

    【讨论】:

    • @Evy555,你有什么版本的 pandas 和 pandas_datareader?您收到什么错误/异常?
    • 我继续使用完全相同的代码重写了所有内容。不知道为什么,但它现在适用于 DataReader 和 get_data_yahoo。
    【解决方案2】:

    此解决方案不再可行。当我跑步时:

    import pandas_datareader.data as web
    web.get_data_yahoo('AAPL')
    

    这会产生:

    requests.exceptions.ConnectionError: HTTPConnectionPool(host='ichart.finance.yahoo.com', port=80): url 超出最大重试次数:/table.csv?a=0&ignore=.csv&s=AAPL&b=1&e= 7&d=6&g=d&f=2017&c=2010 (由NewConnectionError引起(': 无法建立新连接: [Errno 8] nodename nor servname provided, or not known',))

    看起来 Quanld 可以提供更好的 solution

    【讨论】:

    • 是的,雅虎最近遇到了一些问题。我切换到谷歌。
    • @Evy555 您是否找到了获取调整后关闭数据的解决方案? (关心分红)我不相信google的close field被调整了。
    • 不幸的是,谷歌仍然没有调整股息价格。我还没有找到其他来源。
    【解决方案3】:

    从雅虎读取已损坏。如果可以,请改用 Google。例如:

    df = web.DataReader("AAPL", 'google', start, end)
    

    【讨论】:

      【解决方案4】:

      试试这个:

      从 pandas_datareader 导入 get_data_yahoo 作为 gy

      X = gy('AAPL','2019-01-01','2019-03-15')['Adj Close']
      
      print(X.head())
      

      【讨论】:

        猜你喜欢
        • 2019-12-13
        • 2018-09-14
        • 2021-12-11
        • 1970-01-01
        • 2018-12-13
        • 1970-01-01
        • 2011-06-04
        • 2020-03-29
        • 1970-01-01
        相关资源
        最近更新 更多