python中resample函数实现重采样和降采样代码


Posted in Python onFebruary 25, 2020

函数原型

resample(self, rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention=‘start', kind=None, loffset=None, limit=None, base=0, on=None, level=None)

比较关键的是rule,closed,label下面会随着两个用法说明

降采样

对时间数据细粒度增大,可以把每天的数据聚合成一周,可以求和或者均值的方式进行聚合

下面给出列子

times=pd.date_range('20180101',periods=30)
ts=pd.Series(np.arange(1,31),index=times)
ts
2018-01-01   1
2018-01-02   2
2018-01-03   3
2018-01-04   4
2018-01-05   5
2018-01-06   6
2018-01-07   7
2018-01-08   8
2018-01-09   9
2018-01-10  10
2018-01-11  11
2018-01-12  12
2018-01-13  13
2018-01-14  14
2018-01-15  15
2018-01-16  16
2018-01-17  17
2018-01-18  18
2018-01-19  19
2018-01-20  20
2018-01-21  21
2018-01-22  22
2018-01-23  23
2018-01-24  24
2018-01-25  25
2018-01-26  26
2018-01-27  27
2018-01-28  28
2018-01-29  29
2018-01-30  30
Freq: D, dtype: int32
ts_7d=ts.resample('7D').sum()
ts_7d
2018-01-01   28
2018-01-08   77
2018-01-15  126
2018-01-22  175
2018-01-29   59
dtype: int32

我们看看上面代码,就是先给出一个1-30号的series,l然后聚合成左闭右开的5个区间[1,8),[8,15),[15,22),[22-29),[29-5(下个月)),每个区间的值就为单个区间值之和。由于29号往后只有29号和30号有值,所以只有两个值

下面我们看看label和closed的功能

ts_7d=ts.resample('7D',closed='right',label='left').sum()
ts_7d

Out[14]:
2017-12-25   1
2018-01-01   35
2018-01-08   84
2018-01-15  133
2018-01-22  182
2018-01-29   30

上面的代码,将closed改为了right,区间就变成了左开右闭,那么如果从区间还是(1,8],1就取不到,所以往前取,就是(25,1],(1,8],(8,15],(15,22],(22,29],(29,5]这6个区间

ts_7d=ts.resample('7D',closed='right',label='right').sum()
ts_7d

Out[15]:
2018-01-01   1
2018-01-08   35
2018-01-15   84
2018-01-22  133
2018-01-29  182
2018-02-05   30
dtype: int32

上面的代码就可以看出label=right就是指label等于右区间的值,如果label=left就是指label等于左区间的值

重采样

降低时间的细粒度,对于重采样,主要是涉及到值的填充。有下面的三种填充方法

不填充。那么对应无值的地方,用NaN代替。对应的方法是asfreq。

用前值填充。用前面的值填充无值的地方。对应的方法是ffill或者pad。

用后值填充。对应的方法是bfill,b代表back。

下面给出代码看一下

ts_7h_asfreq = ts.resample('7H').asfreq()
print(ts_7h_asfreq)

ts_7h_ffill = ts.resample('7H').ffill()
print(ts_7h_ffill)

ts_7h_bfill = ts.resample('7H').bfill()
ts_7h_bfill


2018-01-01 00:00:00  1.0
2018-01-01 07:00:00  NaN
2018-01-01 14:00:00  NaN
2018-01-01 21:00:00  NaN
Freq: 7H, dtype: float64
2018-01-01 00:00:00  1
2018-01-01 07:00:00  1
2018-01-01 14:00:00  1
2018-01-01 21:00:00  1
Freq: 7H, dtype: int32
Out[24]:
2018-01-01 00:00:00  1
2018-01-01 07:00:00  2
2018-01-01 14:00:00  2
2018-01-01 21:00:00  2
Freq: 7H, dtype: int32

总结

重采样和降采样一般用在时间序列里面,合理的使用降低时间维度或者降低时间细粒度多可以成为好的特征。

以上这篇python中resample函数实现重采样和降采样代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python3实现暴力穷举博客园密码
Jun 19 Python
python编写朴素贝叶斯用于文本分类
Dec 21 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
Python socket连接中的粘包、精确传输问题实例分析
Mar 24 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
Python __slots__的使用方法
Nov 15 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
使用tensorflow 实现反向传播求导
May 26 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 Python
python实现的分层随机抽样案例
Feb 25 #Python
Python可变对象与不可变对象原理解析
Feb 25 #Python
Python 使用 environs 库定义环境变量的方法
Feb 25 #Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 #Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 #Python
python numpy--数组的组合和分割实例
Feb 24 #Python
python梯度下降算法的实现
Feb 24 #Python
You might like
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
浅析php数据类型转换
2014/01/09 PHP
php中的观察者模式简单实例
2015/01/20 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
用客户端js实现带省略号的分页
2013/04/27 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
Python 解析XML文件
2009/04/15 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
简介Django中内置的一些中间件
2015/07/24 Python
解读python logging模块的使用方法
2018/04/17 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
python 修改本地网络配置的方法
2019/08/14 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
python map比for循环快在哪
2020/09/21 Python
印尼旅游网站:via
2017/11/12 全球购物
小学生班会演讲稿
2014/01/09 职场文书
母校寄语大全
2014/04/10 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
同志主要表现材料
2014/08/21 职场文书
大学生自荐书范文
2015/03/05 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android
mysql的数据压缩性能对比详情
2021/11/07 MySQL