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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
python 链接sqlserver 写接口实例
Mar 11 Python
如何在python中执行另一个py文件
Apr 30 Python
Python Unittest原理及基本使用方法
Nov 06 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 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/03 欧美动漫
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP目录操作实例总结
2016/09/27 PHP
js计算德州扑克牌面值的方法
2015/03/04 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
github配置使用指南
2014/11/18 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python实现逻辑回归的方法示例
2017/05/02 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
python中format函数如何使用
2020/06/22 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
Python排序函数的使用方法详解
2020/12/11 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
即将毕业大学生自荐信
2014/01/24 职场文书
教育技术职业规划范文
2014/03/04 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
今日说法观后感
2015/06/08 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
pytorch--之halfTensor的使用详解
2021/05/24 Python
Python List remove()实例用法详解
2021/08/02 Python
Python find()、rfind()方法及作用
2022/12/24 Python