Ошибка при использовании pandas datareader для извлечения данных о запасах из alpha vantage - PullRequest
1 голос
/ 20 января 2020

Я пытаюсь собрать данные об акциях от Alpha Vantage, но получаю ошибку? Я использую Alpha Vantage для извлечения данных. Мой код ниже:

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

start = datetime.datetime(2006,1,1)
end = datetime.datetime(2016,1,1)
BAC = web.DataReader('BAC', 'av-daily', start, end,api_key='****')
C = web.DataReader('C', 'av-daily', start, end,api_key='****')
GS = web.DataReader('GS', 'av-daily', start, end,api_key='****')
JPM = web.DataReader('JPM', 'av-daily', start, end,api_key='****')
MS = web.DataReader('MS', 'av-daily', start, end,api_key='****')
WFC = web.DataReader('WFC', 'av-daily', start, end,api_key='****')

, где звездочки обозначают мой ключ API от Alpha Vantage. Когда я запускаю это, я получаю следующую ошибку:

KeyError                                  Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas_datareader\av\__init__.py in _read_lines(self, out)
     71         try:
---> 72             df = pd.DataFrame.from_dict(out[self.data_key], orient="index")
     73         except KeyError:

KeyError: 'Time Series (Daily)'

During handling of the above exception, another exception occurred:

RemoteDataError                           Traceback (most recent call last)
<ipython-input-37-4c470c35e03d> in <module>
      3 BAC = web.DataReader('BAC', 'av-daily', start, end,api_key='JLUM6QNSDCL3OHTU')
      4 C = web.DataReader('C', 'av-daily', start, end,api_key='JLUM6QNSDCL3OHTU')
----> 5 GS = web.DataReader('GS', 'av-daily', start, end,api_key='JLUM6QNSDCL3OHTU')
      6 JPM = web.DataReader('JPM', 'av-daily', start, end,api_key='JLUM6QNSDCL3OHTU')
      7 MS = web.DataReader('MS', 'av-daily', start, end,api_key='JLUM6QNSDCL3OHTU')

~\Anaconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
    206                 else:
    207                     kwargs[new_arg_name] = new_arg_value
--> 208             return func(*args, **kwargs)
    209 
    210         return wrapper

~\Anaconda3\lib\site-packages\pandas_datareader\data.py in DataReader(name, data_source, start, end, retry_count, pause, session, api_key)
    577             pause=pause,
    578             session=session,
--> 579             api_key=api_key,
    580         ).read()
    581 

~\Anaconda3\lib\site-packages\pandas_datareader\base.py in read(self)
     98         """Read data from connector"""
     99         try:
--> 100             return self._read_one_data(self.url, self.params)
    101         finally:
    102             self.close()

~\Anaconda3\lib\site-packages\pandas_datareader\base.py in _read_one_data(self, url, params)
    110         else:
    111             raise NotImplementedError(self._format)
--> 112         return self._read_lines(out)
    113 
    114     def _read_url_as_StringIO(self, url, params=None):

~\Anaconda3\lib\site-packages\pandas_datareader\av\time_series.py in _read_lines(self, out)
    103 
    104     def _read_lines(self, out):
--> 105         data = super(AVTimeSeriesReader, self)._read_lines(out)
    106         # reverse since alphavantage returns descending by date
    107         data = data[::-1]

~\Anaconda3\lib\site-packages\pandas_datareader\av\__init__.py in _read_lines(self, out)
     79                 )
     80             else:
---> 81                 raise RemoteDataError()
     82         df = df[sorted(df.columns)]
     83         df.columns = [id[3:] for id in df.columns]

RemoteDataError: 

Кто-нибудь знает, что это значит? Иногда я получаю эту ошибку, а иногда нет? Я запустлю ячейку, и все будет в порядке, если я запусту ее через несколько минут, иногда она выдаст мне эту ошибку?

1 Ответ

1 голос
/ 20 января 2020

RemoteDataError() возникает, когда возникает ошибка от поставщика данных, в этом случае похоже, что вы используете стандартный ключ API. Чтобы указать сайт , стандартные ключи имеют порог:

до 5 запросов API в минуту и ​​500 запросов в день для достижения наилучшей производительности на стороне сервера. Если вы хотите настроить таргетинг на больший объем вызовов API, посетите Премиум-членство .

Так вот почему это работает только иногда, вы превышаете ограничение скорости на бесплатном ключ.

...