【问题标题】:Rolling standard deviation with Pandas, and NaNsPandas 和 NaN 的滚动标准差
【发布时间】:2016-09-01 03:20:35
【问题描述】:

我的数据如下所示:

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 时它会抱怨。)

我尝试了不同的窗口大小。我正在对不同的系列进行此操作,具有不同的增长率和当前大小(有些只是几个测量值,有些是数百或数千个)。

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

【问题讨论】:

    标签: python pandas influxdb standard-deviation


    【解决方案1】:

    如果你正在做类似的事情

    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
    

    【讨论】:

      猜你喜欢
      • 2014-05-09
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 2020-10-14
      • 1970-01-01
      • 2018-03-29
      相关资源
      最近更新 更多