时间序列之重采样引入

数据重采样
时间数据由一个频率转换到另一个频率
降采样
升采样
生成一条带随机值的时间序列

import numpy as np
import pandas as pd
date_index=pd.date_range('20190701',periods=12)   #periods区间
data_series=pd.Series(index=date_index,data=np.arange(1,13))
print(data_series)

结果:
2019-07-01 1
2019-07-02 2
2019-07-03 3
2019-07-04 4
2019-07-05 5
2019-07-06 6
2019-07-07 7
2019-07-08 8
2019-07-09 9
2019-07-10 10
2019-07-11 11
2019-07-12 12
Freq: D, dtype: int32

降采样

data_5d=data_series.resample('3D').sum() #五个数据一组进行求和,D为天。
print(data_5d)

结果:
2019-07-01 6
2019-07-04 15
2019-07-07 24
2019-07-10 33
Freq: 3D, dtype: int32
如果放大序列那么会有空缺值产生

print(data_5d.resample('D').asfreq())

结果:
2019-07-01 6.0
2019-07-02 NaN
2019-07-03 NaN
2019-07-04 15.0
2019-07-05 NaN
2019-07-06 NaN
2019-07-07 24.0
2019-07-08 NaN
2019-07-09 NaN
2019-07-10 33.0
Freq: D, dtype: float64

升采样

三种填充方式:
ffill 空值取前面的值

data1=data_5d.resample('D').ffill()
print(data1)

结果:
2019-07-01 6
2019-07-02 6
2019-07-03 6
2019-07-04 15
2019-07-05 15
2019-07-06 15
2019-07-07 24
2019-07-08 24
2019-07-09 24
2019-07-10 33
Freq: D, dtype: int32
当ffill()设置参数时,比如ffill(1),则填充的是一个NaN,如果没有参数则默认填充所有,下面bfill也类似
bfill 空值取后面的值

data2=data_5d.resample('D').bfill()
print(data2)

结果:
2019-07-01 6
2019-07-02 15
2019-07-03 15
2019-07-04 15
2019-07-05 24
2019-07-06 24
2019-07-07 24
2019-07-08 33
2019-07-09 33
2019-07-10 33
Freq: D, dtype: int32

interpolate 线性取值

data3=data_5d.resample('D').interpolate('linear')
print(data3)

结果:
2019-07-01 6.0
2019-07-02 9.0
2019-07-03 12.0
2019-07-04 15.0
2019-07-05 18.0
2019-07-06 21.0
2019-07-07 24.0
2019-07-08 27.0
2019-07-09 30.0
2019-07-10 33.0
Freq: D, dtype: float64

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值