pandas.Panel4D.resample¶
-
Panel4D.
resample
(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention='start', kind=None, loffset=None, limit=None, base=0, on=None, level=None)[source]¶ 时间序列的频率转换和重采样的方便方法。对象必须具有类datetime索引(DatetimeIndex,PeriodIndex或TimedeltaIndex),或者将类datetime类型的值传递给on或level关键字。
参数: 规则:string
表示目标转换的偏移字符串或对象
axis:int,可选,默认为0
已关闭:{'right','left'}
bin间隔的哪一侧被关闭
标签:{'right','left'}
哪个bin边标签到标签桶
约定:{'start','end','s','e'}
loffset:timedelta
调整重新采样的时间标签
base:int,default 0
对于平均细分1天的频率,聚合间隔的“原点”。例如,对于“5min”频率,base可以在从0到4的范围内。默认为0
on:string,可选
对于DataFrame,要使用列而不是索引进行重新采样。列必须是类datetime。
版本0.19.0中的新功能。
level:string或int,可选
对于MultiIndex,用于重新采样的级别(名称或数字)。级别必须是datetime-like。
版本0.19.0中的新功能。
要了解有关偏移字符串的详情,请参阅“此链接”
< http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases>;`__。
例子
首先创建一个包含9分钟时间戳的序列。
>>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64
将系列缩减为3分钟bin,并将落入bin的时间戳的值相加。
>>> series.resample('3T').sum() 2000-01-01 00:00:00 3 2000-01-01 00:03:00 12 2000-01-01 00:06:00 21 Freq: 3T, dtype: int64
将系列缩小到如上所述的3分钟箱,但使用右边缘而不是左边标记每个箱。请注意,用作标签的值区中的值不包括在其标记的值区中。例如,在原系列中,桶
2000-01-01 00:03:00
包含值3,但是总和值带有标签``2000-01-01 00:03:00``的重采样桶不包括3(如果是,则求和值为6,而不是3)。要包括此值,请关闭bin间隔的右侧,如下面的示例所示。>>> series.resample('3T', label='right').sum() 2000-01-01 00:03:00 3 2000-01-01 00:06:00 12 2000-01-01 00:09:00 21 Freq: 3T, dtype: int64
将系列缩小到如上所述的3分钟bin,但关闭bin间隔的右侧。
>>> series.resample('3T', label='right', closed='right').sum() 2000-01-01 00:00:00 0 2000-01-01 00:03:00 6 2000-01-01 00:06:00 15 2000-01-01 00:09:00 15 Freq: 3T, dtype: int64
将系列取样到30秒箱中。
>>> series.resample('30S').asfreq()[0:5] #select first 5 rows 2000-01-01 00:00:00 0 2000-01-01 00:00:30 NaN 2000-01-01 00:01:00 1 2000-01-01 00:01:30 NaN 2000-01-01 00:02:00 2 Freq: 30S, dtype: float64
将系列取样到30秒箱中,并使用
pad
方法填充NaN
值。>>> series.resample('30S').pad()[0:5] 2000-01-01 00:00:00 0 2000-01-01 00:00:30 0 2000-01-01 00:01:00 1 2000-01-01 00:01:30 1 2000-01-01 00:02:00 2 Freq: 30S, dtype: int64
将系列取样到30秒箱中,并使用
bfill
方法填充NaN
值。>>> series.resample('30S').bfill()[0:5] 2000-01-01 00:00:00 0 2000-01-01 00:00:30 1 2000-01-01 00:01:00 1 2000-01-01 00:01:30 2 2000-01-01 00:02:00 2 Freq: 30S, dtype: int64
通过
apply
传递自定义函数>>> def custom_resampler(array_like): ... return np.sum(array_like)+5
>>> series.resample('3T').apply(custom_resampler) 2000-01-01 00:00:00 8 2000-01-01 00:03:00 17 2000-01-01 00:06:00 26 Freq: 3T, dtype: int64