DataFrame.interpolation() 在其源代码中如何工作?

发布于 2025-01-17 00:31:01 字数 492 浏览 0 评论 0原文

由于我找不到 DataFrame.interpolation() 的“方法”参数的单个方法的声明,我在这里问:

pandas 的 DataFrame.interpolation() 与它考虑的行数相比如何工作,它只是 NaN 之前的行和之后的行吗? 或者它是整个 DataFrame(它如何在 100 万行中工作?)

如果您已经知道在哪里查找,请随时分享源代码的链接(因为 https://github.com/pandas-dev/pandas/blob/06d230151e6f18fdb8139d09abf539867a8cd481/pandas/core/frame.py#L10916 不包含“方法”的声明(例如“多项式”) 。

Since I could not find the declarations of the single methods of DataFrame.interpolation()'s "method"-parameter, I am asking here:

How does pandas' DataFrame.interpolation() work in relation to the amount of rows it considers, is it just the row before the NaNs and the row right after?
Or is it the whole DataFrame (how does that work at 1 million rows?)

If you already know where to look, feel free to share the link to the source-code (since https://github.com/pandas-dev/pandas/blob/06d230151e6f18fdb8139d09abf539867a8cd481/pandas/core/frame.py#L10916 doesnt include the "method"'s declarations (for example "polynomial").

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过气美图社 2025-01-24 00:31:01

我在 core/missing.py 中找到了附件。

我的解释是,插值要么使用 np.interp 完成,要么如果指定了方法并且仅在 scipy 中可用,则使用 _interpolate_scipy_wrapper 完成。我无法找到一个函数,但合理的猜测是它是 scipy 的包装器。

if method in NP_METHODS:
        # np.interp requires sorted X values, #21037

        indexer = np.argsort(indices[valid])
        yvalues[invalid] = np.interp(
            indices[invalid], indices[valid][indexer], yvalues[valid][indexer]
        )
    else:
        yvalues[invalid] = _interpolate_scipy_wrapper(
            indices[valid],
            yvalues[valid],
            indices[invalid],
            method=method,
            fill_value=fill_value,
            bounds_error=bounds_error,
            order=order,
            **kwargs,
        )

    yvalues[preserve_nans] = np.nan

I found the attached in core/missing.py.

My interpretation is that interpolation is either done with np.interp or, if method is specified and only available in scipy, with _interpolate_scipy_wrapper. A function which I could not locate but a reasonable guess is that it is a wrapper for scipy.

if method in NP_METHODS:
        # np.interp requires sorted X values, #21037

        indexer = np.argsort(indices[valid])
        yvalues[invalid] = np.interp(
            indices[invalid], indices[valid][indexer], yvalues[valid][indexer]
        )
    else:
        yvalues[invalid] = _interpolate_scipy_wrapper(
            indices[valid],
            yvalues[valid],
            indices[invalid],
            method=method,
            fill_value=fill_value,
            bounds_error=bounds_error,
            order=order,
            **kwargs,
        )

    yvalues[preserve_nans] = np.nan
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文