根据不同年份的同期值插入时间序列的缺失值

Interpolating missing values for time series based on the values of the same period from a different year

我有如下时间序列:

date        value
2017-08-27  564.285714
2017-09-03  28.857143
2017-09-10  NaN
2017-09-17  NaN
2017-09-24  NaN
2017-10-01  236.857143
... ...
2018-09-02  345.142857
2018-09-09  288.714286
2018-09-16  274.000000
2018-09-23  248.142857
2018-09-30  166.428571

它对应于从 2017 年 7 月到 2019 年 11 月的范围,并且按周重新采样。但是,有几个星期的值为 0。我将其替换为缺少值,现在我想根据不同年份的同源时期的值来感受这些值。例如,我缺少 2017 年 9 月的大量数据。我想使用 2018 年 9 月的值对这些值进行插值。但是,我是新手,我不太确定是否要这样做仅基于 select 期。我在 python 工作,顺便说一句。

如果有人知道如何快速做到这一点,我将不胜感激。

在Pandas中:

df['value'] = df['value'].fillna(df['value_last_year'])

如果您对 pandas 图书馆没问题 一种选择是从 date 中找到 week 数字并填充 NaN 值。

df['week'] = pd.to_datetime(df['date'], format='%Y-%m-%d').dt.strftime("%V")
df2 = df.sort_values(['week']).fillna(method='bfill').sort_values(['date'])
df2

这将为您提供以下输出。

    date    value   week
0   2017-08-27  564.285714  34
1   2017-09-03  28.857143   35
2   2017-09-10  288.714286  36
3   2017-09-17  274.000000  37
4   2017-09-24  248.142857  38
5   2017-10-01  236.857143  39
6   2018-09-02  345.142857  35
7   2018-09-09  288.714286  36
8   2018-09-16  274.000000  37
9   2018-09-23  248.142857  38
10  2018-09-30  166.428571  39