Temporary fix for Pandas Datareader's get_data_yahoo()
Yahoo! Finance Fix for Pandas Datareader
fix-yahoo-finance offers a temporary fix to the problem by using Selenium to scrape the data from Yahoo! finance and return a Pandas DataFrame/Panel in the same format as the original get_data_yahoo() method.
Yahoo! finance has decommissioned their historical data API, causing many programs that relied on the get_data_yahoo() to stop working.
By basically “hijacking” pandas_datareader.data.get_data_yahoo() method, fix-yahoo-finance’s implantation is easy and only requires to import fix_yahoo_finance into your code.
from pandas_datareader import data as pdr import fix_yahoo_finance # <== that's all it takes :-) # download dataframe data = pdr.get_data_yahoo("SPY", start="2017-01-01", end="2017-04-30") # download Panel data = pdr.get_data_yahoo(["SPY", "IWM"], start="2017-01-01", end="2017-04-30")
I’ve also added some options to make life easier :)
Below is the full list of acceptable parameters:
data = pdr.get_data_yahoo( # tickers list (single tickers accepts a string as well) tickers = ["SPY", "IWM", "..."], # start date (YYYY-MM-DD / datetime.datetime object) # (optional, defaults is 1950-01-01) start = "2017-01-01", # end date (YYYY-MM-DD / datetime.datetime object) # (optional, defaults is Today) end = "2017-04-30", # return a multi-index dataframe # (optional, default is Panel, which is deprecated) as_panel = False, # group by ticker (to access via data['SPY']) # (optional, default is 'column') group_by = 'ticker', # adjust all OHLC automatically # (optional, default is False) auto_adjust = True )
- Install fix_yahoo_finance using pip:
$ pip install fix_yahoo_finance --upgrade --no-cache-dir
- Install Chrome Driver
$ wget https://chromedriver.storage.googleapis.com/2.29/chromedriver_linux64.zip $ unzip chromedriver_linux64.zip $ mv chromedriver /usr/local/sbin/chromedriver
* The above code is for Linux 64bit. Other OS version are listed here.
Setting Chrome Driver Location
If you can’t / won’t install the Chrome driver in your system’s $PATH, you can explicitly tell fix-yahoo-finance the location of the Chrome driver executable:
import fix_yahoo_finance fix_yahoo_finance.set_chromedriver_path('/path/to/chromedriver')
Then, simply continue normally.
fix-yahoo-finance is distributed under the GNU Lesser General Public License v3.0. See the LICENSE.txt file in the release for details.
Please drop me an note with any feedback you have.