pd.rolling_mean被弃用 - ndarrays的替代品

sal*_*adi 14 python numpy mean scipy pandas

它看起来像是pd.rolling_mean被弃用了ndarrays,

 pd.rolling_mean(x, window=2, center=False)
Run Code Online (Sandbox Code Playgroud)

FutureWarning:对于ndarrays,不推荐使用pd.rolling_mean,将来的版本将删除

但根据这个SO答案,它似乎是最快的方式.

现在有没有新的方法直接使用SciPy或NumPy这样做pd.rolling_mean

sal*_*adi 9

编辑 - 不幸的是,看起来新的方式不是那么快:

新版熊猫:

In [1]: x = np.random.uniform(size=100)

In [2]: %timeit pd.rolling_mean(x, window=2)
1000 loops, best of 3: 240 µs per loop

In [3]: %timeit pd.Series(x).rolling(window=2).mean()
1000 loops, best of 3: 226 µs per loop

In [4]: pd.__version__
Out[4]: '0.18.0'
Run Code Online (Sandbox Code Playgroud)

旧版:

In [1]: x = np.random.uniform(size=100)

In [2]: %timeit pd.rolling_mean(x,window=2)
100000 loops, best of 3: 12.4 µs per loop

In [3]: pd.__version__
Out[3]: u'0.17.1'
Run Code Online (Sandbox Code Playgroud)

  • 我几乎同意-但是新语法意味着我们可以将* any *函数应用于该窗口,而不仅是预先定义的函数。 (2认同)

max*_*moo 5

看起来新方法是通过DataFrame.rolling类上的方法(我猜你应该把它想象成一个groupby):http : //pandas.pydata.org/pandas-docs/version/0.18.0/whatsnew。 html

例如

x.rolling(window=2).mean()
Run Code Online (Sandbox Code Playgroud)