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 相关文章推荐
在Python的Django框架中加载模版的方法
Jul 16 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Python实现屏幕截图的两种方式
Feb 05 Python
pandas DataFrame实现几列数据合并成为新的一列方法
Jun 08 Python
python flask解析json数据不完整的解决方法
May 26 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
Python hashlib模块加密过程解析
Nov 05 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
python 获取字典键值对的实现
Nov 12 Python
python 简单的调用有道翻译
Nov 25 Python
pymongo insert_many 批量插入的实例
Dec 05 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
PHP也可以?成Shell Script
2006/10/09 PHP
打造计数器DIY三步曲(上)
2006/10/09 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
理解Javascript闭包
2013/11/01 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
python中format()函数的简单使用教程
2018/03/14 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
对pandas中Series的map函数详解
2018/07/25 Python
django 信号调度机制详解
2019/07/19 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
Python如何实现的二分查找算法
2020/05/27 Python
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
儿科主治医生个人求职信
2013/09/23 职场文书
临床医学专业个人的自我评价
2013/09/27 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
同学聚会通知短信
2015/04/20 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL