pandas的resample重采样的使用

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重采样内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Pandas —— resample()重采样和asfreq()频度转换方式

    resample() resample()进行重采样. 重采样(Resampling)指的是把时间序列的频度变为另一个频度的过程.把高频度的数据变为低频度叫做降采样(downsampling),把低频度变为高频度叫做增采样(upsampling). 降采样 考虑因素: 各区间哪边是闭合的(参数:closed) 如何标记各聚合面元,用区间的开头还是末尾(参数:label) In [232]: ts_index = pd.date_range('2018-08-03',periods =12,fre

  • Pandas时间序列重采样(resample)方法中closed、label的作用详解

    Pandas提供了便捷的方式对时间序列进行重采样,根据时间粒度的变大或者变小分为降采样和升采样: 降采样:时间粒度变大.例如,原来是按天统计的数据,现在变成按周统计.降采样会涉及到数据的聚合,比如天数据变成周数据,那么就得对一周的7天数据聚合,聚合的方式可以是求和,求均值等等. 升采样:时间粒度变小.例如,原来是按周统计的数据,现在变成按天统计.升采样会涉及到数据的填充,根据填充的方法不同填充的数据也就不同. 下面涉及的例子,都需要导入numpy和pandas(如下),并且对于降采样数据的聚合做

  • pandas的resample重采样的使用

    Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法. 降采样:高频数据到低频数据 升采样:低频数据到高频数据 主要函数:resample()(pandas对象都会有这个方法) resample方法的参数 参数 说明 freq 表示重采样频率,例如'M'.'5min',Second(15) how='mean' 用于产生聚合值的函数名或数组函数,例如'mean'.'ohlc'.np.max等,默认是'mean',其他常用

  • Pandas中resample方法详解

    Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法. 方法的格式是: DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention='start',kind=None, loffset=None, limit=None, base=0) 参数详解是: 参数 说明 freq 表示重采样频率,

  • python+pandas生成指定日期和重采样的方法

    python 日期的范围.频率.重采样以及频率转换 pandas有一整套的标准时间序列频率以及用于重采样.频率推断.生成固定频率日期范围的工具. 生成指定日期范围的范围 pandas.date_range()用于生成指定长度的DatatimeIndex: 1)默认情况下,date_range会按着时间间隔为天的方式生成从给定开始到结束时间的时间戳数组: 2)如果只指定开始或结束时间,还需要periods标定时间长度. import pandas as pd pd.date_range('2017

  • Python量化交易实战之使用Resample函数转换“日K”数据

    使用Resample函数转换时间序列 一.什么是resample函数? 它是Python数据分析库Pandas的方法函数. 它主要用于转换时间序列的频次.可以做一些统计汇总的工作. 什么叫转换时间序列的频次呢? 比如说股票的日k和周k, 假设我只能获取到股票日K的数据,比如说11月1号到11月5号,那怎么样将它转换为以周为单位的K线呢? 日期 周期 开盘价 收盘价 最高价 最低价 11月1号 周一 1.11 1.11 1.11 1.12 11月2号 周二 1.12 1.12 1.11 1.12

  • Python对数据进行插值和下采样的方法

    使用Python进行插值非常方便,可以直接使用scipy中的interpolate import numpy as np x1 = np.linspace(1, 4096, 1024) x_new = np.linspace(1, 4096, 4096) from scipy import interpolate tck = interpolate.splrep(x1, data) y_bspline = interpolate.splev(x_new, tck) 其中y_bspline就是从1

  • Python Pillow(PIL)库的用法详解

    Pillow库是一个Python的第三方库. 在Python2中,PIL(Python Imaging Library)是一个非常好用的图像处理库,但PIL不支持Python3,所以有人(Alex Clark和Contributors)提供了Pillow,可以在Python3中使用. 官方文档路径:https://pillow.readthedocs.io/en/latest/ 一.安装Pillow pip install pillow Pillow库安装成功后,导包时要用PIL来导入,而不能用

  • Pandas时间序列:重采样及频率转换方式

    如下所示: import pandas as pd import numpy as np 一.介绍 重采样(resampling)指的是将时间序列从一个频率转换到另一个频率的处理过程: 将高频率(间隔短)数据聚合到低频率(间隔长)称为降采样(downsampling): 将低频率数据转换到高频率则称为升采样(unsampling): 有些采样即不是降采样也不是升采样,例如将W-WED(每周三)转换为W-FRI: 二.resample方法–转换频率的主力函数 rng = pd.date_range

  • Pandas 时间序列分析中的resample函数

    Pandas 中的resample函数用于各种频率的转换工作. resample的参数如下: 参数 描述 freq 转换频率 axis=0 重采样的轴 closed=None 在降采样中,设置各时间段哪段是闭合的 label=None 在降采样中,如何设置聚合值的标签 下面着重介绍: closed和label参数label就是8:00 -8:30会被标记成8:00还是8:30closed就是哪段是闭区间 w=pd.date_range(start = '2021/2/1', periods=10

随机推荐