Python时间序列缺失值的处理方法(日期缺失填充)


Posted in Python onAugust 11, 2019

前言

因近期进行时间序列分析时遇到了数据预处理中的缺失值处理问题,其中日期缺失和填充在网上没有找到较好较全资料,耗费了我一晚上工作时间,所以下面我对这次时间序列缺失值处理学习做了以下小结以供之后同行们参考指正。

时间序列缺失值处理

一、编程前准备

收集时间序列数据,相信看这篇博客的各位已经完成了这步。

需要安装pandas模块,并利用Python的Lib文件夹自带的datetime库(当时我因为在Pycharm环境中没看到datetime模块又去安装了DateTime模块并看了DateTime英文文档,发现这个对象的参数并不能满足时间序列缺失填充的需求,所以又下了datetime2模块,在import  datetime2时发现Python自带datetime库,血虐啊,真是对菜鸟不要太善良)。

二、编程与讲解

因为我的数据不是普遍形式的时间序列形式,而下面程序是我按普遍形式时间序列数据改编的,与我数据不适用,所以可能存在问题,但是程序所用步骤和程序原理都是与原程序相同,对于初步接触的同行具有一定的借鉴和参考意义。

import pandas as pd
import datetime
def load_Data():
  #加载数据
  df0 = pd.read_csv("Path/power.csv",index_col='user_id')
  df0['record_date'] = pd.to_datetime(df0['record_date'])
  return df0
 
#把datetime转成字符串
def datetime_toString(dt):
  return dt.strftime("%Y-%m-%d")
 
#把字符串转成datetime
def string_toDatetime(string):
  return datetime.strptime(string, "%Y-%m-%d")
 
#缺失值处理,插值替换
def data_Full():
  df1 = load_Data()  #加载数据
  date_start = df1.iloc[0, 0] #初始时间
  df1_date = df1['record_date'].tolist() #数据日期转为列表
  df1_data = df1[ 'value'].tolist()  #数据值转为列表
  act = 365    #实际期望日期序列长度
  for j in range(0, len(df1_date)):
    if len(df1_date) < act:
      date0 = date_start
      date_s = datetime_toString(date0)  #日期转换为字符串类型,使日期可进行逻辑比较
      date_i = df1_date[j]  #顺序选取数据中日期列表里对应各日期
      date_is = datetime_toString(date_i)
      while date_is != date_s:  #如数据中日期列表与期望日期序列不相等,即存在缺失值执行while程序
        nada = (df1_data[j] + df1_data[j+1]) / 2  #计算缺失处左右相邻插值
        adda = [date0, nada]  
        date_da = pd.DataFrame(adda).T
        date_da.columns = df1.columns
        df1 = pd.concat([df1, date_da]) #将缺失日期加入数据列表中
        date0 += datetime.timedelta(days=1) #日期加一
        date_s = datetime_toString(date0)  #日期字符串转日期时间类型
      date0 += datetime.timedelta(days=1) #日期加一
      date_s = datetime_toString(date0)  #日期字符串转日期时间类型
  df1 = df1.sort_values(by=['record_date'])
  return df1

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python随机生成指定长度密码的方法
Apr 04 Python
Python 26进制计算实现方法
May 28 Python
Python正则表达式知识汇总
Sep 22 Python
Python3生成手写体数字方法
Jan 30 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
Jan 29 Python
在python里面运用多继承方法详解
Jul 01 Python
python中return的返回和执行实例
Dec 24 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
python opencv实现简易画图板
Aug 27 Python
python Gabor滤波器讲解
Oct 26 Python
Matlab如何实现矩阵复制扩充
Jun 02 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 Python
python3实现带多张图片、附件的邮件发送
Aug 10 #Python
python实现邮件自动发送
Aug 10 #Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 #Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 #Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 #Python
Python中的 sort 和 sorted的用法与区别
Aug 10 #Python
Python测试模块doctest使用解析
Aug 10 #Python
You might like
使用php验证复选框有效性的示例
2013/11/13 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
父母对孩子说的话
2014/04/12 职场文书
赢在执行观后感
2015/06/16 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android