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 translator使用实例
Sep 06 Python
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
使用Python的Supervisor进行进程监控以及自动启动
May 29 Python
对命令行模式与python交互模式介绍
May 12 Python
Python常见内置高效率函数用法示例
Jul 31 Python
pandas 时间格式转换的实现
Jul 06 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
用Python实现校园通知更新提醒功能
Nov 23 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
Python定义函数实现累计求和操作
May 03 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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
再次研究下cache_lite
2007/02/14 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python实现提取文章摘要的方法
2015/04/21 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
Python实现图片拼接的代码
2018/07/02 Python
浅谈python出错时traceback的解读
2020/07/15 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
计算机应用毕业生自荐信
2013/10/23 职场文书
农村葬礼主持词
2014/03/31 职场文书
个人承诺书格式
2014/06/03 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android