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列表去重的二种方法
Feb 14 Python
实例讲解Python中的私有属性
Aug 21 Python
在Django的视图(View)外使用Session的方法
Jul 23 Python
python pandas修改列属性的方法详解
Jun 09 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
python+opencv实现霍夫变换检测直线
Oct 23 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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语法(3)
2006/10/09 PHP
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Web服务器框架 Tornado简介
2014/07/16 Python
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
django中send_mail功能实现详解
2018/02/06 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
管事部库房保管员岗位职责
2014/02/21 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
上课迟到检讨书
2015/05/06 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
会议主持人开场白台词
2015/05/28 职场文书
简爱读书笔记
2015/06/26 职场文书
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android