函数原型
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) ts 2018-01-01 1 2018-01-02 2 2018-01-03 3 2018-01-04 4 2018-01-05 5 2018-01-06 6 2018-01-07 7 2018-01-08 8 2018-01-09 9 2018-01-10 10 2018-01-11 11 2018-01-12 12 2018-01-13 13 2018-01-14 14 2018-01-15 15 2018-01-16 16 2018-01-17 17 2018-01-18 18 2018-01-19 19 2018-01-20 20 2018-01-21 21 2018-01-22 22 2018-01-23 23 2018-01-24 24 2018-01-25 25 2018-01-26 26 2018-01-27 27 2018-01-28 28 2018-01-29 29 2018-01-30 30 Freq: D, dtype: int32 ts_7d=ts.resample('7D').sum() ts_7d 2018-01-01 28 2018-01-08 77 2018-01-15 126 2018-01-22 175 2018-01-29 59 dtype: 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_7d Out[14]: 2017-12-25 1 2018-01-01 35 2018-01-08 84 2018-01-15 133 2018-01-22 182 2018-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_7d Out[15]: 2018-01-01 1 2018-01-08 35 2018-01-15 84 2018-01-22 133 2018-01-29 182 2018-02-05 30 dtype: 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_bfill 2018-01-01 00:00:00 1.0 2018-01-01 07:00:00 NaN 2018-01-01 14:00:00 NaN 2018-01-01 21:00:00 NaN Freq: 7H, dtype: float64 2018-01-01 00:00:00 1 2018-01-01 07:00:00 1 2018-01-01 14:00:00 1 2018-01-01 21:00:00 1 Freq: 7H, dtype: int32 Out[24]: 2018-01-01 00:00:00 1 2018-01-01 07:00:00 2 2018-01-01 14:00:00 2 2018-01-01 21:00:00 2 Freq: 7H, dtype: int32
总结
重采样和降采样一般用在时间序列里面,合理的使用降低时间维度或者降低时间细粒度多可以成为好的特征。
以上这篇python中resample函数实现重采样和降采样代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。