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 23 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
python获取代码运行时间的实例代码
Jun 11 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
python协程之动态添加任务的方法
Feb 19 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
python如何删除列为空的行
Jul 17 Python
使用Python开发冰球小游戏
Apr 30 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
终于听上了直流胆调频
2021/03/02 无线电
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
PHP音乐采集(部分代码)
2007/02/14 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
PHP Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
DWR Ext 加载数据
2009/03/22 Javascript
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
用Python编写简单的定时器的方法
2015/05/02 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
网络事业创业计划书范文
2014/01/09 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
Python实现自动玩连连看的脚本分享
2022/04/04 Python