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中threading模块的几个常用方法
Jun 18 Python
Python中max函数用法实例分析
Jul 17 Python
详解Python网络爬虫功能的基本写法
Jan 28 Python
利用Python抓取行政区划码的方法
Nov 28 Python
Python优先队列实现方法示例
Sep 21 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
在python中做正态性检验示例
Dec 09 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
Django REST Swagger实现指定api参数
Jul 07 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使用curl模拟登录后采集页面的例子
2013/11/04 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
RequireJs的使用详解
2017/02/19 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
Python解析json文件相关知识学习
2016/03/01 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
怎样自定义一个异常类
2016/09/27 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
护理实习自我鉴定
2013/12/14 职场文书
优秀的自荐信要注意哪些
2014/01/03 职场文书
中级会计职业生涯规划范文
2014/01/16 职场文书
花店创业计划书范文
2014/02/07 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
《颐和园》教学反思
2016/02/19 职场文书
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis