Pandas的“扩展窗口”功能是什么?

ki1q1bka  于 2023-09-29  发布在  其他
关注(0)|答案(4)|浏览(112)

Pandas文档列出了一堆“扩展窗口函数”:
http://pandas.pydata.org/pandas-docs/version/0.17.0/api.html#standard-expanding-window-functions
但我不知道他们从文档中做了什么。它们是否等同于滚动函数,但降低了NA值?

yjghlzjz

yjghlzjz1#

您可能想阅读此Pandas文档:
滚动统计的一种常见替代方法是使用扩展窗口,该窗口将生成统计值,其中包含截至该时间点的所有可用数据
它们遵循与.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
deyfvvtc

deyfvvtc2#

总结一下滚动和扩展功能的区别:在滚动函数中,窗口大小保持不变,而在扩展函数中,窗口大小发生变化。
例如:假设你想预测天气,你有100天的数据:
1.滚动:假设窗口大小为10。对于第一次预测,它将使用(前)10天的数据并预测第11天。对于下一次预测,它将使用第2天(数据点)到第11天的数据。

  • 扩展:第一次预测将使用10天的数据。但是,对于第二次预测,它将使用10 + 1天的数据。窗口因此“扩大”了
  • 窗口大小在后面的方法中不断扩大。

代码示例:

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

series包含时间序列上先前下载的应用程序的数量的数据。上面写的代码行总和所有下载的应用程序的数量,直到那个时候。
注意:min_periods=2意味着我们至少需要2个以前的数据点来聚合。我们这里的总和是。

gmxoilav

gmxoilav3#

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

展开窗口

推拉窗

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

ncecgwcz

ncecgwcz4#

expanding函数类似于cumsumcumprodcummin等累积函数,但expanding中的前n个值可以跳过。如果我们将参数min_periods设置为1并且不跳过任何值,那么.expanding(1).sum().cumsum()得到的结果相同。以下是滚动、扩展和累积总和之间的比较:

col rolling(3).sum() expanding(3).sum()           cumsum()
0   10              NaN                NaN                 10
1   20              NaN                NaN              10+20
2   30         10+20+30           10+20+30           10+20+30
3   40         20+30+40        10+20+30+40        10+20+30+40
4   50         30+40+50     10+20+30+40+50     10+20+30+40+50
5   60         40+50+60  10+20+30+40+50+60  10+20+30+40+50+60

请注意,在rollingexpanding这两种情况下,我们从第三行开始,因为我们的窗口大小为3,并且我们需要至少3个值进行第一次计算(在此之前的所有行都得到NaN)。滚动窗口的大小保持不变,每次迭代后窗口向下移动一步。相反,扩展窗口不会移动,而是通过在每次迭代后添加下一个值来增加其大小,如cumsum

相关问题