pandas的resample重采样的使用


Posted in Python onApril 24, 2020

Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。

降采样:高频数据到低频数据

升采样:低频数据到高频数据

主要函数:resample()(pandas对象都会有这个方法)

resample方法的参数

参数 说明
freq 表示重采样频率,例如‘M'、‘5min',Second(15)
how='mean' 用于产生聚合值的函数名或数组函数,例如‘mean'、‘ohlc'、np.max等,默认是‘mean',其他常用的值由:‘first'、‘last'、‘median'、‘max'、‘min'
axis=0 默认是纵轴,横轴设置axis=1
fill_method = None 升采样时如何插值,比如‘ffill'、‘bfill'等
closed = ‘right' 在降采样时,各时间段的哪一段是闭合的,‘right'或‘left',默认‘right'
label= ‘right' 在降采样时,如何设置聚合值的标签,例如,9:30-9:35会被标记成9:30还是9:35,默认9:35
loffset = None 面元标签的时间校正值,比如‘-1s'或Second(-1)用于将聚合标签调早1秒
limit=None 在向前或向后填充时,允许填充的最大时期数
kind = None 聚合到时期(‘period')或时间戳(‘timestamp'),默认聚合到时间序列的索引类型
convention = None 当重采样时期时,将低频率转换到高频率所采用的约定(start或end)。默认‘end'

首先创建一个Series,采样频率为一分钟。 

>>> index = pd.date_range('1/1/2000', periods=9, freq='T')
>>> series = pd.Series(range(9), index=index)
>>> series
2000-01-01 00:00:00  0
2000-01-01 00:01:00  1
2000-01-01 00:02:00  2
2000-01-01 00:03:00  3
2000-01-01 00:04:00  4
2000-01-01 00:05:00  5
2000-01-01 00:06:00  6
2000-01-01 00:07:00  7
2000-01-01 00:08:00  8
Freq: T, dtype: int64

降低采样频率为三分钟 

>>> series.resample('3T').sum()
2000-01-01 00:00:00   3
2000-01-01 00:03:00  12
2000-01-01 00:06:00  21
Freq: 3T, dtype: int64

降低采样频率为三分钟,但是每个标签使用right来代替left。请注意,bucket中值的用作标签。

>>> series.resample('3T', label='right').sum()
2000-01-01 00:03:00   3
2000-01-01 00:06:00  12
2000-01-01 00:09:00  21
Freq: 3T, dtype: int64

降低采样频率为三分钟,但是关闭right区间。 

>>> series.resample('3T', label='right', closed='right').sum()
2000-01-01 00:00:00   0
2000-01-01 00:03:00   6
2000-01-01 00:06:00  15
2000-01-01 00:09:00  15
Freq: 3T, dtype: int64

增加采样频率到30秒

>>> series.resample('30S').asfreq()[0:5] #select first 5 rows
2000-01-01 00:00:00   0
2000-01-01 00:00:30  NaN
2000-01-01 00:01:00   1
2000-01-01 00:01:30  NaN
2000-01-01 00:02:00   2
Freq: 30S, dtype: float64

增加采样频率到30S,使用pad方法填充nan值。

>>> series.resample('30S').pad()[0:5]
2000-01-01 00:00:00  0
2000-01-01 00:00:30  0
2000-01-01 00:01:00  1
2000-01-01 00:01:30  1
2000-01-01 00:02:00  2
Freq: 30S, dtype: int64

增加采样频率到30S,使用bfill方法填充nan值。 

>>> series.resample('30S').bfill()[0:5]
2000-01-01 00:00:00  0
2000-01-01 00:00:30  1
2000-01-01 00:01:00  1
2000-01-01 00:01:30  2
2000-01-01 00:02:00  2
Freq: 30S, dtype: int64

通过apply运行一个自定义函数 

>>> def custom_resampler(array_like):
...   return np.sum(array_like)+5
>>> series.resample('3T').apply(custom_resampler)
2000-01-01 00:00:00   8
2000-01-01 00:03:00  17
2000-01-01 00:06:00  26
Freq: 3T, dtype: int64

到此这篇关于pandas的resample重采样的使用的文章就介绍到这了,更多相关pandas resample重采样内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的设计模式编程入门指南
Apr 02 Python
python执行get提交的方法
Apr 29 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
python http接口自动化脚本详解
Jan 02 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
Django缓存系统实现过程解析
Aug 02 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
pytorch训练神经网络爆内存的解决方案
May 22 Python
python实现在内存中读写str和二进制数据代码
Apr 24 #Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 #Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 #Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 #Python
python 读取二进制 显示图片案例
Apr 24 #Python
150行python代码实现贪吃蛇游戏
Apr 24 #Python
用 Python 制作地球仪的方法
Apr 24 #Python
You might like
PHP入门学习笔记之一
2010/10/12 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
浅谈javascript中new操作符的原理
2016/06/07 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python读取word文本操作详解
2018/01/22 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
基于python调用psutil模块过程解析
2019/12/20 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
计算机应届毕业生自荐信范文
2014/02/23 职场文书
百年校庆节目主持词
2014/03/27 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
导师对论文的学术评语
2015/01/04 职场文书
golang正则之命名分组方式
2021/04/25 Golang
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang