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中字符编码简介、方法及使用建议
Jan 08 Python
python输出当前目录下index.html文件路径的方法
Apr 28 Python
浅谈Python的文件类型
May 30 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
python MySQLdb使用教程详解
Mar 20 Python
利用python实现微信头像加红色数字功能
Mar 26 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
Python一个简单的通信程序(客户端 服务器)
Mar 06 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
Python3.10的一些新特性原理分析
Sep 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
php 文件状态缓存带来的问题
2008/12/14 PHP
PHP 文件上传功能实现代码
2009/06/24 PHP
php验证码生成器
2017/05/24 PHP
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Python序列化pickle模块使用详解
2020/03/05 Python
python输入中文的实例方法
2020/09/14 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
教室标语大全
2014/06/21 职场文书
护士年终考核评语
2014/12/31 职场文书
素质教育培训心得体会
2016/01/19 职场文书
Python语言规范之Pylint的详细用法
2021/06/24 Python
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技