Pandas时间序列时间序列:重采样及频率转换方式重采样及频率转换方式
今天小编就为大家分享一篇Pandas时间序列:重采样及频率转换方式,具有很好的参考价值,希望对大家有所帮
助。一起跟随小编过来看看吧
如下所示:如下所示:
import pandas as pd
import 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.156092
2000-02-29 0.060607
2000-03-31 -0.039608
2000-04-30 -0.154838
Freq: M, dtype: float64
ts.resample('M',kind='period').mean()
2000-01 -0.156092
2000-02 0.060607
2000-03 -0.039608
2000-04 -0.154838
Freq: 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 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
2000-01-01 00:09:00 9
2000-01-01 00:10:00 10
2000-01-01 00:11:00 11
Freq: T, dtype: int32
ts.resample('5min').sum()
2000-01-01 00:00:00 10
2000-01-01 00:05:00 35
2000-01-01 00:10:00 21
Freq: 5T, dtype: int32
2.通过参数closed='right'可以实现左开右闭
ts.resample('5min',closed='right').sum()
1999-12-31 23:55:00 0
2000-01-01 00:00:00 15
2000-01-01 00:05:00 40
2000-01-01 00:10:00 11
Freq: 5T, dtype: int32