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获得两个数组交集、并集、差集的方法
Mar 27 Python
python显示生日是星期几的方法
May 27 Python
Python切换pip安装源的方法详解
Nov 18 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
pytorch打印网络结构的实例
Aug 19 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
python爬虫框架feapde的使用简介
Apr 20 Python
python图像处理 PIL Image操作实例
Apr 09 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 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中的HashTable结构详解
2013/06/13 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
python 远程统计文件代码分享
2015/05/14 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
详解Python自建logging模块
2018/01/29 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
wxPython的安装与使用教程
2018/08/31 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
经济学博士求职自荐信范文
2013/11/23 职场文书
质量保证书范本
2014/04/29 职场文书
营销团队口号
2014/06/06 职场文书
物业消防安全责任书
2014/07/23 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
sql server 累计求和实现代码
2022/02/28 SQL Server