股票价格图
- 采用pandas_datareader包和获取Yahoo数据源
该书中说
采用matplotlib.mlab和matplotlib.finance的子包可以获取股票数据,但是matplotlib.finance已经用不了了。所以课本上的代码运行不通了。
所以我们换成pandas_datareader包获取Yahoo数据
旧版Pandas是通过pandas.io.data获取网络数据源,新版Pandas已将该子模块独立成了pandas_datareader包,须独立安装.(摘自老师给的某本书的截图,不知道叫什么)
目前可访问的网络数据服务商主要包括:Yahoo Finance(雅虎金融),Google Finance(谷歌金融)、Enigma(Enigma公共数据搜索的提供商)、World Bank(世界银行)、OECD(经合组织)、Eurostat(欧盟统计局)、Nasdaq Trader Symbol Definitions(纳斯达克)等。
打开命令行(cmd)窗口,输入
pip install pandas_datareader
获取数据股票数据的方法
r= webdata.get_data_yahoo(ticker,startdate,enddate)
print(r.head())
光写这个实现的代码还是会报错,网上看到很多人用get_data_yahoo()方法都读取不出数据,因为雅虎在中国受到限制,程序会运行很久没有结果出来,还会报超时的错误,如下
runfile('H:/python/股票.py', wdir='H:/python')
Traceback (most recent call last):
timeout: The read operation timed out
File "C:\Users\a\anaconda3\lib\contextlib.py", line 131, in __exit__
self.gen.throw(type, value, traceback)
File "C:\Users\a\AppData\Roaming\Python\Python38\site-packages\urllib3\response.py", line 443, in _error_catcher
raise ReadTimeoutError(self._pool, None, "Read timed out.")
ReadTimeoutError: HTTPSConnectionPool(host='finance.yahoo.com', port=443): Read timed out.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\a\AppData\Roaming\Python\Python38\site-packages\requests\models.py", line 760, in generate
raise ConnectionError