pandas時間序列滑窗
阿新 • • 發佈:2018-10-09
print 4.0 als 圖片 技術分享 驗證 mage num range
時間序列數據統計—滑動窗口
窗口函數
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')
pandas時間序列滑窗