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中标准库OS的常用方法总结大全
Jul 19 Python
Python中turtle作图示例
Nov 15 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
python爬取盘搜的有效链接实现代码
Jul 20 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
django中嵌套的try-except实例
May 21 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
学会Python数据可视化必须尝试这7个库
Jun 16 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
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
PHP面向对象概念
2011/11/06 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP中each与list用法分析
2016/01/08 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
微信小程序画布圆形进度条显示效果
2020/11/17 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
python可视化实现KNN算法
2019/10/16 Python
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
几个常见的消息中间件(MOM)
2014/01/08 面试题
社会保险接收函
2014/01/12 职场文书
和睦家庭事迹
2014/05/14 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
python 实现的截屏工具
2021/05/08 Python
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
win10更新失败无限重启解决方法
2022/04/19 数码科技