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实现监控windows服务并自动启动服务示例
Apr 17 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
Django import export实现数据库导入导出方式
Apr 03 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
详解非极大值抑制算法之Python实现
Jun 28 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 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 FTP类的详解
2013/06/13 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
Smarty变量用法详解
2016/05/11 PHP
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
js实现抽奖效果
2017/03/27 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
浅析vue-router原理
2018/10/19 Javascript
Python中用format函数格式化字符串的用法
2015/04/08 Python
多个应用共存的Django配置方法
2018/05/30 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Python基于百度云文字识别API
2018/12/13 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
教师节促销方案
2014/03/22 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
贷款委托书
2014/08/01 职场文书
骨干教师申报材料
2014/12/17 职场文书
论文致谢词范文
2015/05/14 职场文书
妇产科护理心得体会
2016/01/22 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL