python中resample函数实现重采样和降采样代码
作者:sorrythanku 发布时间:2022-10-24 05:49:23
函数原型
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
总结
重采样和降采样一般用在时间序列里面,合理的使用降低时间维度或者降低时间细粒度多可以成为好的特征。
来源:https://blog.csdn.net/starmoth/article/details/89212122
猜你喜欢
- 1.画最简单的直线图代码如下:import numpy as np import matplotlib.pyplot as plt x=[0
- 需求:查询出满足3人及3案有关系的集合# -*- coding: utf-8 -*-from py2neo import Graphimpo
- 在使用Jupyter notebook时有这么一句代码start_frame = imread(“OwnCollection\vehicle
- 常用功能 mean(data)mean(data)用于求给定序列或者迭代器的算术平均数。import statisticsexample_l
- 作者: wyh草样出处:https://www.cnblogs.com/wyh0923/p/14084898.html什么是文件文件是系统存
- 一、 腐蚀与膨胀1.1 腐蚀操作import cv2import numpy as npimg = cv2.imread('Data
- 大多的MySQL都是装在Linux上的,而我们的本机上一般都会装MySQL-Front.那如何用MySQL-Front连接远端Linux系统
- Jira提供了完善的RESTful API,如果不想直接请求API接口可以使用Python的Jira库来操作JiraJira Python文
- 做一个项目用到Ajax,开始觉得挺好,后来发现一个问题,例如删除一项,恢复之后就不能再接着删除,必须要等一段时间,后来知道是IE缓存的问题。
- 有的同学会说,可以使用源代码搜索的办法。的确,对于一个相对简单的页面,这个方法时常奏效。但是,对于构成相对复杂的页面(比如页面嵌入很多脚本文
- 阅读目录前言加密算法分类Python加密库DES加密AES加密RSA加密前言据记载,公元前400年,古希腊人发明了置换密码。1881年世界上
- 所以特意写了这个配置文档,相信按照以下步骤你一定会成功的.错误的地方也希望各位指正. 本例是在wiondws XP下 php5.2.1(zi
- eval 跟json.loads 是不一样的函数,是有实现不一样功能的地方,但是在某些地方它们两个函数的功能是一样的,在这个时候如果对执行效
- 注意转义字符\的使用\\,\",\$ 注意使用8进制或16进制字符表示 \xf6 echo "H\xf6me"
- 最近在使用爬虫爬取数据时,经常会返回403代码,大致意思是该IP访问过于频繁,被限制访问。限制IP访问网站最常用的反爬手段了,其实破解也很容
- 如何做一个密码“生成器”?randompassword.asp<% Dim i, intNum,&nbs
- 对于什么是好设计,一万个人那里至少有一万零一个答案。每个人都有自己的答案,有的人还不止一个答案。老师说,一定要在设计里灌注自己的思想,有了自
- 前言虽然标题是全站,但目前只做了等级 top 100 直播间的全天弹幕收集。弹幕收集系统基于之前的B 站直播弹幕姬 Python 版修改而来
- PDOStatement::bindParamPDOStatement::bindParam — 绑定一个参数到指定的变量名(PHP 5 &
- 1、需求分析首先我们打开地图搜索“鸿星尔克”:复制该链接到浏览器,发现这是一个json格式的数据集。