Pandas時間序列差分後恢復成原始序列

目的

在時序分析時,我們經常需要將原始序列進行差分,然後做出擬合或者預測,最後還需要將擬合的或者預測的值恢復成原始序列。這裏,使用Pandas的Series中的diff和cumsum函數可以方便的實現。

一次一階差分的恢復

 

import pandas as pd
time_series = pd.Series([2,4,3,5,6,7,4,5,6,3,2,4], index=pd.date_range(start='2000', periods=12, freq='a'))
time_series_diff = time_series.diff(1).dropna()

time_series_restored = pd.Series([time_series[0]], index=[time_series.index[0]]) .append(time_series_diff).cumsum()

time_series_restored

多次一階差分的恢復

 

time_series = pd.Series([2,4,3,5,6,7,4,5,6,3,2,4], index=pd.date_range(start='2000', periods=12, freq='a'))
time_series_diff = time_series
diff_times = 3
first_values = []
for i in range(1, diff_times+1):
    first_values.append(pd.Series([time_series_diff[0]],index=[time_series_diff.index[0]]))
    time_series_diff = time_series_diff.diff(1).dropna()

time_series_restored = time_series_diff
for first in reversed(first_values):
    time_series_restored = first.append(time_series_restored).cumsum()
time_series_restored

原理

其實就是使用cumsum累計求和函數。保留每次一階差分前的第一個值,然後反序再加回來。
時序問題中,如果預測的是一階的增量,那麼就需要恢復原始的序列。


作者:ledao
鏈接:https://www.jianshu.com/p/88d663ecdf25
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章