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写asp详细讲解
Dec 16 Python
python回调函数的使用方法
Jan 23 Python
python从入门到精通(DAY 3)
Dec 20 Python
python strip() 函数和 split() 函数的详解及实例
Feb 03 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
简单介绍python封装的基本知识
Aug 10 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
在python里创建一个任务(Task)实例
Apr 25 Python
python3中编码获取网页的实例方法
Nov 16 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截取中文字符串的问题
2006/07/12 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
浅谈PHP进程管理
2019/03/08 PHP
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
js中less常用的方法小结
2017/08/09 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
Python httplib,smtplib使用方法
2008/09/06 Python
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
1亿有多大教学反思
2014/05/01 职场文书
阅兵口号
2014/06/19 职场文书
个人简历自荐信
2014/06/26 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
死者家属慰问信
2015/03/24 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
院系推荐意见
2015/06/05 职场文书
《穷人》教学反思
2016/02/19 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android
MySQL数据库 安全管理
2022/05/06 MySQL