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 multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
详解Python中的type()方法的使用
May 21 Python
Win7 64位下python3.6.5安装配置图文教程
Oct 27 Python
python购物车程序简单代码
Apr 18 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
对Xpath 获取子标签下所有文本的方法详解
Jan 02 Python
Python判断telnet通不通的实例
Jan 26 Python
详解Python3 对象组合zip()和回退方式*zip
May 15 Python
python调用接口的4种方式代码实例
Nov 19 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 Python
用python写一个带有gui界面的密码生成器
Nov 06 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/07/29 PHP
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
js css样式操作代码(批量操作)
2009/10/09 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
详解vue组件基础
2018/05/04 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
详解Python中列表和元祖的使用方法
2015/04/25 Python
python编程开发之日期操作实例分析
2015/11/13 Python
Python获取linux主机ip的简单实现方法
2016/04/18 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
详解pandas赋值失败问题解决
2020/11/29 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
vue路由实现登录拦截
2021/03/24 Vue.js
编辑个人求职信范文
2013/09/21 职场文书
大学生村官演讲稿
2014/04/25 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
2014年超市工作总结
2014/11/19 职场文书
清明节随笔
2015/08/15 职场文书
redis缓存存储Session原理机制
2021/11/20 Redis
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏