香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python基于滑动平均思想实现缺失数据填充的方法


时间:2022-04-02 10:18 作者:admin


在时序数据处理过程中,我们经常会遇到由于现实中的种种原因导致获取的数据缺失的情况,这里的数据缺失不单单是指为‘NaN'的数据,比如在AQI数据中,0是不可能出现的,这时候如果数据中出现了0也就是数据缺失了,最近正好在拿一个污染物的数据在做模型分析,中间就遇到了数据缺失值的问题,数据量本身不大,如果直接对缺失值进行丢弃处理的话会进一步减小数据量,所以这里考虑采用数据填充的方法来实现缺失数据的填充。我做了两个版本其中,第一个版本很简单可以不看,主要是简单实现以下效果。具体实现如下:

#!usr/bin/env python/' target='_blank'>python#encoding:utf-8from __future__ import division'''__Author__:沂水寒城功能: Python 基于滑动平均思想实现简易的缺失数据填充'''def zeroDataFill(one_all_list):  '''  对于0数据处理,简单实现版本,可忽略  '''  res_list=[]  for i in range(len(one_all_list)):    if one_all_list[i]!=0:      res_list.append(one_all_list[i])    else:      if i==0:        for j in range(1,len(one_all_list)):          if one_all_list[j]!=0:            res_list.append(one_all_list[j])            break      elif i==len(one_all_list)-1:        res_list.append(int(sum(res_list[-3:-1])/2))      else:        tmp=0        for j in range(i,len(one_all_list)):          if one_all_list[j]!=0:            tmp=one_all_list[j]            break        now=(res_list[i-1]+tmp)/2        res_list.append(int(now))  print res_list  return res_listdef dataProcessing(one_all_list,num=7):  '''  对于时间序列数据中的 0 进行处理,采用滑动平均的方法来填充(默认时间为一周)  '''  nozero_list=[one for one in one_all_list if one!=0]  before_avg,last_avg=sum(nozero_list[:num])/num,sum(nozero_list[-1*num:])/num  res_list=[]  for i in range(len(one_all_list)):    if one_all_list[i]!=0:      res_list.append(one_all_list[i])    else:      tmp=int(num/2)+1      if i<=tmp:        res_list.append(int(before_avg))      elif i>=len(one_all_list)-tmp:        res_list.append(int(last_avg))        slice_list=one_all_list[i-tmp:i+tmp+1]        res_list.append(int(sum(slice_list)/(num-1)))  print res_list  return res_listif __name__=='__main__':  one_all_list=[0,12,3,5,1,5,7,8,4,0,12,14,0,0,45,34,67,43,0,9,1,0]  zeroDataFill(one_all_list)  dataProcessing(one_all_list,num=7)

结果如下:

[12, 12, 3, 5, 1, 5, 7, 8, 4, 8, 12, 14, 29, 37, 45, 34, 67, 43, 26, 9, 1, 17]
[5, 12, 3, 5, 1, 5, 7, 8, 4, 12, 14, 45, 34, 67, 43, 30, 33, 9, 1, 30, 8]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)