python中resample函数实现重采样和降采样代码


Posted in Python onFebruary 25, 2020

函数原型

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函数实现重采样和降采样代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python version 2.7 required, which was not found in the registry
Aug 26 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
Python 处理图片像素点的实例
Jan 08 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
python字符串替换re.sub()方法解析
Sep 18 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
python全局变量引用与修改过程解析
Jan 07 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
python爬虫爬取某网站视频的示例代码
Feb 20 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 Python
python实现简单聊天功能
Jul 07 Python
python实现的分层随机抽样案例
Feb 25 #Python
Python可变对象与不可变对象原理解析
Feb 25 #Python
Python 使用 environs 库定义环境变量的方法
Feb 25 #Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 #Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 #Python
python numpy--数组的组合和分割实例
Feb 24 #Python
python梯度下降算法的实现
Feb 24 #Python
You might like
PHP中的正规表达式(一)
2006/10/09 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
php二维数组排序详解
2013/11/06 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
vue 实现特定条件下绑定事件
2019/11/09 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
接口可以包含哪些成员
2012/09/30 面试题
银行进社区活动总结
2014/07/07 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
大学生英文求职信范文
2015/03/19 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
小学运动会入场口号
2015/12/24 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电