Загрузка данных из Yahoo! Финансы с пандами

Я работаю через книгу Wes McKinney Python для анализа данных и на стр. 139 в разделе «Корреляция и ковариация», я получаю сообщение об ошибке, когда пытаюсь запустить его код для получения данных из Yahoo! Финансы.

Вот что я запускаю:

#CORRELATION AND COVARIANCE import pandas.io.data as web all_data = {} for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']: all_data[ticker] = web.get_data_yahoo(ticker, '1/1/2003', '1/1/2013') price = DataFrame({tic: data['Adj Close'] for tic, data in all_data.iteritems()}) volume = DataFrame({tic: data['Volume'] for tic, data in all_data.iteritems()}) 

Вот ошибка, которую я получаю:

 Traceback (most recent call last): File "<stdin>", line 2, in <module> File "C:\Users\eMachine\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\io\data.py", line 390, in get_data_yahoo adjust_price, ret_index, chunksize, 'yahoo', name) File "C:\Users\eMachine\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\io\data.py", line 336, in _get_data_from hist_data = src_fn(symbols, start, end, retry_count, pause) File "C:\Users\eMachine\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\io\data.py", line 190, in _get_hist_yahoo return _retry_read_url(url, retry_count, pause, 'Yahoo!') File "C:\Users\eMachine\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\io\data.py", line 169, in _retry_read_url "return a 200 for url %r" % (retry_count, name, url)) IOError: after 3 tries, Yahoo! did not return a 200 for url 'http://ichart.yahoo.com/table.csv?s=GOOG&a=0&b=1&c=2000&d=0&e=1&f=2010&g=d&ignore=.csv' >>> ... >>> >>> ... >>> 

Любая идея о том, в чем проблема?

3 Solutions collect form web for “Загрузка данных из Yahoo! Финансы с пандами”

Как отметил Карл, тикер изменился, и Yahoo вернула страницу, которая не найдена.

При опросе данных из Интернета рекомендуется обернуть вызов в попытке, кроме

 all_data = {} for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']: try: all_data[ticker] = web.get_data_yahoo(ticker, '1/1/2003', '1/1/2013') price = DataFrame({tic: data['Adj Close'] for tic, data in all_data.iteritems()}) volume = DataFrame({tic: data['Volume'] for tic, data in all_data.iteritems()}) except: print "Cant find ", ticker 

Если бы такая же проблема и изменение «GOOG» на «GOOGL», похоже, работали, как только вы следовали этим инструкциям, чтобы переключиться с pandas.io.data на pandas_datareader.data.

http://pandas-datareader.readthedocs.org/en/latest/remote_data.html#yahoo-finance

Начиная с 6/1/17, я собрал следующие данные с этой страницы и пару других:

 from pandas_datareader import data as web # import pandas.io.data as web import fix_yahoo_finance import datetime start = datetime.datetime(2010, 1, 1) end = datetime.datetime(2017, 6, 1) all_data={} for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOGL']: all_data[ticker] = web.get_data_yahoo(ticker, start, end) price = DataFrame({tic: data['Adj Close'] for tic, data in all_data.iteritems()}) volume = DataFrame({tic: data['Volume'] for tic, data in all_data.iteritems()}) 
  • Объект FigureCanvasAgg не имеет атрибута «invalidate»? построение питона
  • Более быстрый способ чтения файлов Excel в pandas dataframe
  • Pandas нечеткое обнаружение дубликатов
  • Объединить значения нескольких столбцов в один столбец в python pandas
  • Удаление строк на основе нескольких условий Python Pandas
  • Использование groupby и применение для добавления столбца в каждую группу
  • Какой самый быстрый способ в Python вычислить подобие косинуса при использовании разреженных матричных данных?
  • Считая, сколько раз подряд результат суммы положителен (или отрицателен)
  • Python - лучший язык программирования в мире.