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探索之Metaclass初步了解
Oct 28 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
python图书管理系统
Apr 05 Python
详解Python中where()函数的用法
Mar 27 Python
Python中max函数用于二维列表的实例
Apr 03 Python
python word转pdf代码实例
Aug 16 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
Python实现给PDF添加水印的方法
Jan 25 Python
详解python3 GUI刷屏器(附源码)
Feb 18 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
python实现简单的名片管理系统
Apr 26 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
mysql 搜索之简单应用
2007/04/27 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python中类型检查的详细介绍
2017/02/13 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
pytorch 修改预训练model实例
2020/01/18 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
门卫班长岗位职责
2013/12/15 职场文书
出国签证在职证明
2014/01/16 职场文书
高效课堂标语
2014/06/26 职场文书
小学生交通安全寄语
2015/02/27 职场文书
元宵节晚会主持词
2015/07/01 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书