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的Flask框架中@app.route的用法教程
Mar 31 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
Python绘制3D图形
May 03 Python
python中pika模块问题的深入探究
Oct 13 Python
python 调用钉钉机器人的方法
Feb 20 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
Python bisect模块原理及常见实例
Jun 17 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 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
无线电广播的开始
2002/01/30 无线电
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
JQuery筛选器全系列介绍
2013/08/27 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python re模块介绍
2014/11/30 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
详解Python中where()函数的用法
2018/03/27 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
实习自荐信
2013/10/13 职场文书
酒店员工检讨书
2014/02/18 职场文书
建筑工地质量标语
2014/06/12 职场文书
另类冲刺标语
2014/06/24 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
2014年学生资助工作总结
2014/12/18 职场文书