【问题标题】:Pandas DataReader handle RemoteError yahoo financePandas DataReader 处理 RemoteError 雅虎财经
【发布时间】:2018-07-12 07:20:22
【问题描述】:

我正在使用下面的代码将一个大的股票代码列表解析到雅虎数据阅读器,我正在尝试按照下面的方法取回一个数据帧。如果列表很大,我经常会收到 RemoteError,但每次都在不同的代码上。我不确定如何处理 RemoteError,我很高兴放弃代码并继续列表中的下一个代码。但是,我想再次尝试获取 adj 收盘价数据。我认为使用 for 循环并添加时间延迟将有助于雅虎请求,但我仍然收到远程错误。有什么想法吗?

 IBM   MSFT   ORCL    TSLA   YELP
Date                                           
2014-01-02  184.52  36.88  37.61  150.10  67.92
2014-01-03  185.62  36.64  37.51  149.56  67.66
2014-01-06  184.99  35.86  37.36  147.00  71.72
2014-01-07  188.68  36.14  37.74  149.36  72.66
2014-01-08  186.95  35.49  37.61  151.28  78.42

import pandas_datareader.data as web
import datetime as dt
import pandas as pd
import time
from pandas_datareader._utils import RemoteDataError

Which_group = ['Accident & Health Insurance'] ##<<<<put in group here
df = pd.read_csv('/home/ross/Downloads/UdemyPairs/stocks1.csv')
df.set_index('categoryName', inplace = True)
df1 = df.loc[Which_group]
tickers = df1.Ticker.tolist()
print(tickers)



#tickers = ['SPY', 'AAPL', 'MSFT'] # add as many tickers
start = dt.datetime(2013, 1,1)
end = dt.datetime.today()

# Function starts here
def get_previous_close(strt, end, tick_list, this_price):
    """ arg: `this_price` can take str Open, High, Low, Close, Volume"""
    #make an empty dataframe in which we will append columns
    adj_close = pd.DataFrame([])
    # loop here. 
    for idx, i in enumerate(tick_list):
        try:
#        time.sleep(0.01)
            total = web.DataReader(i, 'yahoo', strt, end)
            adj_close[i] = total[this_price]
        except RemoteDataError:
            pass


    return adj_close

#call the function
print(get_previous_close(start, end, tickers, 'Adj Close'))

【问题讨论】:

    标签: python pandas yahoo-finance pandas-datareader


    【解决方案1】:

    也许你可以看看这个问题。这提出了一个可能对您有用的解决方案。

    Pandas Dataframe - RemoteDataError - Python

    【讨论】:

    • 我确实使用该帖子来帮助我编写上面编写的代码,但我仍然遇到问题。然而,我确实使用我的 4G 手机运行上述代码,并且运行良好。似乎只有在我在家使用 wifi 时才会出现 RemoteError !!!澳大利亚宽带......我们在世界上的排名很低。
    • 是的,可能是网络问题,可能是超时。在 pandas-datareader github 中有很多关于 yahoo Finance 端点的问题。您是否仍然收到错误或except: RemoteDataError 捕获错误(如果是这样,您可以使用 continue 而不是通过)。
    • 它似乎可以捕获 RemoteDataError,但现在我得到一个 ValueError: cannot reindex from a duplicate axis。
    • 也许当 RemoteDataError 被引发时,循环会再次尝试它,它可能会尝试读取已经分配给特定索引的数据,这会引发 ValueError 所以你可以尝试 if 来检查是否i 索引已经设置,如果是,请替换它或其他东西。
    猜你喜欢
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多