首页 > 网站 > 帮助中心 > 正文

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

2024-07-09 22:42:52
字体:
来源:转载
供稿:网友

如下所示:

import pandas as pdimport numpy as np

一、介绍

重采样(resampling)指的是将时间序列从一个频率转换到另一个频率的处理过程;

将高频率(间隔短)数据聚合到低频率(间隔长)称为降采样(downsampling);

将低频率数据转换到高频率则称为升采样(unsampling);

有些采样即不是降采样也不是升采样,例如将W-WED(每周三)转换为W-FRI;

二、resample方法转换频率的主力函数

rng = pd.date_range('1/1/2000',periods=100,freq='D')ts = pd.Series(np.random.randn(len(rng)),index=rng)ts.resample('M').mean() # 将100天按月进行降采样(聚合)
2000-01-31  -0.1560922000-02-29  0.0606072000-03-31  -0.0396082000-04-30  -0.154838Freq: M, dtype: float64
ts.resample('M',kind='period').mean()
2000-01  -0.1560922000-02  0.0606072000-03  -0.0396082000-04  -0.154838Freq: M, dtype: float64

三、降采样(聚合)

1.降采样面元(区间)默认才有左闭右开的形式,而且聚合的索引是以左边界标记

rng = pd.date_range('1/1/2000',periods=12,freq='T')ts = pd.Series(np.arange(12),index=rng)ts
2000-01-01 00:00:00   02000-01-01 00:01:00   12000-01-01 00:02:00   22000-01-01 00:03:00   32000-01-01 00:04:00   42000-01-01 00:05:00   52000-01-01 00:06:00   62000-01-01 00:07:00   72000-01-01 00:08:00   82000-01-01 00:09:00   92000-01-01 00:10:00  102000-01-01 00:11:00  11Freq: T, dtype: int32
ts.resample('5min').sum()
2000-01-01 00:00:00  102000-01-01 00:05:00  352000-01-01 00:10:00  21Freq: 5T, dtype: int32

2.通过参数closed='right'可以实现左开右闭

ts.resample('5min',closed='right').sum()
1999-12-31 23:55:00   02000-01-01 00:00:00  152000-01-01 00:05:00  402000-01-01 00:10:00  11Freq: 5T, dtype: int32

3.通过参数label='right'可以实现以右边界为聚合后的标签

ts.resample('5min',closed='right',label='right').sum()
2000-01-01 00:00:00   02000-01-01 00:05:00  152000-01-01 00:10:00  402000-01-01 00:15:00  11Freq: 5T, dtype: int32

4.通过参数loffset可以实现精准的调整标签

ts.resample('5min',closed='right',loffset='-1s').sum()
1999-12-31 23:54:59   01999-12-31 23:59:59  152000-01-01 00:04:59  402000-01-01 00:09:59  11Freq: 5T, dtype: int32

四、OHLC重采样

在金融领域常用的聚合方式OHLC,它会计算各个面元的:第一个值(开盘)、最后一个值(收盘)、最大值和最小值,并产生一个DataFrame

print(ts.resample('5min').ohlc())
           open high low close2000-01-01 00:00:00   0   4  0   42000-01-01 00:05:00   5   9  5   92000-01-01 00:10:00  10  11  10   11

五、通过groupby进行重采样

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表