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列表切片用法示例
Apr 19 Python
Flask数据库迁移简单介绍
Oct 24 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
Python实现端口检测的方法
Jul 24 Python
python清除字符串前后空格函数的方法
Oct 21 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
python opencv如何实现图片绘制
Jan 19 Python
python中sklearn的pipeline模块实例详解
May 21 Python
Python如何读写二进制数组数据
Aug 01 Python
python中uuid模块实例浅析
Dec 29 Python
如何在vscode中安装python库的方法步骤
Jan 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
jQuery 使用个人心得
2009/02/26 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
OpenCV 边缘检测
2019/07/10 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
旷课检讨书3000字
2014/02/04 职场文书
《九寨沟》教学反思
2014/04/08 职场文书
法定代表人免职证明
2015/06/24 职场文书
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL