微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mypy运行速度非常慢在 Pandas 系列方法上引发错误

如何解决Mypy运行速度非常慢在 Pandas 系列方法上引发错误

考虑以下代码

import pandas as pd
  

def calc_mard(x: pd.Series,y: pd.Series) -> float:

    x_at_y_timestamps: pd.Series = x[y.index]
    error: pd.Series = y - x_at_y_timestamps
    mard: float = 100.0 * (error.abs() / x).mean()

    return mard

从 mac 终端命令行对包含此代码文件运行 mypy 大约需要 40 秒。这是正常的吗?发现以下错误

xxx.py:8: error: "Series[Any]" has no attribute "abs"
Found 1 error in 1 file (checked 1 source file)

我经常收到错误抱怨熊猫系列方法。这里发生了什么?代码肯定会运行并产生预期的结果。

解决方法

据我所知,截至目前,pandas 没有打字存根。

例如,当我尝试在下面的脚本上运行 mypy 时出现以下错误。

import pandas as pd


def compute(ser1: pd.Series,ser2: pd.Series) -> float:
    return 100.0 * (ser1.abs() / ser2).mean()


if __name__ == '__main__':
    ser1: pd.Series = pd.Series([1,2,3])
    ser2: pd.Series = pd.Series([3,4,5])
    result = compute(ser1,ser2)
    print(result)
pandas_typing.py:1: error: Skipping analyzing 'pandas': found module but no type hints or library stubs
pandas_typing.py:1: note: See https://mypy.readthedocs.io/en/latest/running_mypy.html#missing-imports
Found 1 error in 1 file (checked 1 source file)

我想你已经安装了 data-science-types 包,它为 Pandas 提供了类型存根。

安装后,我确实遇到了同样的错误。

pandas_typing.py:5: error: "Series[Any]" has no attribute "abs"
Found 1 error in 1 file (checked 1 source file)

我查看了代码并注意到确实没有 abs 的方法 Serieshttps://github.com/predictive-analytics-lab/data-science-types/blob/master/pandas-stubs/core/series.pyi

您可能想在此处提交有关丢失的打字存根的问题。 https://github.com/predictive-analytics-lab/data-science-types/issues

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。