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常用列表数据结构小结
Aug 06 Python
使用grappelli为django admin后台添加模板
Nov 18 Python
Python爬虫模拟登录带验证码网站
Jan 22 Python
python中解析json格式文件的方法示例
May 03 Python
Python 实现使用dict 创建二维数据、DataFrame
Apr 13 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
python判断自身是否正在运行的方法
Aug 08 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
python程序需要编译吗
Jun 19 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 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
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
JavaScript获取页面元素的常用方法详解
2019/09/28 Javascript
python中反射用法实例
2015/03/27 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
python版大富翁源代码分享
2018/11/19 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
学生检讨书范文
2014/10/30 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript