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对数组进行反转的方法
May 20 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
python实现n个数中选出m个数的方法
Nov 13 Python
Python中dict和set的用法讲解
Mar 28 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
对Django url的几种使用方式详解
Aug 06 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
利用jupyter网页版本进行python函数查询方式
Apr 14 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
Python集合的基础操作
Nov 01 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实现高效获取图片尺寸的方法
2014/12/12 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
13个PHP函数超实用
2015/10/21 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
javascript关于继承解析
2016/05/10 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
Python中return self的用法详解
2018/07/27 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
初中女生自我鉴定
2013/12/19 职场文书
保护环境建议书100字
2014/05/13 职场文书
青年志愿者活动方案
2014/08/17 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
公司内部升职自荐信
2015/03/27 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技