- 重采样(resampling)指的是将时间序列从一个频率转换到另一个频率的处理过程。是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。
- 将高频率数据聚合到低频率称为降采样(downsampling)
- 而将低频率数据转换到高频率则称为升采样(upsampling)
主要参数说明。
rule : DateOffset, Timedelta or str
表示重采样频率,例如‘M’、‘5min’,Second(15)
how : str
用于产生聚合值的函数名或数组函数,例如
'mean'、'ohlc'、'np.max'
等,默认是'mean'
,其他常用的值由:'first'、'last'、'median'、'max'、'min'
axis : {0 or 'index', 1 or 'columns'}, default 0
默认是纵轴,横轴设置axis=1
fill_method : str, default None
升采样时如何插值,比如
ffill、bfill
等closed : {'right', 'left'}, default None
在降采样时,各时间段的哪一段是闭合的,
'right'或'left'
,默认'right'
label : {'right', 'left'}, default None
在降采样时,如何设置聚合值的标签,例如,9:30-9:35会被标记成9:30还是9:35,默认9:35
convention : {'start', 'end', 's', 'e'}, default 'start'
当重采样时期时,将低频率转换到高频率所采用的约定(
'start'或'end'
)。默认'end'
kind : {'timestamp', 'period'}, optional, default None
聚合到时期(
'period'
)或时间戳('timestamp'
),默认聚合到时间序列的索引类型loffset : timedelta, default None
面元标签的时间校正值,比如
'-1s'
或Second(-1)
用于将聚合标签调早1秒limit : int, default None
在向前或向后填充时,允许填充的最大时期数
>>> rng = pd.date_range('2000-01-01', periods=100, freq='D')
>>> ts = pd.Series(np.random.randn(len(rng)), index=rng)
>>> ts
2000-01-01 -0.184415
2000-01-02 -0.078049
2000-01-03 1.550158
2000-01-04 0.206498
2000-01-05 0.184059
...
2000-04-05 -0.574207
2000-04-06 -1.719587
2000-04-07 0.140673
2000-04-08 -1.234146
2000-04-09 -0.835341
Freq: D, Length: 100, dtype: float64
pandas
对象都带有一个resample
方法,它是各种频率转换工作的主力函数。
resample
有一个类似于groupby的API
,调用resample
可以分组数据,然后会调用一个聚合函数:
>>> ts.resample('M').mean()
2000-01-31 0.053476
2000-02-29 -0.