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一键升级所有pip package的方法
Jan 16 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
python实现nao机器人手臂动作控制
Apr 29 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
如何基于windows实现python定时爬虫
May 01 Python
Python 如何测试文件是否存在
Jul 31 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 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中常用字符串处理代码片段整理
2011/11/07 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
Python import用法以及与from...import的区别
2015/05/28 Python
python使用tornado实现登录和登出
2018/07/28 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
小学老师寄语大全
2014/04/04 职场文书
个人授权委托书格式
2014/08/30 职场文书
田径运动会通讯稿
2014/09/13 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
使用python求解迷宫问题的三种实现方法
2022/03/17 Python