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使用自定义user-agent抓取网页的方法
Apr 15 Python
python实现简易云音乐播放器
Jan 04 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
Python类的继承用法示例
Jan 31 Python
pandas如何处理缺失值
Jul 31 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
python获取百度热榜链接的实例方法
Aug 25 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 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+SQLite存储方案
2010/09/04 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
jquery简单体验
2007/01/10 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python pymysql库的常用操作
2020/10/16 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
百丽国际旗下购物网站:优购
2017/02/28 全球购物
C语言编程练习
2012/04/02 面试题
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
士力架广告词
2014/03/20 职场文书
中华魂演讲稿
2014/05/13 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server