更新时间:2022年12月09日10时34分 来源:传智教育 浏览次数:
降采样时间颗粒会变大,比如原来是按天统计的数据,现在要变成按周统计。降采样时数据量是减少的,为了避免有些时间戳对应的数据闲置,可以利用内置方法(比如sum、mean等)聚合数据。
在金融领域中,股票数据比较常见的是OHLC重采样,包括开盘价(open)、最高价(high)、最低价(low)和收盘价(close)。为此,Pandas中专门提供了一个ohlc()方法,示例代码如下。
In [46]: date_index=pd.date_range('2018/06/01', periods=30) shares_data=np.random.rand(30) time_ser=pd.Series(shares_data,index=date_index) time_ser Out[46]: 2018-06-01 0.217872 2018-06-02 0.392067 2018-06-03 0.127837 2018-06-05 0.078589 ...省略N行... 2018-06-25 0.468722 2018-06-26 0.266006 2018-06-27 0.630626 2018-06-28 0.690746 2018-06-29 0.840611 2018-06-30 0.969173 Freq:D, dtype: float64 In [47]: time_ser.resample('7D').ohlc() # OHLC重采样 Out[47]: 2018-06-01 0.207359 0.817076 0.207359 0.817076 2018-06-08 0.348861 0.917179 0.243257 0.744128 2018-06-15 0.698345 0.698345 0.240547 0.418569 2018-06-22 0.203373 0.891738 0.111924 0.344488 2018-06-29 0.935986 0.935986 0.920508 0.920508
上述示例输出了2018年6月份每周的开盘价、最高价、最低价、收盘价。注意,这些股票数据都是随机数,只供大家学习使用,并不是真实的数据。
重采样就相当于另外一种形式的分组操作,它会按照日期将时间序列进行分组,之后对每个分组应用聚合方法得出一个结果,同样实现了对时间序列数据降采样的效果,示例代码如下。
In [48]: # 通过groupby技术实现降采样 time_ser.groupby(lambda X: x.week).mean() Out[48]: 22 0.358104 23 0.366116 24 0.486968 25 0.484954 26 0.664579 dtype: float64