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编写网页爬虫脚本并实现APScheduler调度
Jul 28 Python
分享一下如何编写高效且优雅的 Python 代码
Sep 07 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
详解python使用turtle库来画一朵花
Mar 21 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
python:动态路由的Flask程序代码
Nov 22 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 Python
python读取mat文件生成h5文件的实现
Jul 15 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来自动调用不同服务器上的flash
2006/10/09 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
Django框架中方法的访问和查找
2015/07/15 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
校园摄影活动策划方案
2014/02/05 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
重阳节慰问信
2015/02/15 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript