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中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
python中返回矩阵的行列方法
Apr 04 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
Python File(文件) 方法整理
Feb 18 Python
python实现滑雪者小游戏
Feb 22 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
python 下载文件的多种方法汇总
Nov 17 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 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 设计模式之 工厂模式
2008/12/19 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python实现多进程的四种方式
2019/02/22 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
python 元组的使用方法
2020/06/09 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
2014年女职工工作总结
2014/11/27 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
营运督导岗位职责
2015/04/10 职场文书
服装店员工管理制度
2015/08/07 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
68句权威创业名言
2019/08/26 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS