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 相关文章推荐
Python3使用requests发闪存的方法
May 11 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
简单了解django缓存方式及配置
Jul 19 Python
python实现双色球随机选号
Jan 01 Python
详解Python中namedtuple的使用
Apr 27 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 Python
python 实现有道翻译功能
Feb 26 Python
如何利用pygame实现打飞机小游戏
May 30 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 20 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
WINXP下apache+php4+mysql
2006/11/25 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
php实现微信发红包
2015/12/05 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
js 方法实现返回多个数据的代码
2009/04/30 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
python的json包位置及用法总结
2020/06/21 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
python与js主要区别点总结
2020/09/13 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
建议书的格式
2014/05/12 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
教师师德工作总结2015
2015/07/22 职场文书
入党申请书格式
2019/06/20 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python