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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
用python代码做configure文件
Jul 20 Python
python 队列详解及实例代码
Oct 18 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
selenium3+python3环境搭建教程图解
Dec 07 Python
django 环境变量配置过程详解
Aug 06 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
数据库查询记录php 多行多列显示
2009/08/15 PHP
PHPCMS的使用小结
2010/09/20 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
PHP中的类型约束介绍
2015/05/11 PHP
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
Python内置函数dir详解
2015/04/14 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
彻底搞懂Python字符编码
2018/01/23 Python
使用requests库制作Python爬虫
2018/03/25 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
Python类的继承super相关原理解析
2020/10/22 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
Hibernate持久层技术
2013/12/16 面试题
机械设计制造专业个人求职信
2013/09/25 职场文书
食品安全标语
2014/06/07 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
建党伟业观后感
2015/06/01 职场文书
话题作文之自信作文
2019/11/15 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
pytorch中的numel函数用法说明
2021/05/13 Python
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle