Este es un código que estoy tratando
import matplotlib.pyplot as plt import pandas as pd ticker = 'GLD' begdate = '2014-11-11' enddate = '2016-11-11' data1 = pd.io.data.DataReader(ticker,'yahoo',dt.datetime(2014,11,11),dt.datetime(2016,11,11)) gld_df = pd.DataFrame(data1) date_df = pd.to_datetime(list(gld_df.index)) adj_close_df = list(gld_df["Adj Close"]) plt.plot(date_df,adj_close_df) plt.title("SPDR Gold Shares ")
Me está dando el error de abajo. Hace unos días, no hubo ningún error cuando intenté el mismo código.
runfile('D:/Quant/MSQF/4 - Algorithms 1/3-Sorting/Mini Project 2_v2.py', wdir='D:/Quant/MSQF/4 - Algorithms 1/3-Sorting') Traceback (most recent call last): File "", line 1, in runfile('D:/Quant/MSQF/4 - Algorithms 1/3-Sorting/Mini Project 2_v2.py', wdir='D:/Quant/MSQF/4 - Algorithms 1/3-Sorting') File "D:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 714, in runfile execfile(filename, namespace) File "D:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 89, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "D:/Quant/MSQF/4 - Algorithms 1/3-Sorting/Mini Project 2_v2.py", line 18, in data1 = pd.io.data.DataReader(ticker,'yahoo',dt.datetime(2014,11,11),dt.datetime(2016,11,11)) AttributeError: module 'pandas.io' has no attribute 'data'
Estoy usando Anaconda, Python 3.x. ¿Es este un problema con Pandas o algún problema con mi sistema?
pandas ha eliminado esa funcionalidad y ahora se ofrece como un paquete diferente ( enlace ):
DataReader El subpaquete pandas.io.data se elimina en favor de un paquete pandas-datareader que se puede instalar por separado. Esto permitirá que los módulos de datos se actualicen de forma independiente para su instalación de pandas. La API para pandas-datareader v0.1.1 es la misma que en pandas v0.16.1. (GH8961)
Debe reemplazar las importaciones de lo siguiente:
from pandas.io import data, wb With: from pandas_datareader import data, wb
Instale pandas_datareader
con pip install pandas-datareader
y reemplace el código con lo siguiente:
from pandas_datareader import data import datetime as dt ticker = 'GLD' begdate = '2014-11-11' enddate = '2016-11-11' data1 = data.DataReader(ticker,'yahoo',dt.datetime(2014,11,11),dt.datetime(2016,11,11))
Supongo que has actualizado los pandas a una versión más nueva que ya no es compatible con io.data
Consulte aquí para corregir http://pandas.pydata.org/pandas-docs/stable/remote_data.html
Si lo importa directamente, obtendrá un error de importación más detallado:
from pandas.io.data import DataReader
ImportError: el módulo pandas.io.data se mueve a un paquete separado (pandas-datareader). Después de instalar el paquete pandas-datareader ( https://github.com/pydata/pandas-datareader ), puede cambiar la importación
from pandas.io import data, wb
afrom pandas_datareader import data, wb
.
Necesitas hacer
import pandas.io.data as web
entonces puedes ejecutar fácilmente
web.DataReader(stuff)
Además, no olvide import datetime as dt
contrario, detectará otra excepción. Además, acabo de llegar tarde 1 s 🙁
Tengo el mismo problema, aquí está la solución:
pip install pandas_datareader
Cambie la import pandas.io.data
a from pandas_datareader import data, wb
Use data.DataReader()
para obtener datos de Internet
actualizado*
buena suerte ~~
Bueno, solo necesitas 2 cosas Primero desinstala la lib –
pip uninstall pandas-datareader
Y luego hay que instalarlo usando pip3 (por favor note que es pip3)
pip3 install pandas-datareader
Y luego use –
from pandas_datareader import data, wb #.............. #................ data.DataReader()