Pandas 和 NaN 的滚动标准差

Rolling standard deviation with Pandas, and NaNs

我有这样的数据:

1472698113000000000     -28.84
1472698118000000000     -26.69
1472698163000000000     -27.65
1472698168000000000     -26.1
1472698238000000000     -27.33
1472698243000000000     -26.47
1472698248000000000     -25.24
1472698253000000000     -25.53
1472698283000000000     -27.3
...

这是一个不断增长的时间序列。每次它增长时,我都会尝试使用 pandas.rolling_std 获取集合的滚动标准差。每次,结果都包含我无法使用的 NaN(我试图将结果插入 InfluxDB,当它看到 NaN 时它会抱怨。)

我尝试过不同的 window 尺寸。我在不同的系列上这样做,具有不同的增长率和当前大小(有些只是几个测量长度,有些是数百或数千)。

简单地说,我只想在 InfluxDB 中有一个滚动标准偏差,这样我就可以将其绘制成图表并观察源数据如何随时间变化,相对于它的平均值。我怎样才能克服这个 NaN 问题?

如果你正在做类似

的事情

df.rolling(5).std()

并获得

0           NaN       NaN
1           NaN       NaN
2           NaN       NaN
3           NaN       NaN
4  5.032395e+10  1.037386
5  5.345559e+10  0.633024
6  4.263215e+10  0.967352
7  3.510698e+10  0.822879
8  1.767767e+10  0.971972

您可以使用 .dropna().

去除 NaN

df.rolling(5).std().dropna():

4  5.032395e+10  1.037386
5  5.345559e+10  0.633024
6  4.263215e+10  0.967352
7  3.510698e+10  0.822879
8  1.767767e+10  0.971972