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
我有这样的数据:
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()
.
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