【问题标题】:Pandas rolling mean returns 'nan'Pandas 滚动平均值返回“nan”
【发布时间】:2016-04-09 18:03:20
【问题描述】:

我有一组位置(索引),在这些位置(索引)可以在数据集中找到局部最大值。我已经应用了以下简单的极值检测方法,但是由于我的数据对较小的波动很敏感,我希望过滤检测到的极值以仅包括离平均值一个标准偏差的异常值,如在 21 分钟的滑动窗口中测量的那样到活动量。

为此,我需要滚动计算每个 21 分钟窗口的平均值和标准差,这需要pandas.rolling_mean 方法。然而,在将detected_extremanp.array 传递给rolling_meanstddev 方法时,我得到了结果:[[ nan nan nan nan nan nan …]] 不可用的结果。这是为什么呢?

x = np.array(df_1, dtype=np.float)

# for local maxima
positions = argrelextrema(x, np.greater)

detected_extrema = x.take(positions)
print detected_extrema

print pd.rolling_mean(detected_extrema, 21, min_periods=None, freq=None, center=False, how=None)
print pd.rolling_std(detected_extrema, 21, min_periods=None, freq=None, center=False, how=None)

输出:

[[   89.    60.    78.    55.    61.    49.    38.    40.    30.    20.
     36.    39.    22.    19.   772.   204.   153.   139.   184.   130.
    154.   187.   174.   279.   273.   164.    42.    36.  1004.   216.
    761.   322.   205.   564.   373.   171.]]
[[ nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
   nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
   nan  nan  nan  nan  nan  nan  nan  nan]]
[[ nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
   nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
   nan  nan  nan  nan  nan  nan  nan  nan]]

【问题讨论】:

  • 你的输入数据中有nans吗?

标签: python numpy pandas nan mean


【解决方案1】:

你可以尝试重塑你的数组:

a = np.array([[89, 60, 78, 55, 61, 49, 38, 40, 30, 20, 36,39,22,19, 772, 204, 153, 139, 184, 130, 154, 187, 174, 279, 273, 164,42,36,1004, 216, 761, 322, 205, 564, 373, 171]])

a.shape
(1, 36)

pd.rolling_mean(a, 21, min_periods=None, freq=None, center=False, how=None)

[[ nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
   nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
   nan  nan  nan  nan  nan  nan  nan  nan]]

b = a.flatten()
b.shape
(36,)

pd.rolling_mean(b, 21, min_periods=None, freq=None, center=False, how=None)

[          nan           nan           nan           nan           nan
           nan           nan           nan           nan           nan
           nan           nan           nan           nan           nan
           nan           nan           nan           nan           nan
  112.95238095  117.61904762  123.04761905  132.61904762  143.          147.9047619
  147.57142857  147.47619048  193.38095238  202.23809524  237.52380952
  251.14285714  259.04761905  284.85714286  301.71428571  273.0952381 ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2018-01-06
    • 2019-06-16
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多