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

  统计/机器学习 数据预处理 时间序列 Python    浏览次数:344        分享
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个回答 
2

方法如下

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面经 问答 实战

maxroot   2019-02-14 11:06



  相关主题

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

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

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

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

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

python里把数据中某一列中的na,nan,缺失值都替换成0?   1回答

如何处理聚类中的missing data   3回答

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

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

决策树或者随机森林能够直接处理missing data吗?   1回答

时间序列样本中有负数时怎么求几何平均值?   1回答

像年、月、日、小时这种时间变量一般怎么处理?   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!