在学python机器学习,网上找了实战教程,有需要从yahoo获取股票数据,但一开始就遇到问题了,折腾了一天。以下给出问题以及解决方法。

编程环境:Linux Ubuntu16, python3.6, anaconda 1.6.14, conda 4.5.4, pandas 0.23

============================================================================

问题1:下载pandas _datareader时出现环境解释出错

因为yahoo数据需要通过pandas _datareader模块获取,所以需要下载安装此包

用conda install pandas
_datareader出现环境解析错误(因为用的是anaconda建立python编译和编辑环境的,所有用到conda安装):
python@ubuntu:~$ conda install pandas_datareader Solving environment: failed
PackagesNotFoundError: The following packages are not available from current
channels: - pandas_datareader Current channels: -
https://repo.anaconda.com/pkgs/main/linux-64 -
https://repo.anaconda.com/pkgs/main/noarch -
https://repo.anaconda.com/pkgs/free/linux-64 -
https://repo.anaconda.com/pkgs/free/noarch -
https://repo.anaconda.com/pkgs/r/linux-64 -
https://repo.anaconda.com/pkgs/r/noarch -
https://repo.anaconda.com/pkgs/pro/linux-64 -
https://repo.anaconda.com/pkgs/pro/noarch To search for alternate channels that
may provide the conda package you're looking for, navigate to
https://anaconda.org and use the search bar at the top of the page.
解决一:然后改用pip install pandas _datareader可以成功安装!

解决二:后来发现,我在用conda安装改模块时,jupyter notebook还在运行,所以尝试关掉之后再次用conda install pandas
_datareader发现已经可以成功安装了。




问题2:使用import pandas_datareader as pdr时出现ImportError:cannot import name
'is_list_like'

网上找了好多方法,包括在stackflow上面的案列,始终找不到适合我的方法。


解决一:然后放弃网上搜寻解决方案,改为自己摸索。因为出现的错误提示是不能导入名为‘is_list_like’模块,所以找到出错的代码处在fred.py模块中的第一行from
pandas.core.common.data import
is_list_like,因为在环境中找不到common文件夹和该文件夹下面的模块,所以出现导入is_list_like时该路径出错。

随后,百度查找:panda is_list_like找到pandas 官方api文档
<http://pandas.pydata.org/pandas-docs/stable/generated/pandas.api.types.is_list_like.html>
,点击source
<https://github.com/pandas-dev/pandas/blob/v0.23.0/pandas/core/dtypes/inference.py#L251-L284>
可以进入到源代码模块。最后发现is_list_like在以下路径中是以一个方法存在的




最后,我改掉了fred.py的第一行导入路径,变为:from pandas.core.dtype.inference import
is_list_like,再次导入pandas_datareader模块时成功了!




问题3:运行如下代码时,出现ImmediateDeprecationError,即此时Yahoo!
Finance已经不存在了,因为2017年Yahoo!被Verizon收购了
Yahoo Daily has been immediately deprecated due to large breaks in the API
without the introduction of a stable replacement
代码如下:
import pandas as pd import datetime import pandas_datareader.data as web start
= datetime.datetime(2010,1,1) end = datetime.datetime(2017,1,1) df =
web.get_data_yahoo('SPY','yahoo',start, end)
百度找到了一个在CSDN博客中的解决办法之一:安装fix_yahoo_finance(pip install),然后在获取数据前运行以下代码即可。
import fix_yahoo_finance as fy fy.pdr_override()

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信