在熊猫滚动中应用自定义窗口功能
Posted
技术标签:
【中文标题】在熊猫滚动中应用自定义窗口功能【英文标题】:Apply custom window function in pandas rolling 【发布时间】:2021-01-10 11:11:08 【问题描述】:我有一个 DataFrame,例如
df = pd.DataFrame([1,2,3,4,5,6,7,8,9])
现在我想应用滚动平均值,例如
df.rolling(window=3, win_type=None).mean()
这给了我一个均匀加权元素的结果。
现在我想更改窗口功能。我知道,这可以通过将字符串(例如 'hann'
)传递给 win_type
参数来实现。
df.rolling(window=3, win_type='hann').mean()
现在对我来说有趣的一点是应用一个窗口函数,它使用指数衰减的权重,给“右边”的值一个高权重,给“更左边”的值一个较低的权重。这应该可以通过使用scipy.signal.windows.exponential
并调整参数来实现。但是,我正在努力传递这些参数,因为 win_type
只接受字符串。
当我尝试win_type='exponential'
时,我得到ValueError: exponential window requires tau
。
谁能告诉我如何将tau
等参数传递给win_type
甚至自己创建一个窗口函数?
【问题讨论】:
【参考方案1】:答案是here 重要。解决方案取决于 pandas 版本。 Python 常见
import pandas as pd
df = pd.DataFrame([1,2,3,4,5,6,7,8,9])
在 tau=10 的情况下。 对于 Pandas='0.24.2'
df.rolling(window=(3,10), win_type='exponential').mean()
对于熊猫='1.1.3'
df.rolling(window=3, win_type='exponential').mean(tau=10)
不要犹豫添加其他版本依赖。
【讨论】:
非常感谢。但是,复制这个确切的代码仍然会产生 ``` ValueError:exponential window requires tau ``` 很奇怪。这 3 行代码对我有用。你使用的是哪个版本的 pandas 和 numpy? 我的熊猫是 1.1.3 我使用了 pandas='0.24.2',在检查了 1.1.3 版本后,我可以声称该解决方案取决于版本。【参考方案2】:从 Stepan 提供的链接中找到答案: Tau 必须在函数调用中传递,即
df.rolling(window=(3), win_type='exponential').mean(tau=10)
【讨论】:
以上是关于在熊猫滚动中应用自定义窗口功能的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动均值(rolling mean)自定义指定滚动窗口的大小(window size)
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动加和值(rolling sum)自定义指定滚动窗口的大小(window size)
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动中位数(rolling median)自定义指定滚动窗口的大小(window size)
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动最小值(rolling minimum)自定义指定滚动窗口的大小(window size)