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抓taobao图片爬虫
Oct 26 Python
python实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 Python
python常见的格式化输出小结
Dec 15 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
python 实现识别图片上的数字
Jul 30 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
tensorflow 限制显存大小的实现
Feb 03 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
python os模块在系统管理中的应用
Jun 22 Python
Python命名空间及作用域原理实例解析
Aug 12 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+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
PHP学习笔记之一
2011/01/17 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
第二章之Bootstrap 页面排版样式
2016/04/25 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
SQLite3中文编码 Python的实现
2017/01/11 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
创业大赛策划书
2014/03/01 职场文书
政治学求职信
2014/06/03 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
合作协议书模板2014
2014/09/26 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书