python实现时序数据缺失值的插值

最近学习时序数据的处理,但现实的时序数据存在某些日期数值的缺失,要根据其前后几天的数值进行插值

原始数据

给出原始的数据形式11.csv文件格式如下,要对dura进行填充
seniorID,date,dura
145116054891300800,2018-03-20,1
145116054891300800,2018-03-16,0
145116054891300800,2018-03-17,3
145116054891300800,2018-03-20,3
145116054891300800,2018-03-24,3

代码实现

# 字符串转为日期
def string_to_date(str):
    return datetime.datetime.strptime(str, "%Y-%m-%d")

# 对11.csv进行插值
def date_insert():
    # 读取csv
    df1 = pd.read_csv('11.csv', encoding='utf-8')
    # 这里是为了将df1的date列的str格式转为年月日时分秒的形式
    date0 = []
    for dt in df1['date']:
        date0.append(string_to_date(dt))
    # df1['date'] = 2019-1-1 00:00:00
    df1['date'] = date0
    # 生成包含df1所有日期的辅助dataframe:df2
    # df2['date']格式为2019-1-1 00:00:00
    df2 = pd.DataFrame({'date': pd.date_range(df1['date'].min(), df1['date'].max())})
  	# 合并df1,df2,on表示在date列上合并,how表示同时保留df1、df2并且对缺失值填充为NaN,并且按照日期排序好
    df = pd.merge(df1, df2, on='date', how='outer').sort_values('date')
    # 对dura的缺失值进行线性插值
    df['dura'] = df['dura'].interpolate(method='linear')
    return df

填充后
在这里插入图片描述

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值