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中使用pyhook实现键盘监控的例子
Jul 18 Python
Python实现字典的key和values的交换
Aug 04 Python
利用python获取某年中每个月的第一天和最后一天
Dec 15 Python
python实现音乐下载的统计
Jun 20 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
python 实现汉诺塔游戏
Nov 28 Python
python FTP编程基础入门
Feb 27 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
使PHP自定义函数返回多个值
2006/11/26 PHP
写php分页时出现的Fatal error的解决方法
2011/04/18 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
javascript实现微信分享
2014/12/23 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
在Python中使用判断语句和循环的教程
2015/04/25 Python
详细介绍Python中的偏函数
2015/04/27 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
Python中collections模块的基本使用教程
2018/12/07 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
python不同系统中打开方法
2020/06/23 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
运动会广播稿500字
2014/01/28 职场文书
幼儿评语大全
2014/04/30 职场文书
经济国贸专业求职信
2014/06/18 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript