根据不同年份的同期值插入时间序列的缺失值
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
我有如下时间序列:
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