Pandas 連續(xù)差分diff后恢復(fù)原始的序列

目的

在時(shí)序分析時(shí),我們經(jīng)常需要將原始序列進(jìn)行差分,然后做出擬合或者預(yù)測(cè),最后還需要將擬合的或者預(yù)測(cè)的值恢復(fù)成原始序列。這里,使用Pandas的Series中的diff和cumsum函數(shù)可以方便的實(shí)現(xiàn)。

一次一階差分的恢復(fù)

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

多次一階差分的恢復(fù)

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

原理

其實(shí)就是使用cumsum累計(jì)求和函數(shù)。保留每次一階差分前的第一個(gè)值,然后反序再加回來。
時(shí)序問題中,如果預(yù)測(cè)的是一階的增量,那么就需要恢復(fù)原始的序列。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容