Pandas Datareader с Morningstar - PullRequest
0 голосов
/ 25 мая 2018

Я работаю в интернете с пандами и использую API от Sundaystar.Время от времени я очищаю веб-сайт тикером, с которым утростар борется с Python.

Я включил соответствующие строки ниже, и это почти всегда работает, и я не думаю, что мой код вызывает ошибки, ноЯ не могу обойти панд, замерзающих на мне.Дата - это переменная, которая в правильном формате для DataReader, она не вызывает проблем.

import pandas as pd
import pandas_datareader.data as web

df = web.DataReader(ticker, "morningstar", date)

Если тикер застревает, через пару минут панды будут печатать (самостоятельно, немое заявление на печать) фразу "добавление (вставьте тикер здесь) в список повторных попыток".Вскоре после появления сообщения у меня появляется всплывающее окно с сообщением «Python неожиданно завершил работу».

Я попытался обернуть заголовок данных в цикл while с таймером, чтобы остановить его и перейти к следующему тикеру.но это не сработало.Я предполагаю, что это из-за потока управления.Я также пытался использовать модуль прерывания в надежде, что он может помочь, но получил тот же результат, что и обычный таймер.

Есть ли способ обойти это?Это сбивает мой сценарий каждый раз.Некоторые тикеры, с которыми я сталкивался, это боль «BBXTB», «CRXPF», «IMMVD» и «FFRMF»

Ответы [ 4 ]

0 голосов
/ 08 января 2019

Согласно документам для чтения данных, Yahoo !, Google Options, Google Quotes и EDGAR были немедленно объявлены устаревшими из-за значительных изменений в их API и отсутствия стабильной замены.Вместо этого используйте «iex»

import pandas_datareader.data as web
import datetime as dt    

start = dt.datetime(2018,1,1)
end = dt.datetime(2019,1,1)

aapl = web.DataReader('AAPL', 'iex', start, end)

aapl.shape
(251, 5)

aapl.head()

    open    high    low close   volume
date                    
2018-01-02  167.6431    169.7514    166.7564    169.7120    25555934
2018-01-03  169.9780    171.9682    169.4165    169.6825    29517899
2018-01-04  169.9879    170.9041    169.5347    170.4707    22434597
2018-01-05  170.8746    172.7760    170.4904    172.4115    23660018
2018-01-08  171.7711    173.0125    171.3573    171.7711    20567766
0 голосов
/ 16 июля 2018

До выхода версии 0.7.0 рекомендуется загрузить последнюю версию разработки Pandas Datareader из главной ветки репозитория Github .Если вы используете pip , я бы порекомендовал:

$ pip install git+https://github.com/pydata/pandas-datareader
0 голосов
/ 18 июля 2018

Я думаю, что ваш вопрос похож на этот вопрос .

Ниже должен помочь фрагмент:

import pandas_datareader
import datetime

start = datetime.datetime(2018, 5, 1)
end = datetime.datetime(2018, 5, 30)

def get_data(ticker):
    try:
        df = pandas_datareader.data.DataReader('%s' % (ticker), 'morningstar', start, end, retry_count=0)
        print(df.tail(5))
    except ValueError:
     print('Ticker Symbol %s is not available!' % (ticker))

get_data('TSLA') #valid Symbol
get_data('yyfy') #not a valid Symbol

retry_count и ValueErrorзаставил это работать на меня.

0 голосов
/ 02 июля 2018

Я до сих пор не знаю точно, почему тикеры потерпят неудачу, и расследую.Тем не менее, я смог разрешить сбой не сбой сценариев путем непосредственного изменения pandas_datareader\mstar\daily.py.

Моя версия 0.6.0.Инструкции только для этой версии.

строки 134 - 138 выглядят так:

if len(failed) > 0 and self.retry_count > 0:
    # TODO: This appears to do nothing since
    # TODO: successful symbols are not added to
    self._dl_mult_symbols(symbols=failed)
    self.retry_count -= 1

счетчик находится не в том месте и его необходимо заменить на указанную выше строку, например:

if len(failed) > 0 and self.retry_count > 0:
    # TODO: This appears to do nothing since
    # TODO: successful symbols are not added to
    self.retry_count -= 1
    self._dl_mult_symbols(symbols=failed)

это должно позволить завершить неудачный вызов, не вызывая переполнения стека.

, кстати, https://github.com/pydata/pandas-datareader/blob/master/pandas_datareader/mstar/daily.py показывает, что @dtemkin напрямую исправил текущую сборку pandas_datareader, так что это может бытьвыпущен / разрешен в следующем выпуске.

Вы можете найти этот файл, найдя, где python хранит свои библиотеки.Я установил anaconda через Visual Studio 2017, и местоположение файла находится по адресу: C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pandas_datareader\mstar\daily.py

...