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 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')
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)
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)
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