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闭包实现计数器的方法
May 05 Python
Python_LDA实现方法详解
Oct 25 Python
几种实用的pythonic语法实例代码
Feb 24 Python
Python使用Pickle库实现读写序列操作示例
Jun 15 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
Django中使用第三方登录的示例代码
Aug 20 Python
python生成九宫格图片
Nov 19 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
利用Python判断你的密码难度等级
Jun 02 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正则表达式(regar expression)
2011/09/10 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
php实现微信企业转账功能
2018/10/02 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
python中for语句简单遍历数据的方法
2015/05/07 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
如何一键升级Python所有包
2020/11/05 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
50道外企软件测试面试题
2014/08/18 面试题
上班玩游戏检讨书
2014/02/07 职场文书
教师求职信范文
2014/05/24 职场文书
优秀员工评优方案
2014/06/13 职场文书
校庆标语集锦
2014/06/25 职场文书
公民代理授权委托书
2014/09/24 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
培训讲师开场白
2015/06/01 职场文书
大学开学感言
2015/08/01 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python