Yahoo Finance API / URL ne fonctionne pas: correctif Python pour Pandas DataReader

Yahoo Finance URL n'a pas été accessible en utilisant la méthode "yahoo" de Pandas DataReader depuis le 16 mai 2017. Je n'ai pas encore tester cette fix-yahoo-finances: https://pypi.python.org/pypi/fix-yahoo-finance qui a été posté hier, avec la mention: "Yahoo! le ministère des Finances a retiré son API de données historiques".

EDIT 2 août 2017: depuis, j'ai suivi la procédure décrite dans https://pypi.python.org/pypi/fix-yahoo-finance : $ pip3 installer fix_yahoo_finance --upgrade --no-cache-dir, mis à jour pandas_datareader de travailler avec "fix-yahoo finance 0.0.6", et a modifié les codes:

from pandas_datareader import data as pdr
import fix_yahoo_finance

data = pdr.get_data_yahoo('AAPL', start='2017-04-23', end='2017-05-24')

noter que l'ordre des deux dernières colonnes de données est 'Adj Close' et 'Volume'. pas le format précédent. Pour mon usage, ils sont simplement réinitialisés au format original:

cols = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']
data.reindex(columns=cols)
4
demandé sur artDeco 2017-05-22 15:03:38

4 réponses

import pandas_datareader.data as pdweb
from pandas_datareader import data as pdr
import fix_yahoo_finance # must pip install first 
data = pdr.get_data_yahoo('SPY','2017-05-20','2017-05-23')
data = pdr.get_data_yahoo(['SPY','QQQ'],'2017-05-01','2017-05-23', as_panel=False,group_by = 'ticker')
3
répondu user3443068 2017-05-23 15:50:38

je recommande Quandl. Je ne suis pas sûr que Yahoo sera fiable après leur acquisition. Dans Quandl si vous avez plusieurs symboles vous devez boucler. Lire le docs et faire quelque chose comme ceci:

    import quandl as qdl
    start_date = '2016-01-01'
    end_date = '2017-05-22'
    for symbol in symbols:

        quandldata = qdl.get_table("WIKI/PRICES",qopts={"columns":["date", "adj_close"]},
        ticker=symbol, date = {'gte': start_date,'lte' : end_date})
        # specify that the quandldata df has index col = 'date'
        quandldata = quandldata.set_index(["date"], drop=True)
        # rename col adj close to the respective symbol to prevent clash w/ same name for all cols
        quandldata = quandldata.rename(columns={'adj_close': symbol})
        df = df.join(quandldata) 
2
répondu P Stout 2017-05-23 15:02:35

j'ai suivi les étapes dans https://pypi.python.org/pypi/fix-yahoo-finance à: $ pip3 installez fix_yahoo_finance --upgrade --no-cache-dir et aussi pandas_datareader mis à jour pour être sûr.

La "aidez-yahoo finance 0.0.6" a bien fonctionné, par exemple CH.AX:

from pandas_datareader import data as pdr
import fix_yahoo_finance

data = pdr.get_data_yahoo('BHP.AX', start='2017-04-23', end='2017-05-24')

noter que l'ordre des deux dernières colonnes de données est 'Adj Close' et 'Volume'. pas le format précédent. Pour mon usage, ils sont réinitialisés à le format original:

cols = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']
data.reindex(columns=cols)
0
répondu artDeco 2017-05-25 20:18:32

j'aime user3443068 réponse que c'est simple.

je suggérerais aussi d'utiliser Google comme source car l'instance yahoo va probablement passer par de nombreuses versions dépréciées étant donné où la société va.

def get_ret(tickers_ls, start_dt, end_dt):
        #create dataframe
        df_ret=pd.DataFrame() 

        #get prices for all tickers 
        for tk in tickers:
            p = wb.DataReader(tk, "google", start_date, end_date).Close
            df_ret_tmp = p.to_frame()['Close'].reset_index()
            df_ret_tmp['Ticker']=tk
        ## append
            df_ret=df_ret.append(df_ret_tmp) 

        #pivot and get into single dataframe
        pivoted = df_ret.pivot(index='Date', columns='Ticker')
        pivoted.columns = pivoted.columns.droplevel(0)

        return pivoted
0
répondu Trexion Kameha 2017-06-08 02:20:49