在时序数据处理过程中,我们经常会遇到由于现实中的种种原因导致获取的数据缺失的情况,这里的数据缺失不单单是指为‘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])breakelif i==len(one_all_list)-1:res_list.append(int(sum(res_list[-3:-1])/2))else:tmp=0for j in range(i,len(one_all_list)):if one_all_list[j]!=0:tmp=one_all_list[j]breaknow=(res_list[i-1]+tmp)/2res_list.append(int(now))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:])/numres_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)+1if i<=tmp:res_list.append(int(before_avg))elif i>=len(one_all_list)-tmp:res_list.append(int(last_avg))else:slice_list=one_all_list[i-tmp:i+tmp+1]res_list.append(int(sum(slice_list)/(num-1)))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]result1=zeroDataFill(one_all_list)result2=dataProcessing(one_all_list,num=7)print 'result1: ', result1print 'result2: ', result1print len(result1),len(result2)

结果如下:

result1:  [12, 12, 3, 5, 1, 5, 7, 8, 4, 8, 12, 14, 29, 37, 45, 34, 67, 43, 26, 9, 1, 17]
result2:  [12, 12, 3, 5, 1, 5, 7, 8, 4, 8, 12, 14, 29, 37, 45, 34, 67, 43, 26, 9, 1, 17]
22 22
[Finished in 0.2s]

python 基于滑动平均思想实现缺失数据填充相关推荐

  1. 文献记录(part75)--基于最大平均熵率的大数据关联聚类算法

    学习笔记,仅供参考,有错必纠 基于最大平均熵率的大数据关联聚类算法 摘要 聚类是数据挖掘和机器学习中的基本任务之一 . 传统聚类方法由于其设计中对簇结构假设的限制 , 导致算法在不符合其假设的数据集上 ...

  2. python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析

    这篇文章主要介绍了python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析的实例,帮助大家更好的理解和学习使用python.感兴趣的朋友可以了解下 一.环境准备 python3.8.3 ...

  3. 《利用python进行数据分析》之处理缺失数据

    <利用python进行数据分析>之处理缺失数据 # -*- coding: utf-8 -*- """ Created on Fri Nov 16 19:50 ...

  4. 【项目实战】Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取. 1.项目背景 孤立森林是基于Ensemble的快速异常检测方法,具有线性时间复 ...

  5. 一种基于滑动平均的时间序列滤波方法(Java实现)

     1 滑动平均的认识 移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量.公司产能等的一种常用方法.移动平均法适用于即期预测.当产品需求既不快速增长也不快速下降,且不存在季节性因 ...

  6. python基于Echarts的城科就业数据可视化系统毕业设计源码150915

    Python城科就业数据可视化系统 摘 要 对于处理广泛的数据并整合到本地,Python爬虫有着自已强大的功能,面对城科就业数据可视化系统研究,我们考虑借助Python爬虫的功能对其实现相应的处理,本 ...

  7. GAIN: Missing Data Imputation using Generative Adversarial Nets(基于生成对抗网络的缺失数据填补)论文详解

    目录 一.背景分析 1.1 缺失数据 1.2 填补算法 二.GAIN 2.1 GAIN网络架构 2.2 符号描述(Symbol Description) 2.3 生成器模型 2.4 判别器模型 2.5 ...

  8. Python 数据清洗之缺失数据填充fillna()

    数据量大,缺失数据比较少的情况下,可以直接滤除:数据量小,缺失数据比较多时,对数据进行填充就很有必要了. 数据填充函数fillna(),默认参数如下: 案例学习: import numpy as np ...

  9. python爬虫表格table_Python基于pandas爬取网页表格数据

    以网页表格为例:https://www.kuaidaili.com/free/ 该网站数据存在table标签,直接用requests,需要结合bs4解析正则/xpath/lxml等,没有几行代码是搞不 ...

  10. python滑动平均

    在时间序列数据的处理方法中, 滑动平均通过建立整个数据集中的一系列子集的平均值来分析数据点,让越近的数据权重越大,越远的数据权重越小,从而平滑小波动显示出长期趋势. 比如可以通过以下代码实现: for ...

最新文章

  1. 基于 OpenCV 的图像阴影去除
  2. SAP PM 入门系列14 – PM模块与其它模块的集成
  3. IHttpModule IHttpHandler
  4. POJ 6048 泰国佛塔 【dfs搜索】【暴力大比拼】【北大ACM/ICPC竞赛训练】
  5. Spring解析 XML 的原理,你搞定了么?
  6. vue自定义组件递归实现树状_一道价值25k的腾讯递归组件面试题(Vue3 + TS 实现)...
  7. php压缩图片变成代码的方法,PHP实现压缩图片尺寸并转为jpg格式的方法示例
  8. js实现简单pdf打印功能
  9. 希尔加密法matlab,希尔密码加密解密
  10. BZOJ 3772 精神污染 主席树+欧拉序
  11. 傅里叶变换性质和常见信号的傅里叶变换
  12. 秋从饶合似陶家,遍绕篱边日渐斜。不是花中偏爱菊,此花开尽更无花
  13. 亲测-分享最新微信付费进群收费进群系统源码-附带搭建教
  14. SEO分析和方案设计
  15. 微信小程序之蓝牙通信模块
  16. 方差、协方差、协方差矩阵的概念及意义 的理解
  17. Java判断一个数字是否是素数
  18. EDA行业技术壁垒高筑,我国亟需提高EDA工具国产替代进程
  19. html 字体样式加粗,css字体怎么加粗?
  20. Android WebView 调用JS方法获取返回值

热门文章

  1. Git学习笔记:一台电脑上配置两个git账户
  2. 计蒜客 蓝桥杯模拟五 合并数字
  3. 兰州市智能交通实现智慧城市 智能化立体车库有效缓解停车难
  4. Download SQL Server Management Studio (SSMS)下载地址
  5. 纯CSS3浮雕质感的立体文字旋转动画
  6. 解决 Exchange 2013提示“出现意外错误,无法处理您的请求”,无法打开OWA和ECP...
  7. 每日英语:Targeting Grandpa: China’s Seniors Hunger for Ads
  8. iOS上应用Static Framework
  9. Java ByteCode
  10. APE代码解读系列(四)