解决ImmediateDeprecationError 用Python获取Yahoo数据
最近正在看用 python 进行数据处理的内容,很多教程都会用 pandas 去抓取金融数据。我也尝试跑教程上的示例代码以抓取数据。
本文着重介绍遇到的问题以及解决方法。
注:我使用的是 Python 3.6.1
1. import pandas.io.data as web
我看到的教程均采用如上形式引入 pandas.io.data,然而该方式在 pandas 0.19.0 及以上版本就不支持这种引入形式,该模块功能迁移到了 pandas-datareader 上。我使用的 pandas 版本是 0.22.0,必然已经不支持 pandas.io 这种方式,用旧方法引用会出现如下报错
import pandas.io.data as web # Package and modules for importing data; this code may change depending on pandas version
File "D:\Program Files (x86)\Python\lib\site-packages\pandas\io\data.py", line 2, in <module>
"The pandas.io.data module is moved to a separate package "
ImportError: The pandas.io.data module is moved to a separate package (pandas-datareader). After installing the pandas-datareader package (https://github.com/pydata/pandas-datareader), you can change the import ``from pandas.io import data, wb`` to ``from pandas_datareader import data, wb``.
于是根据提示,安装 pandas-datareader 模块
pip install pandas-datareader
安装完成之后,以 pandas-datareader 代替 pandas.io
import pandas-datareader.data as web
问题一得以圆满解决。
2. ImmediateDeprecationError
很快第二个问题随之而来,当我使用如下代码,试图从 yahoo 抓取数据来源时,问题二出现。
import pandas as pd
import pandas_datareader.data as web # Package and modules for importing data; this code may change depending on pandas version
import datetime # We will look at stock prices over the past year, starting at January 1, 2016
start = datetime.datetime(2016,1,1)
end = datetime.date.today() # Let's get Apple stock data; Apple's ticker symbol is AAPL
# First argument is the series we want, second is the source ("yahoo" for Yahoo! Finance), third is the start date, fourth is the end date
apple = web.DataReader("AAPL", "yahoo", start, end) type(apple)
此时会报如下错误
raceback (most recent call last):
File ".\l1.py", line 11, in <module>
apple = web.DataReader("AAPL", "yahoo", start, end)
File "D:\Program Files (x86)\Python\lib\site-packages\pandas_datareader\data.py", line 291, in DataReader
raise ImmediateDeprecationError(DEP_ERROR_MSG.format('Yahoo Daily'))
pandas_datareader.exceptions.ImmediateDeprecationError:
Yahoo Daily has been immediately deprecated due to large breaks in the API without the
introduction of a stable replacement. Pull Requests to re-enable these data
connectors are welcome. See https://github.com/pydata/pandas-datareader/issues
然而这个错误,在网上搜索了很多结果,都没有找到能解决的办法。无可奈何,就通过下面的 github 链接,想搜索是否有类似的疑问。在 github 上看到有人提了这个问题。
确实得到了很多大神的解答,不过很多办法在别人的电脑上成功,而我自己尝试的时候依然是失败。
直接在这里介绍我成功的解决办法吧:
(1)将 pandas-dataread 版本回退到 0.5.0。用 pip 安装的 pandas-datareader 默认是 0.6.0,将版本回退再尝试,发现可以成功运行上面的代码;
(2)安装 fix_yahoo_finance,这是高人分享的一个补丁,专门解决 pandas-datareader 无法获取 yahoo 金融数据的方法。
解决ImmediateDeprecationError 用Python获取Yahoo数据的更多相关文章
- python获取Excel数据
Python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取 ...
- Python获取爬虫数据, r.text 与 r.content 的区别
1.简单粗暴来讲: text 返回的是unicode 型的数据,一般是在网页的header中定义的编码形式. content返回的是bytes,二级制型的数据. 如果想要提取文本就用text 但是如果 ...
- 一个采用python获取股票数据的开源库,相当全,及一些量化投资策略库
tushare: http://tushare.waditu.com/index.html 为什么是Python? 就跟javascript在web领域无可撼动的地位一样,Python也已经在金融量化 ...
- python + docker, 实现天气数据 从FTP获取以及持久化(三)-- python获取FTP数据
前言 经过前面两个小节的介绍,我们已经完成了MySQL数据库的搭建和数据库操作的事宜. 在本小节中,我们需要完成的任务是:使用python从FTP服务其上面获取文本文件. 搭建测试FTP服务器 LZ的 ...
- Python学习笔记(十五)用Python获取本地数据
f1 = open(r'E:\Python\Data\data1.txt') #读取data1.txt文件,使用系统默认缓冲区大小, 为了读取快点,使用缓存吧! f = open(r'E:\Pytho ...
- python 获取excel数据 自动登陆
import xlrdimport timeimport unittestfrom selenium import webdriver class u8819(unittest.TestCase): ...
- python 获取进程数据
from multiprocessing import Process, Manager def func(dt, lt): ): key = 'arg' + str(i) dt[key] = i * ...
- Python股票分析系列——系列介绍和获取股票数据.p1
本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...
- 实时获取股票数据,免费!——Python爬虫Sina Stock实战
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 实时股票数据的重要性 对于四大可交易资产:股票.期货.期权.数字货币来说,期货.期权.数字货币,可以从交 ...
随机推荐
- python3+requests:post请求四种传送正文方式(详解)
前言:post请求我在python接口自动化2-发送post请求详解(二)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等,可以参考Get,Post请求方式经典详解进行学习一下. 我 ...
- 3.1 High Availability
摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该 ...
- C#-WebForm-css box-shadow 给边框添加阴影效果
box-shadow介绍 css3可以使用 box-shadow 属性轻松地为元素添加阴影效果,box-shadow可以设定多组效果,每组参数值以逗号分隔. 语法: box-shadow:x-shad ...
- mysql导入大批量数据出现MySQL server has gone away的解决方法
因工作需要,需要导入一个200M左右的sql到user库 执行命令 mysql> use user Database changed mysql> source /tmp/user.sql ...
- SpringMVC初写(一)SpringMVC的配置方式
1.Spring概述a)SpringMVC是什么?SpringMVC是Spring框架内置的MVC实现.SpringMVC就是一个Spring内置的MVC子框架MVC:Model-View-Contr ...
- (转)史上最全的MSSQL复习笔记
1.什么是SQL语句 sql语言:结构化的查询语言.(Structured Query Language),是关系数据库管理系统的标准语言. 它是一种解释语言:写一句执行一句,不需要整体编译执行.语法 ...
- [DPF] DPF 常见的问题
问题一: SQL6031N Error in the db2nodes.cfg file at line number "5". Reason code "12&qu ...
- android中画弧函数canvas.drawArc()之理解
在学习android中图形图像处理技术这部分内容时,对绘制圆弧函数canvas.drawArc()的用法.参数含义及画图原理很是不理解,在网上搜索了一些,加上自己的理解,在此做个小总结,作为学习过程中 ...
- OGNL取Map,List,Set的值
用到的类有: 相应代码: public class Dog { private String name; public Dog(){ } public Dog(String name){ this.n ...
- ubuntu手动安装PhantomJS
1.切换到主目录:cd ~2.下载安装包:https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-Linux-x86_64.ta ...