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中的floor()方法
May 15 Python
Python基于pygame实现的font游戏字体(附源码)
Nov 11 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
Python3中使用PyMongo的方法详解
Jul 28 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
python实现AES和RSA加解密的方法
Mar 28 Python
python3.7 sys模块的具体使用
Jul 22 Python
Python shelve模块实现解析
Aug 28 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
Python暴力破解Mysql数据的示例
Nov 09 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
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
PHP打印输出函数汇总
2016/08/28 PHP
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
Python实现partial改变方法默认参数
2014/08/18 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python八皇后问题的解决方法
2018/09/27 Python
python如何保证输入键入数字的方法
2019/08/23 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
英国假发网站:Hothair
2018/02/23 全球购物
应届生体育教师自荐信
2013/10/03 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
关于幼儿的自我评价
2013/12/18 职场文书
物流合作计划书
2014/01/10 职场文书
银行介绍信范文
2014/01/10 职场文书
学生周末长期请假条
2014/02/15 职场文书
外联部演讲稿
2014/05/24 职场文书
大学生心理活动总结
2014/07/04 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
MySQL root密码的重置方法
2021/04/21 MySQL
详解Java实践之适配器模式
2021/06/18 Java/Android
Python办公自动化解决world文件批量转换
2021/09/15 Python
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL