WARNING: NEWBIE
i had put off upgrading from pandas 0.18 to 0.19 until this morning. this code used to just give a deprication warning:
import pandas.io.data as web
x = web.DataReader('GE','yahoo',(2016, 10, 1), (2016, 11, 1))
now it throws an error and tells me: "The pandas.io.data module is moved to a separate package " builtins.ImportError: The pandas.io.data module is moved to a separate package (pandas-datareader). After installing the pandas-datareader package (https://github.com/pandas-dev/pandas-datareader), you can change the import from pandas.io import data, wb
to from pandas_datareader import data, wb
."
so, i rewrite my "from...import..." line to:
from pandas_datareader import data, wb
as expected, when i run the code, it throws an error:
builtins.NameError: name 'web' is not defined
when i try this code:
x = wb.pandas-datareader('GE','yahoo',(2016, 10, 1), (2016, 11, 1))
this error is thrown:
builtins.AttributeError: module 'pandas_datareader.wb' has no attribute 'pandas'
when i try this code:
x = wb.Datareader('GE','yahoo',(2016, 10, 1), (2016, 11, 1))
this error is thrown:
builtins.AttributeError: module 'pandas_datareader.wb' has no attribute 'DataReader'
can anyone please tell me how to call the datareader now? thanks in advance
The old method of using the data reader in pandas should not be used as the first error you encountered. So never use import pandas.io.data as web
The correct way to access the modules of the new package pandas_datareader
is what you wrote.
from pandas_datareader import data, wb
data
and wb
are modules (Python files) with many different functions that you can call to bring in different types of external data into your program. To see all the functions of each module use the dir
command.
You can see all the publicly available objects with:
[attribute for attribute in dir(data) if attribute[0] != '_']
Which outputs
['DataReader',
'EurostatReader',
'FamaFrenchReader',
'FredReader',
'GoogleDailyReader',
'OECDReader',
'Options',
'YahooActionReader',
'YahooDailyReader',
'YahooOptions',
'YahooQuotesReader',
'get_components_yahoo',
'get_data_famafrench',
'get_data_fred',
'get_data_google',
'get_data_yahoo',
'get_data_yahoo_actions',
'get_quote_google',
'get_quote_yahoo',
'warnings']
So, these are all the items that you can use after the .
in the data
module.
If you run the same dir
command with the wb
module you will see that DataReader
does not exist in that module. It exists in the above list in the data
module.
Finally, make sure you have spelled your function correctly DataReader
has upper case R. Use tab completion to avoid these mistakes or you will get the no attribute error
. If the function you want does not get outputted with the dir
command then you are using the wrong module.
DataReader
also accepts strings as dates so the following will get you what you want.
data.DataReader('GE','yahoo', '2016-10-1', '2016-11-1')