怎么利用python对时间序列中缺失值进行线性插值?

  统计/机器学习 数据预处理 时间序列 Python    浏览次数:14498        分享
0

时间序列应该是每天一个数值点,但是有时候会有缺失值

比如

2018-01-02 y=100

2018-01-04 y=120

这里1月3号的信息是缺失的,我希望是对这个缺失值进行线性填值,得到

2018-01-03 y=110


有时候,可能会连续缺失几天信息

比如

2018-01-02 y=100

2018-01-05 y=115

这样就需要填充两天

得到

2018-01-03 y=105

2018-01-04 y=110


python里如何方便地实现这个功能呢?


 

niiii   2019-01-09 14:14



   1个回答 
4

方法如下

import pandas as pd
d = pd.DataFrame()
d['date'] = ['2019-01-01', '2019-01-02', '2019-01-04', 
            '2019-01-07', '2019-01-09', '2019-01-11']
d['val'] = [10, 20, 30, 40, 50, 30]
d['date'] = pd.to_datetime(d['date'])

上面的代码可以生成一个dataframe,如下

下面我们需要生成一个辅助dataframe,包含从2019-01-01到2019-01-11的所有日期。然后再将helper和d join起来

helper = pd.DataFrame({'date': pd.date_range(d['date'].min(), d['date'].max())})
d = pd.merge(d, helper, on='date', how='outer').sort_values('date')

现在得到的d是

最后一步就是插值了,直接用interpolate方法,method选择linear,线性

d['val'] = d['val'].interpolate(method='linear')

插值完的d如下:


SofaSofa数据科学社区DS面试题库 DS面经

maxroot   2019-02-14 11:06



  相关讨论

如何在日期序列中补齐缺失的日期

怎么对dataframe中的某一列groupby求缺失值的个数?

数据预处理中,都有哪些方法能够处理缺失值(missing value)

dataframe每行或者每列中缺失值(na, nan, null)的个数

训练集中有的特征含有缺失值,一般怎么处理

如何判断缺失值是否是随机的缺失?

如何处理聚类中的missing data

怎样处理具有大标签的数据?以及标签数据缺失怎么处理?

pandas里有没有类似于sql里coalesce的函数来处理缺失值?

pandas DataFrame中去掉缺失值多于50%的列

  随便看看

对于xgboost,还有必要做很多特征工程吗?

软聚类,硬聚类?

dataframe每行或者每列中缺失值(na, nan, null)的个数

python sklearn模型中random_state参数的意义

pandas同时返回一个dataframe的前几行(head)和后几行(tail)