【问题标题】:What are Pandas "expanding window" functions?什么是 Pandas 的“扩展窗口”功能?
【发布时间】:2018-01-04 08:33:24
【问题描述】:

Pandas 文档列出了一堆“扩展窗口函数”:

http://pandas.pydata.org/pandas-docs/version/0.17.0/api.html#standard-expanding-window-functions

但我无法从文档中弄清楚他们做了什么。

【问题讨论】:

    标签: pandas


    【解决方案1】:

    您可能想阅读this Pandas docs

    滚动统计信息的常见替代方法是使用扩展 窗口,它产生具有所有数据的统计值 在那个时间点之前可用

    它们遵循与 .rolling 类似的界面,带有 .expanding 方法返回一个 Expanding 对象。

    由于这些计算是滚动统计的一种特殊情况,它们 在 pandas 中实现,因此以下两个调用是 等效:

    In [96]: df.rolling(window=len(df), min_periods=1).mean()[:5]
    Out[96]: 
                       A         B         C         D
    2000-01-01  0.314226 -0.001675  0.071823  0.892566
    2000-01-02  0.654522 -0.171495  0.179278  0.853361
    2000-01-03  0.708733 -0.064489 -0.238271  1.371111
    2000-01-04  0.987613  0.163472 -0.919693  1.566485
    2000-01-05  1.426971  0.288267 -1.358877  1.808650
    
    In [97]: df.expanding(min_periods=1).mean()[:5]
    Out[97]: 
                       A         B         C         D
    2000-01-01  0.314226 -0.001675  0.071823  0.892566
    2000-01-02  0.654522 -0.171495  0.179278  0.853361
    2000-01-03  0.708733 -0.064489 -0.238271  1.371111
    2000-01-04  0.987613  0.163472 -0.919693  1.566485
    2000-01-05  1.426971  0.288267 -1.358877  1.808650
    

    【讨论】:

    • 所以这是一个滚动操作,窗口作为数据帧的全长。我不明白为什么需要为此设置一个单独的函数...
    • 其实很有用,因为滚动操作是针对固定窗口大小的。但是,此操作是扩大窗口大小。它以长度为 1 个周期的“滚动”窗口开始,下一个窗口大小是 2 个周期,然后是 3、4、5 等。对于流数据,原始数据帧全长的滚动窗口将开始丢弃第一个几个观察结果,而扩展窗口允许您添加新数据。
    • @Ryan 对不起,我真的没有看到 pandas 可以处理蒸汽数据。谷歌什么也没找到,你能给我们举个例子吗?
    • 这仅适用于处理单个数据框中的值吗?如果您为加载的每批数据都实例化一个新的 Dataframe,那么累积 std 有哪些选项可用?
    【解决方案2】:

    Uber 的这些插图很好地解释了这些概念:

    扩展窗口

    滑动窗口

    原文:https://eng.uber.com/omphalos/

    【讨论】:

      【解决方案3】:

      用一行来总结滚动和扩展功能的区别: 在滚动函数中,窗口大小保持不变,而在扩展函数中,它会发生变化。

      示例: 假设你想预测天气,你有 100 天的数据:

      1. 滚动:假设窗口大小为 10。对于第一次预测,它将使用(前一个)10 天的数据并预测第 11 天。对于下一个预测,它将使用第 2 天(数据点)来第 11 天的数据。

      2. 扩展:对于第一次预测,它将使用 10 天的数据。但是,对于第二次预测,它将使用 10 + 1 天 的数据。窗口因此“扩大”了。

        • 窗口大小在后面的方法中不断扩大。

      代码示例:

      sums = series.expanding(min_periods=2).sum()
      

      series 包含以前下载的应用程序数量随时间序列的数据。 以上编写的代码行汇总了截至当时所有下载的应用程序数量。

      注意:min_periods=2 表示我们需要至少 2 个以前的数据点来聚合。我们这里的总和就是总和。

      【讨论】:

        猜你喜欢
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        • 2020-03-13
        • 1970-01-01
        相关资源
        最近更新 更多