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 流程控制实例代码
Sep 25 Python
python关键字and和or用法实例
May 28 Python
Python中的下划线详解
Jun 24 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
Python实现自定义读写分离代码实例
Nov 16 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Python执行时间的几种计算方法
Jul 31 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 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
PHP安全配置
2006/12/06 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
php面向对象值单例模式
2016/05/03 PHP
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
浅谈Python基础之I/O模型
2017/05/11 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python timeit模块的使用实践
2020/01/13 Python
django在开发中取消外键约束的实现
2020/05/20 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
用python实现一个简单的验证码
2020/12/09 Python
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
3.12植树节活动总结2014
2014/03/13 职场文书
学习经验交流会主持词
2014/04/01 职场文书
青安岗事迹材料
2014/05/14 职场文书
营销与策划专业求职信
2014/06/20 职场文书
大学生交通专业求职信
2014/09/01 职场文书
初中作文评语集锦
2014/12/25 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS