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 相关文章推荐
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
浅谈pycharm使用及设置方法
Sep 09 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
python轮询机制控制led实例
May 03 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 Python
什么是python的id函数
Jun 11 Python
Python 爬虫的原理
Jul 30 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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/10/26 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
python实现的一个火车票转让信息采集器
2014/07/09 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
基于Python的接口测试框架实例
2016/11/04 Python
python字符串的方法与操作大全
2018/01/30 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
软件测试题目
2013/02/27 面试题
如何在Shell脚本中使用函数
2015/09/06 面试题
应届专科生个人的自我评价
2014/01/05 职场文书
个人查摆剖析材料
2014/02/04 职场文书
中学生评语大全
2014/04/18 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
医院见习报告范文
2014/11/03 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
律师催款函范文
2015/06/24 职场文书