每天滚动的熊猫滚动平均值表现异常

时间:2019-03-03 17:13:08

标签: python pandas rolling-computation

我不明白每日偏移量的滚动平均值是如何工作的。

在下面的示例中,我从Values列计算了4天的滚动平均值。

因为我使用了4D偏移量,所以我假设它将给出每天最后四天的所有值的平均值。

相反,在最后一行中,它返回最后五个的总和,但除以非NaN值的数量,即{{ 1}}。

为清楚起见,我假设这样的事情:(44 + 34 + 0 + 0 + 37) / 3) = 38.333333

(40 + 17 + 44 + 34 + 0 + 0 + 37) / 5) = 34.4

Here is the example in csv

我在上表中输入了以下代码:

    Date                    Values  Rolling Mean
0   2017-04-10 20:31:00     9.0     9.000000
1   2017-04-11 12:22:00     19.0    14.000000
2   2017-04-11 18:23:00     14.0    14.000000
3   2017-04-12 14:11:00     11.0    13.250000
4   2017-04-13 00:51:00     40.0    18.600000
5   2017-04-13 12:20:00     17.0    18.333333
6   2017-04-13 18:06:00     44.0    22.000000
7   2017-04-14 13:29:00     34.0    23.500000
8   2017-04-15 00:00:00     NaN     25.571429
9   2017-04-16 00:00:00     NaN     29.200000
10  2017-04-17 17:51:00     37.0    38.333333

这是某种错误吗?我如何相对容易地纠正它?

修改

仅意识到arr = pd.read_csv('example.csv') arr['Date'] = pd.to_datetime(arr['Date']) rmean = arr.rolling( window='4D', on='Date', min_periods=0 ).mean().rename(columns={'Values': 'Rolling Mean'}) pd.merge( arr, rmean, on='Date' ) 并不是问题,但也许是(不)考虑值的问题。

当我用NaN删除整行时(如下所示),它仍然产生相同的结果。好像只考虑了窗口中第一天的最后一个条目(即NaN

2017-04-13 18:06:00

编辑2

好,我明白了。它通过采用“天偏移X 24小时”而不是我最初假设的“天偏移X日历天”来计算偏移。

请参阅:

rmean = arr.dropna().rolling(
    window='4D',
    on='Date',
    min_periods=0
).mean().rename(columns={'Values': 'Rolling Mean'})

0 个答案:

没有答案