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 相关文章推荐
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
如何用python整理附件
May 13 Python
详解python分布式进程
Oct 08 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
python中对数据进行各种排序的方法
Jul 02 Python
在Python中append以及extend返回None的例子
Jul 20 Python
Django的Modelforms用法简介
Jul 27 Python
如何基于python实现脚本加密
Dec 28 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
Python第三方库安装缓慢的解决方法
Feb 06 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
第二节--PHP5 的对象模型
2006/11/16 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
node.js中watch机制详解
2014/11/17 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
Vuex简单入门
2017/04/19 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
tensorflow 环境变量设置方式
2020/02/06 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
英语自我评价范文
2014/01/24 职场文书
学习雷锋活动总结
2014/04/29 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
感恩教育观后感
2015/06/17 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python