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采集博客中上传的QQ截图文件
Jul 18 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
Python性能分析工具Profile使用实例
Nov 19 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
python简单实现9宫格图片实例
Sep 03 Python
浅谈python中的多态
Jun 15 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 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实现html标签闭合检测与修复方法
2015/07/09 PHP
php生成验证码函数
2015/10/20 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
wordpress网站转移到本地运行测试的方法
2017/03/15 PHP
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
js实现随机点名程序
2020/09/17 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
应征英语教师求职信
2013/11/27 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
先进班集体事迹材料
2014/12/25 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
汽车销售员工作总结
2015/08/12 职场文书
化工厂员工工作总结
2015/10/15 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
使用springMVC所需要的pom配置
2021/09/15 Java/Android
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android
DQL数据查询语句使用示例
2022/12/24 MySQL