【问题标题】:Getting a "Future Warning" when importing for Yahoo with Pandas-Datareader使用 Pandas-Datareader 为 Yahoo 导入时收到“未来警告”
【发布时间】:2020-05-19 04:55:29
【问题描述】:

我目前正在使用 pandas-datareader 从雅虎成功导入股票信息。但是,在提取数据之前,我总是收到以下消息:

FutureWarning:pandas.util.testing 已弃用。请改用 pandas.testing 中公共 API 中的函数。

有人知道这意味着什么以及如何解决它吗?

【问题讨论】:

  • 我认为您无能为力,这取决于 pandas-datareader 库。直到这个库的创建者最终将其代码更新为最新的 Pandas api。

标签: python pandas-datareader


【解决方案1】:

原因:这个警告的原因基本上是pandas_datareader 正在从pandas 库中导入一个将被弃用的模块。具体来说,它正在导入pandas.util.testing,而新的首选模块将是pandas.testing

解决方案:首先这是一个警告,而不是彻底的错误,因此它不一定会破坏您的程序。因此,根据您的具体用例,您现在可能可以忽略它。

话虽如此,您可以考虑以下几个选项:

  • 选项 1:自己更改代码 -- 进入 pandas_datareader 模块并将 compat_init.py 中当前显示为 from pandas.util.testing import assert_frame_equal 的代码行修改为 from pandas.testing import assert_frame_equal。这将从正确的模块导入相同的函数。
  • 选项 2:等待pandas-datareader 更新 --您也可以等待库升级到正确导入,然后运行pip3 install --upgrade pandas-datareader。您可以转到 pandas-datareader 的 Github 存储库并提出问题。
  • 选项 3:忽略它 -- 暂时忽略警告,因为它不会破坏您的程序。

【讨论】:

    【解决方案2】:

    在您的虚拟环境中,只需更改中的导入语句

    /env/lib/site-packages/pandas_datareader/compat/__init__.py
    

    (如果您不使用虚拟环境,则为 python 的 site-packages 目录)

    来自

    from pandas.util.testing import assert_frame_equal
    

    from pandas.testing import assert_frame_equal
    

    【讨论】:

    【解决方案3】:

    如果您正在使用此 from pandas_datareader import data 导入,则它已被弃用。

    替换为:

    from pandas_datareader import data, wb
    

    import pandas_datareader as pdr
    

    因为数据模块中的许多函数已包含在顶级 API 中。

    【讨论】:

    【解决方案4】:

    Mac OS 打开/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas_datareader/compat/__init__.py

    更改:from pandas.util.testing import assert_frame_equal

    收件人:from pandas.testing import assert_frame_equal

    【讨论】:

    • 这样修改库的代码不是个坏主意吗?
    • @AMC:这取决于。在这种情况下,警告来自熊猫util.testing 模块已被弃用的消息,而是支持pandas.testing。在pandas_datareader 将它们的导入切换到正确的模块之前,您可以通过自己手动编辑包以符合导入测试功能assert_frame_equal 的新方法来绕过此警告。
    • @CarlS 我的评论是指一般的想法,而不是这种特殊情况的细节。
    【解决方案5】:

    尝试以下行导入,它会工作。

    import pandas_datareader.data as web
    

    欲了解更多信息,请访问以下链接。

    https://www.reddit.com/r/learnpython/comments/fel32c/getting_a_future_warning_error_on_a_simple_web/

    【讨论】:

    • 这不是唯一的问题,为什么会这样。这和 OP 写的没什么不同
    【解决方案6】:

    您可以在 pandas_datareader 中找到“util.testing”代码,它与 pandas 是分开的。

    【讨论】:

      猜你喜欢
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多