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获取文件扩展名的方法
Jul 06 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
Python Series从0开始索引的方法
Nov 06 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
pandas 如何分割字符的实现方法
Jul 29 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 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传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
django模板语法学习之include示例详解
2017/12/17 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
企划经理的岗位职责
2013/11/17 职场文书
函授毕业生的自我鉴定
2013/11/26 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android