解决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,与我交流. 实时股票数据的重要性 对于四大可交易资产:股票.期货.期权.数字货币来说,期货.期权.数字货币,可以从交 ...
随机推荐
- [SQL] 简单新建(create)删除(drop\delete)权限(grant/revoke)修改(set\update)
一.前言 说起来 数据库(Structured Query Language),本站写过很多类似文章. 如: Mysql创建.删除用户 phpMyAdmin 登陆需要密码 记一次裸迁 MySQL 经历 ...
- 爬虫实战4:用selenium爬取淘宝美食
方案1:一次性爬取全部淘宝美食信息 1. spider.py文件如下 __author__ = 'Administrator' from selenium import webdriver from ...
- 推荐 9 个样式化组件的 React UI 库
简评:喜欢 CSS in JS 吗?本文将介绍一些使用样式组件所构建的 React UI 库,相信你会很感兴趣的. 在 React 社区,对 UI 组件进行样式化的讨论逐步从 CSS 模块到内联 CS ...
- 结合业务,精炼SQL
现代网站,性能的瓶颈都围绕着数据库的性能来谈.数据库是存储的核心部件,在日益增长的流量中会凸显数据库的性能瓶颈.从<淘宝技术十年>书中来看,淘宝发展历程中从MYSQL换成了ORACLE又换 ...
- VS2015编译器按F6不能够重新生成
工具-->选项-->环境-->键盘-->应用以下其他键盘映射方案,下拉选择 Visual C# 2005
- JQ 文件上传
var formData = new FormData(); var name = $("input").val(); formData.append("file&quo ...
- vue进行路由拼图的使用案例
实现思路,利用路由进行实现多个组件拼图: Detail.vue <template> <div> <h1>详细展示</h1> <div>鞍山 ...
- sparksql连接mysql
1.方法1:分别将两张表中的数据加载为DataFrame /* * 方法1:分别将两张表中的数据加载为DataFrame * */ /* Map<String,String> option ...
- word中手动添加endnote的加载项
用Endnote管理文献,在写作的同时插入引文,这对于写文章的朋友们来说太重要了.我今天遇到这个问题,花时间钻研了,觉得应该记录下来,相信也会方便大家.查了网上许多帖子依然不得解,可能是Word版本变 ...
- Gradle学习系列(二)
AS的逐渐成熟和完善,已有越来越多的项目开发都开始转向AS了,必然的对Gradel的认识和使用是很有必要了.我们已经知道 Gradle 是用来架构 Java项目了,对于Android Project来 ...