• pandas时间序列滑窗


    时间序列数据统计—滑动窗口

    窗口函数

    import pandas as pd
    import numpy as np
    
    ser_obj = pd.Series(np.random.randn(1000), 
                        index=pd.date_range('20180101', periods=1000))
    ser_obj = ser_obj.cumsum()
    print(ser_obj.head())
    
    2018-01-01    0.797334
    2018-01-02    0.451286
    2018-01-03    1.329133
    2018-01-04    0.416577
    2018-01-05    0.610993
    Freq: D, dtype: float64
    
    r_obj = ser_obj.rolling(window=5)
    r_obj2 = ser_obj.rolling(window=5, center=True)
    print(r_obj)
    
    Rolling [window=5,center=False,axis=0]
    
    print(r_obj2.mean())
    
    # 验证:
    # 前5个数据的均值
    # print(ser_obj[0:5].mean())
    
    # 1-6个数据的均值
    # print(ser_obj[1:6].mean())
    
    2018-01-01          NaN
    2018-01-02          NaN
    2018-01-03     0.721065
    2018-01-04     0.829352
    2018-01-05     0.694121
    2018-01-06     0.275495
    2018-01-07     0.149214
    2018-01-08     0.417734
    2018-01-09     0.520458
    2018-01-10     1.034506
    2018-01-11     1.812417
    2018-01-12     2.457410
    2018-01-13     2.809996
    2018-01-14     3.046443
    2018-01-15     2.838209
    2018-01-16     2.457822
    2018-01-17     2.148508
    2018-01-18     1.647887
    2018-01-19     1.083220
    2018-01-20     1.013525
    2018-01-21     0.941850
    2018-01-22     0.765751
    2018-01-23     0.703581
    2018-01-24     0.744616
    2018-01-25     0.301710
    2018-01-26    -0.168597
    2018-01-27    -0.851726
    2018-01-28    -1.621299
    2018-01-29    -2.538815
    2018-01-30    -3.251647
                    ...    
    2020-08-28   -50.581143
    2020-08-29   -51.826380
    2020-08-30   -52.950275
    2020-08-31   -53.412339
    2020-09-01   -53.824206
    2020-09-02   -54.099840
    2020-09-03   -54.140219
    2020-09-04   -54.215937
    2020-09-05   -54.242818
    2020-09-06   -53.908675
    2020-09-07   -53.493851
    2020-09-08   -53.209943
    2020-09-09   -52.942718
    2020-09-10   -53.038547
    2020-09-11   -53.188028
    2020-09-12   -53.731145
    2020-09-13   -54.091879
    2020-09-14   -54.867172
    2020-09-15   -55.202294
    2020-09-16   -55.440556
    2020-09-17   -54.926439
    2020-09-18   -54.619663
    2020-09-19   -54.128376
    2020-09-20   -54.274526
    2020-09-21   -54.527463
    2020-09-22   -55.382880
    2020-09-23   -56.309192
    2020-09-24   -57.422908
    2020-09-25          NaN
    2020-09-26          NaN
    Freq: D, Length: 1000, dtype: float64
    
    print(r_obj2.mean())
    
    2018-01-01          NaN
    2018-01-02          NaN
    2018-01-03     0.721065
    2018-01-04     0.829352
    2018-01-05     0.694121
    2018-01-06     0.275495
    2018-01-07     0.149214
    2018-01-08     0.417734
    2018-01-09     0.520458
    2018-01-10     1.034506
    2018-01-11     1.812417
    2018-01-12     2.457410
    2018-01-13     2.809996
    2018-01-14     3.046443
    2018-01-15     2.838209
    2018-01-16     2.457822
    2018-01-17     2.148508
    2018-01-18     1.647887
    2018-01-19     1.083220
    2018-01-20     1.013525
    2018-01-21     0.941850
    2018-01-22     0.765751
    2018-01-23     0.703581
    2018-01-24     0.744616
    2018-01-25     0.301710
    2018-01-26    -0.168597
    2018-01-27    -0.851726
    2018-01-28    -1.621299
    2018-01-29    -2.538815
    2018-01-30    -3.251647
                    ...    
    2020-08-28   -50.581143
    2020-08-29   -51.826380
    2020-08-30   -52.950275
    2020-08-31   -53.412339
    2020-09-01   -53.824206
    2020-09-02   -54.099840
    2020-09-03   -54.140219
    2020-09-04   -54.215937
    2020-09-05   -54.242818
    2020-09-06   -53.908675
    2020-09-07   -53.493851
    2020-09-08   -53.209943
    2020-09-09   -52.942718
    2020-09-10   -53.038547
    2020-09-11   -53.188028
    2020-09-12   -53.731145
    2020-09-13   -54.091879
    2020-09-14   -54.867172
    2020-09-15   -55.202294
    2020-09-16   -55.440556
    2020-09-17   -54.926439
    2020-09-18   -54.619663
    2020-09-19   -54.128376
    2020-09-20   -54.274526
    2020-09-21   -54.527463
    2020-09-22   -55.382880
    2020-09-23   -56.309192
    2020-09-24   -57.422908
    2020-09-25          NaN
    2020-09-26          NaN
    Freq: D, Length: 1000, dtype: float64
    
    # 画图查看
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    plt.figure(figsize=(15, 5))
    
    ser_obj.plot(style='r--')
    ser_obj.rolling(window=10, center=False).mean().plot(style='g')
    ser_obj.rolling(window=10, center=True).mean().plot(style='b')
    

  • 相关阅读:
    JAVA语言编程思维入门
    C语言入门编程思维引导
    Spring入门
    Linux设置Swap虚拟内存方法
    WordPress在Centos下Apache设置伪静态方法
    Maven(十五)Maven 聚合
    Maven(十四)Maven 继承
    Maven(十三)Maven统一声明版本号
    Maven(十二)Maven 依赖详解
    Maven(十一)导入手动创建的Maven 工程
  • 原文地址:https://www.cnblogs.com/yangjing000/p/9760175.html
Copyright © 2020-2023  润新知