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 相关文章推荐
浅述python2与python3的简单区别
Sep 19 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 Python
python调用win32接口进行截图的示例
Nov 11 Python
Selenium 配置启动项参数的方法
Dec 04 Python
next在python中返回迭代器的实例方法
Dec 15 Python
python 模拟登录B站的示例代码
Dec 15 Python
Python自动化之批量处理工作簿和工作表
Jun 03 Python
python基于turtle绘制几何图形
Jun 15 Python
Python基础之变量的相关知识总结
Jun 23 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中基本符号及使用方法
2010/03/23 PHP
PHP可变函数的使用详解
2013/06/14 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
浅谈php的优缺点
2015/07/14 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
jQuery - css() 方法示例详解
2014/01/16 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
python编程开发之日期操作实例分析
2015/11/13 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
python构建深度神经网络(续)
2018/03/10 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
普通简短的个人自我评价
2014/02/15 职场文书
欢度春节标语
2014/07/01 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
小人国观后感
2015/06/11 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
全新239军机修复记
2022/04/05 无线电
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库