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之引用和类属性的初步理解
May 15 Python
Python 递归函数详解及实例
Dec 27 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
python的内存管理和垃圾回收机制详解
May 18 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
python同时遍历两个list用法说明
May 02 Python
Python调用shell cmd方法代码示例解析
Jun 18 Python
想学画画?python满足你!
Dec 24 Python
Python实现归一化算法详情
Mar 18 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中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
jQuery1.6 使用方法二
2011/11/23 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
bootstrapValidator表单验证插件学习
2016/12/30 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
python检测是文件还是目录的方法
2015/07/03 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python列表元素常见操作简单示例
2019/10/25 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
教师自荐信
2013/12/10 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
生日寿宴答谢词
2014/01/19 职场文书
个性与发展自我评价
2014/02/11 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
心术观后感
2015/06/11 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技