pandas的resample重采样的使用


Posted in Python onApril 24, 2020

Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。

降采样:高频数据到低频数据

升采样:低频数据到高频数据

主要函数:resample()(pandas对象都会有这个方法)

resample方法的参数

参数 说明
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

到此这篇关于pandas的resample重采样的使用的文章就介绍到这了,更多相关pandas resample重采样内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python修改注册表终止360进程实例
Oct 13 Python
Python实现单词拼写检查
Apr 25 Python
Python中的下划线详解
Jun 24 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
Python字符编码判断方法分析
Jul 01 Python
python实现斐波那契数列的方法示例
Jan 12 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
Python读写文件基础知识点
Jun 10 Python
Django中密码的加密、验密、解密操作
Dec 19 Python
jupyter notebook中美观显示矩阵实例
Apr 17 Python
如何利用python发送邮件
Sep 26 Python
python实现在内存中读写str和二进制数据代码
Apr 24 #Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 #Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 #Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 #Python
python 读取二进制 显示图片案例
Apr 24 #Python
150行python代码实现贪吃蛇游戏
Apr 24 #Python
用 Python 制作地球仪的方法
Apr 24 #Python
You might like
用PHP调用Oracle存储过程
2006/10/09 PHP
一个PHP的String类代码
2010/04/20 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
用javascript实现自定义标签
2007/05/08 Javascript
JSON 学习之完全手册 图文
2007/05/29 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
深入理解vue Render函数
2017/07/19 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
Python设置默认编码为utf8的方法
2016/07/01 Python
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
请解释virtual关键字的含义
2015/06/17 面试题
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
党员倡议书
2015/01/19 职场文书
道歉信范文
2015/05/12 职场文书
学校工会工作总结2015
2015/05/19 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
JavaScript继承的三种方法实例
2021/05/12 Javascript
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers