在建模过程中,我们常常需要需要对有时间关系的数据进行整理。比如我们想要得到某一时刻过去30分钟的销量(产量,速度,消耗量等),传统方法复杂消耗资源较多,熊猫提供的滚动使用简单,速度较快。
<强>函数原型和参数说明强>
DataFrame。滚动(窗口、min_periods=没有频率=None,中心=False, win_type=,> #为方便观察,并列排列 df=pd。DataFrame ({B: [0, 1, 2, np。南4]}) df。滚动(3 min_periods=1) .sum () df。滚动(min_periods=1,中心=True) .sum () B B1 B2 0 0.0 0.0 1.0 1 1.0 1.0 3.0 2 2.0 3.0 3.0 3南3.0 - 6.0 4 4.0 6.0 4.0 >之前win_type:窗口类型,默认为没有一般不特殊指定,了解支持的其他窗口类型,参考这里。
:对于DataFrame如果不使用指数(索引)作为滚动的列,那么用在来指定使用哪列。
关闭:定义区间的开闭,曾经支持int类型的窗口,新版本已经不支持了。对于抵消类型默认是左开右闭的即默认为正确的。可以根据情况指定为左等。
轴:方向(轴),一般都是0。
<强>举例强>
一个简单的场景,从向B运送东西,我们想看一下以3秒作为一个时间窗运送的量。
#一地有两个仓库,都运往B。 df=pd。DataFrame ({' 1 ': [A1, A2, A1, A2, A2, A1, A2的), “2”:(B1, B1, B1, B1, B1, B1,“B1”), “num”:(1、2、1、3、4、2、1]}, 指数=[pd。时间戳(' 20130101 09:00:00 '), pd。时间戳(' 20130101 09:00:01 '), pd。时间戳(' 20130101 09:00:02 '), pd。时间戳(' 20130101 09:00:03 '), pd。时间戳(' 20130101 09:00:04 '), pd。时间戳(' 20130101 09:00:05 '), pd。时间戳(20130101 09:00:06)]) # 1 2 num # 2013-01-01 09:00:00 A1 B1 1 # 2013-01-01 09:00:01 A2 B1 2 # 2013-01-01 09:00:02 A1 B1 1 # 2013-01-01 09:00:03 A2 B1 3 # 2013-01-01 09:00:04 A2 B1 4 # 2013-01-01 09:00:05 A1 B1 2 # 2013-01-01 09:00:06 A2 B1 1<强>使用滚进行计算强>
#首先我们先对groupby进行聚合(如果只有从一个→B,那么不用聚合一个滚就可以) #以9:00:04秒为例,由于时间窗是3 s,默认的关闭是正确的,所以我们相加04,03年,02秒的num,共有4 + 3 + 0=7 df。groupby ([' 1 ', ' 2 ']) (“num”) .rolling (“3 s”) .sum () # 1 2 # 2013-01-01 A1 B1 09:00:00 1.0 # 2013-01-01 09:00:02 2.0 # 2013-01-01 09:00:05 2.0 # A2 B1 2013-01-01 09:00:01 2.0 # 2013-01-01 09:00:03 5.0 # 2013-01-01 09:00:04 7.0 # 2013-01-01 09:00:06 5.0 #名称:num dtype: float64由于使用groupby,所以最后的结果是MultiIndex,想使用正常格式在DataFrame上使用reset_index()即可。
以上这篇对熊猫中时间窗函数滚动的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
对熊猫中时间窗函数滚动的使用详解