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两种遍历字典(dict)的方法比较
May 29 Python
Python中关于使用模块的基础知识
May 24 Python
Python中的urllib模块使用详解
Jul 07 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
OpenCV图像颜色反转算法详解
May 13 Python
Python将string转换到float的实例方法
Jul 29 Python
浅析Python语言自带的数据结构有哪些
Aug 27 Python
python-numpy-指数分布实例详解
Dec 07 Python
python文件及目录操作代码汇总
Jul 08 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
Jan 08 Python
python中使用asyncio实现异步IO实例分析
Feb 26 Python
Python编程super应用场景及示例解析
Oct 05 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 strncasecmp字符串比较的小技巧
2011/01/04 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php商品对比功能代码分享
2015/09/24 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
在Django的上下文中设置变量的方法
2015/07/20 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
浅述python中深浅拷贝原理
2018/09/18 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
Python docx库用法示例分析
2019/02/16 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
HTML的form表单和django的form表单
2019/07/25 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
python GUI计算器的实现
2020/10/09 Python
eBay美国官网:eBay.com
2020/10/24 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
思想品德自我鉴定
2013/10/12 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript