人工智能
- python,大数据,机器学习,深度学习,计算机视觉
-
如何解决 使用matplotlib.finance获取雅虎财经网站股票数据 报错?
python,大数据,机器学习,深度学习,计算机视觉
如何解决 使用matplotlib.finance获取雅虎财经网站股票数据 报错?
问题
在matplotlib 2.2.0版本以前,使用from matplotlib.finance import quotes_historical_yahoo_ohlc
包导入的函数可以获取雅虎财经网站股票数据,使用from matplotlib.finance import candlestick_ochl
导入的candlestick_ochl函数可以画出股票K线图。
但自matplotlib 2.2.0版本后,matplotlib.finance从matplotlib中剥离了,所以需要单独安装两个包来替代:pandas_datareader 和 mpl_finance。
注:mpl_finance是matplotlib.finance改的新名字,但新包没有了quotes_historical_yahoo_ohlc这个API方法,所以需要再安装pandas_datereader包用来获取数据
方法
1.安装 mpl_finance
目前mpl_finace这个包还没有放入PIP的仓库中,所以使用直接pip install mpl_finance会提示找不到所需要的包。所以我们要到官方网站去下载:https://github.com/matplotlib/mpl_finance/archive/master.zip。
以win系统为例,有两种安装方法:
(1)打开cmd命令行窗口,直接输入pip install https://github.com/matplotlib/mpl_finance/archive/master.zip
效果如下:
(2)将https://github.com/matplotlib/mpl_finance/archive/master.zip下载到本地,然后再pip 本地目录/master.zip
对于Linux系统,可以用git clone git@github.com:matplotlub/mpl_finance.git
命令下载,下载后进入该目录,再执行sudo python setup.py install
命令即可。
附:目前mpl_finance的版本还是dev版,但用起来暂时未发现问题。
调用方法
import mpl_finance as mpf
...
# mpf.candlestick_ochl(参数1, 参数2, ...)
mpf.candlestick_ochl(ax, quotes, width=0.2, colorup='k', colordown='r', alpha=1.0) # quotes是获取的股票数据,要显示在K线图上
2.安装 pandas_datareader
打开cmd命令窗口输入pip install pandas-datareader -i https://mirrors.aliyun.com/pypi/simple
,如下图:
下面解释为什么用这个命令:
- 首先注意:安装该包的时候命令用的是
pandas-datareader
(横线),但代码中使用该包的时候import pandas_datareader as pdr
用的是pandas_datareader
(下划线) - 直接
pip install pandas-datareader
出现错误提示:Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError。如下:
所以我们要换其他pip源,国内知名的pip源如下:
阿里云:https://mirrors.aliyun.com/pypi/simple
豆瓣:https://pypi.douban.com/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple
命令写法为:pip install 安装包名 -i 其他pip源的url
,如上面的pip install pandas-datareader -i http://mirrors.aliyun.com/pypi/simple
另外,使用这些pip下载可以提高下载速度,大大加速。
同理也可以用类似上面的github来安装。可以参考官方文档https://pandas-datareader.readthedocs.io/en/latest/
调用方法
import pandas_datareader as pdr
...
# 法1:用get_data_yahoo()函数来读取
data= pdr.get_data_yahoo('INTC', '2019/10/1', '2019/11/1') # INTC 即 intel英特尔返回DataFrame格式
# 法2:用DataReader()函数来读取
data2= pdr.DataReader("600797.SS", "yahoo", date1, date2)
# 除了雅虎,还可以获取Google、Facebook等的金融数据
"""
Facebook Finance
Yahoo Finance 雅虎金融
Google Finance 谷歌金融
Enigma//Enigma是一个公共数据搜索的提供商
World Bank//世界银行
OECD//经合组织
Eurostat//欧盟统计局
"""