【发布时间】:2014-09-12 13:58:50
【问题描述】:
假设我有每日数据(不规则间隔),我想计算过去每个月的移动标准差(或任意非线性函数) 5个月。例如,对于 2012 年 5 月,我将计算从 2012 年 1 月到 2012 年 5 月(5 个月)期间的 stddev。对于 2012 年 6 月,该周期从 2012 年 2 月开始,依此类推。最终结果是具有月值的时间序列。
我无法应用滚动窗口,因为这首先是每天,其次我需要指定值的数量(滚动窗口不会按时间范围汇总,一些帖子解决了这个问题issue但它们与我的问题无关,因为新的一天仍然会滚动)。
我无法应用重采样,因为这样的样本将是每 5 个月一次,例如,我将只有 2012 年 5 月、2012 年 10 月、2013 年 3 月的值...最后,作为函数是非线性我无法通过首先进行每月样本然后对其应用 5 个周期的滚动窗口来重建它。
所以我需要一种重采样功能,应用于由时间间隔(而不是值的数量)定义的滚动窗口。
如何在熊猫中做到这一点?一种方法是组合几个(在本例中为 5 个)重采样(5 个月)时间序列,每个时间序列都有一个月的偏移量,然后将所有这些序列对齐为一个......但我不知道如何实现这一点。
【问题讨论】:
-
您是在查找过去五个 日历 个月(2012 年 5 月:Dec、Jan、Feb、Mar、Apr)或过去五个月的 std有数据(如果缺少 2 月,例如:11 月、12 月、1 月、3 月、4 月)?您也提到包括 May,但这没有意义,除非您指的是前四个月 + MTD(在这种情况下我的问题仍然存在)
-
我在跟随时遇到了一些麻烦。示例中的目标是调用从 1 月 1 日到 5 月 31 日的每日值,计算这些值的标准差并将其作为 5 月的值返回吗?
-
澄清:我正在寻找 5 个日历月(数据不一定是均匀间隔的),包括当月,所以对于 2012 年 5 月,我从 2012 年 1 月到 2012 年 5 月(窗口的长度是 5 个月,不管我每个月只有一天还是 20 天)。用户@user3823992 是正确的,另外我只关心每月的结果,所以我需要在 2012 年 6 月、2012 年 7 月等申请。
-
如果 pandas 已经为您导入了日期和时间数据,您应该能够使用语法
dft[datetime(2013, 1, 1):datetime(2013,6)]从给定月份获取选择数据。只需编写一个循环或等效程序来循环开始和结束月份的值,并将您的函数应用于结果数据框中的值。 (抱歉,我现在没有方便自己测试的日期戳数据集)
标签: python pandas resampling