Pandas中resample方法详解


Posted in Python onJuly 02, 2019

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

方法的格式是:

DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention='start',kind=None, loffset=None, limit=None, base=0)

参数详解是:

参数 说明
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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程学习笔记(一)
Jun 09 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
Python读取图片为16进制表示简单代码
Jan 19 Python
tensorflow实现softma识别MNIST
Mar 12 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
Python自动化操作实现图例绘制
Jul 09 Python
Python中的tkinter库简单案例详解
Jan 22 Python
Python何时应该使用Lambda函数
Jul 02 #Python
Python Pandas分组聚合的实现方法
Jul 02 #Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 #Python
python flask框架实现重定向功能示例
Jul 02 #Python
python实现串口自动触发工作的示例
Jul 02 #Python
python常用函数与用法示例
Jul 02 #Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 #Python
You might like
融入意大利的咖啡文化
2021/03/03 咖啡文化
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
常用的JS验证和函数汇总
2014/12/23 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
简单介绍Python中的floor()方法
2015/05/15 Python
Python读写ini文件的方法
2015/05/28 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
干部培训自我鉴定
2014/01/22 职场文书
航班延误投诉信
2015/07/02 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
django上传文件的三种方式
2021/04/29 Python