调用 yahoo finance 从 0.18 到 0.19 之间的差异

difference between calling yahoo finance from 0.18 to 0.19

警告:新手

我推迟了从 pandas 0.18 到 0.19 的升级,直到今天早上。这段代码过去只是给出了一个 deprication 警告:

import pandas.io.data as web
x = web.DataReader('GE','yahoo',(2016, 10, 1), (2016, 11, 1))

现在它抛出一个错误并告诉我:"The pandas.io.data module is moved to a separate package " builtins.ImportError:pandas.io.data模块被移动到一个单独的包(pandas-数据读取器)。安装 pandas-datareader 包 (https://github.com/pandas-dev/pandas-datareader) 后,您可以将导入 from pandas.io import data, wb 更改为 from pandas_datareader import data, wb."

所以,我将 "from...import..." 行重写为:

from pandas_datareader import data, wb

正如预期的那样,当我 运行 代码时,它抛出一个错误:

builtins.NameError: name 'web' is not defined

当我尝试这段代码时:

x = wb.pandas-datareader('GE','yahoo',(2016, 10, 1), (2016, 11, 1))

抛出此错误:

builtins.AttributeError: module 'pandas_datareader.wb' has no attribute 'pandas'

当我尝试这段代码时:

x = wb.Datareader('GE','yahoo',(2016, 10, 1), (2016, 11, 1))

抛出此错误:

builtins.AttributeError: module 'pandas_datareader.wb' has no attribute 'DataReader'

谁能告诉我现在如何调用数据读取器? 提前致谢

在pandas中使用数据reader的旧方法不应作为您遇到的第一个错误。所以永远不要使用 import pandas.io.data as web

访问新包模块的正确方法pandas_datareader就是你写的。

from pandas_datareader import data, wb

datawb 是具有许多不同函数的模块(Python 文件),您可以调用这些函数将不同类型的外部数据引入您的程序。要查看每个模块的所有功能,请使用 dir 命令。

您可以通过以下方式查看所有公开可用的对象:

[attribute for attribute in dir(data) if attribute[0] != '_']

输出

['DataReader',
 'EurostatReader',
 'FamaFrenchReader',
 'FredReader',
 'GoogleDailyReader',
 'OECDReader',
 'Options',
 'YahooActionReader',
 'YahooDailyReader',
 'YahooOptions',
 'YahooQuotesReader',
 'get_components_yahoo',
 'get_data_famafrench',
 'get_data_fred',
 'get_data_google',
 'get_data_yahoo',
 'get_data_yahoo_actions',
 'get_quote_google',
 'get_quote_yahoo',
 'warnings']

因此,这些是您可以在 data 模块中的 . 之后使用的所有项目。

如果您对 wb 模块使用 运行 相同的 dir 命令,您将看到该模块中不存在 DataReader。它存在于 data 模块的上述列表中。

最后,确保你的函数拼写正确 DataReader 有大写字母 R。使用制表符完成来避免这些错误,否则你会得到 no attribute error。如果 dir 命令没有输出您想要的功能,那么您使用了错误的模块。

DataReader 也接受字符串作为日期,因此以下内容将为您提供所需内容。

data.DataReader('GE','yahoo', '2016-10-1', '2016-11-1')