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


Posted in Python onFebruary 21, 2019

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

#!usr/bin/env python
#encoding:utf-8
from __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_list
def 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_list
if __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]

总结

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

Python 相关文章推荐
python实现跨文件全局变量的方法
Jul 07 Python
Python实现的检测web服务器健康状况的小程序
Sep 17 Python
Python单链表的简单实现方法
Sep 23 Python
Python 自动补全(vim)
Nov 30 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
使用Python提取文本中含有特定字符串的方法示例
Dec 09 Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 Python
全网非常详细的pytest配置文件
Jul 15 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 #Python
python+mysql实现学生信息查询系统
Feb 21 #Python
使用Python+wxpy 找出微信里把你删除的好友实例
Feb 21 #Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 #Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 #Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 #Python
python-itchat 获取微信群用户信息的实例
Feb 21 #Python
You might like
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
PHP获取url的函数代码
2011/08/02 PHP
php实现监听事件
2013/11/06 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
php跨服务器访问方法小结
2015/05/12 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
深入理解MVC中的时间js格式化
2016/05/19 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
python的三目运算符和not in运算符使用示例
2014/03/03 Python
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
Python的缺点和劣势分析
2019/11/19 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
设计师珠宝:Ylang 23
2018/05/11 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
幼儿园消防演练方案
2014/02/13 职场文书
环保建议书100字
2014/05/14 职场文书
干部考察材料范文
2014/12/24 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers