时间:2021-05-22
函数原型
resample(self, 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)
比较关键的是rule,closed,label下面会随着两个用法说明
降采样
对时间数据细粒度增大,可以把每天的数据聚合成一周,可以求和或者均值的方式进行聚合
下面给出列子
times=pd.date_range('20180101',periods=30)ts=pd.Series(np.arange(1,31),index=times)ts2018-01-01 12018-01-02 22018-01-03 32018-01-04 42018-01-05 52018-01-06 62018-01-07 72018-01-08 82018-01-09 92018-01-10 102018-01-11 112018-01-12 122018-01-13 132018-01-14 142018-01-15 152018-01-16 162018-01-17 172018-01-18 182018-01-19 192018-01-20 202018-01-21 212018-01-22 222018-01-23 232018-01-24 242018-01-25 252018-01-26 262018-01-27 272018-01-28 282018-01-29 292018-01-30 30Freq: D, dtype: int32ts_7d=ts.resample('7D').sum()ts_7d2018-01-01 282018-01-08 772018-01-15 1262018-01-22 1752018-01-29 59dtype: int32我们看看上面代码,就是先给出一个1-30号的series,l然后聚合成左闭右开的5个区间[1,8),[8,15),[15,22),[22-29),[29-5(下个月)),每个区间的值就为单个区间值之和。由于29号往后只有29号和30号有值,所以只有两个值
下面我们看看label和closed的功能
ts_7d=ts.resample('7D',closed='right',label='left').sum()ts_7dOut[14]:2017-12-25 12018-01-01 352018-01-08 842018-01-15 1332018-01-22 1822018-01-29 30上面的代码,将closed改为了right,区间就变成了左开右闭,那么如果从区间还是(1,8],1就取不到,所以往前取,就是(25,1],(1,8],(8,15],(15,22],(22,29],(29,5]这6个区间
ts_7d=ts.resample('7D',closed='right',label='right').sum()ts_7dOut[15]:2018-01-01 12018-01-08 352018-01-15 842018-01-22 1332018-01-29 1822018-02-05 30dtype: int32上面的代码就可以看出label=right就是指label等于右区间的值,如果label=left就是指label等于左区间的值
重采样
降低时间的细粒度,对于重采样,主要是涉及到值的填充。有下面的三种填充方法
不填充。那么对应无值的地方,用NaN代替。对应的方法是asfreq。
用前值填充。用前面的值填充无值的地方。对应的方法是ffill或者pad。
用后值填充。对应的方法是bfill,b代表back。
下面给出代码看一下
ts_7h_asfreq = ts.resample('7H').asfreq()print(ts_7h_asfreq)ts_7h_ffill = ts.resample('7H').ffill()print(ts_7h_ffill)ts_7h_bfill = ts.resample('7H').bfill()ts_7h_bfill2018-01-01 00:00:00 1.02018-01-01 07:00:00 NaN2018-01-01 14:00:00 NaN2018-01-01 21:00:00 NaNFreq: 7H, dtype: float642018-01-01 00:00:00 12018-01-01 07:00:00 12018-01-01 14:00:00 12018-01-01 21:00:00 1Freq: 7H, dtype: int32Out[24]:2018-01-01 00:00:00 12018-01-01 07:00:00 22018-01-01 14:00:00 22018-01-01 21:00:00 2Freq: 7H, dtype: int32总结
重采样和降采样一般用在时间序列里面,合理的使用降低时间维度或者降低时间细粒度多可以成为好的特征。
以上这篇python中resample函数实现重采样和降采样代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
resample()resample()进行重采样。重采样(Resampling)指的是把时间序列的频度变为另一个频度的过程。把高频度的数据变为低频度叫做降采样
Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。降采样:高频数据到低频数据升采
Pandas提供了便捷的方式对时间序列进行重采样,根据时间粒度的变大或者变小分为降采样和升采样:降采样:时间粒度变大。例如,原来是按天统计的数据,现在变成按周统
Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。方法的格式是:DataFram
python日期的范围、频率、重采样以及频率转换pandas有一整套的标准时间序列频率以及用于重采样、频率推断、生成固定频率日期范围的工具。生成指定日期范围的范