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学习笔记(一)(基础入门之环境搭建)
Jun 05 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
python ddt数据驱动最简实例代码
Feb 22 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
Python转换时间的图文方法
Jul 01 Python
详解Django定时任务模块设计与实践
Jul 24 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
flask开启多线程的具体方法
Aug 02 Python
利用Python+OpenCV三步去除水印
May 28 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 VS ASP
2006/10/09 PHP
php MYSQL 数据备份类
2009/06/19 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
数组越界问题
2015/10/21 面试题
安全生产实施方案
2014/02/23 职场文书
军训口号
2014/06/13 职场文书
私人委托书格式
2014/09/10 职场文书
诉讼授权委托书
2014/10/15 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
本溪水洞导游词
2015/02/11 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
再谈python_tkinter弹出对话框创建
2022/03/20 Python