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冒泡排序简单实现方法
Jul 09 Python
Python 结巴分词实现关键词抽取分析
Oct 21 Python
python语言中with as的用法使用详解
Feb 23 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
Python上下文管理器全实例详解
Nov 12 Python
Python基于requests库爬取网站信息
Mar 02 Python
Python基于pandas爬取网页表格数据
May 11 Python
keras多显卡训练方式
Jun 10 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 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 Session变量不能传送到下一页的解决方法
2009/11/27 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
Yii分页用法实例详解
2014/12/04 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
ext 代码生成器
2009/08/07 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
js中bool值的转换及“&&”、“||”、 “!!”详解
2017/12/21 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python ZipFile模块详解
2013/11/01 Python
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
python logging日志模块的详解
2017/10/29 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
python中uuid模块实例浅析
2020/12/29 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
应届生学校辅导员求职信
2013/11/07 职场文书
品质主管的岗位职责
2013/12/04 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
大二学年个人总结
2015/03/03 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
MySQL GTID复制的具体使用
2022/05/20 MySQL