pandas 使用包执行带有group by的滚动窗口函数

g6baxovj  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(158)

你能在组上使用一个窗口函数吗,feature engine中的一些东西?我一直在阅读docs,并试图找到一些关于如何做到这一点的清晰度,但它似乎应该存在,但我似乎找不到它是如何实现的。

import pandas as pd

# create a sample dataframe with groups
df = pd.DataFrame({'group': ['A', 'A','A', 'B', 'B', 'B','B', 'C', 'C', 'C','C'],
                   'value': [1, 2, 3, 4, 5, 6, 7, 8,9,10,11]})

# group the data by the 'group' column and apply a rolling window mean of size 2
rolling_mean = df.groupby('group')['value'].rolling(window=2).mean()

print(rolling_mean)

我猜应该是这样的。

from feature_engine.timeseries.forecasting import WindowFeatures

wf = WindowFeatures(
window_size=3,
variables=["value"],
operation=["mean"],
groupby_cols=["group"]
)

transformed_df = wf.fit_transform(df)

我似乎在功能引擎中找不到group_by(groupby_cols)参数。
如果能看到其他标准化时间序列数据的特性工程的方法,那就太好了,也许来自sktime或其他框架。

ipakzgxi

ipakzgxi1#

当您想对每个组单独应用此操作时,可以使用groupby_apply

wf = WindowFeatures(window=3, variables=["value"], functions=["mean"])

# same as pd.concat([wf.fit_transform(X) for _, X in df.groupby('group')])
out = df.groupby('group', group_keys=False).apply(wf.fit_transform)

输出:

>>> out
   group  value  value_window_3_mean
0      A      1                  NaN
1      A      2                  NaN
2      A      3                  NaN
3      B      4                  NaN
4      B      5                  NaN
5      B      6                  NaN
6      B      7                  5.0
7      C      8                  NaN
8      C      9                  NaN
9      C     10                  NaN
10     C     11                  9.0

相关问题