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局部赋值的规则
Mar 07 Python
Python语言的12个基础知识点小结
Jul 10 Python
python的类变量和成员变量用法实例教程
Aug 25 Python
用C++封装MySQL的API的教程
May 06 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
Python在线运行代码助手
Jul 15 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
django框架自定义用户表操作示例
Aug 07 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 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
介绍几个array库的新函数 php
2006/12/29 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
轻松掌握python设计模式之策略模式
2016/11/18 Python
Python实现网站注册验证码生成类
2017/06/08 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
python操作gitlab API过程解析
2019/12/27 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
班主任对学生的评语
2014/04/26 职场文书
销售顾问工作计划书
2014/09/15 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
中学教师个人总结
2015/02/10 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
教师节倡议书2015
2015/04/27 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
导游词之江南周庄
2019/12/06 职场文书