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爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
python实现数据图表
Jul 29 Python
Python 高级专用类方法的实例详解
Sep 11 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
pandas 数据实现行间计算的方法
Jun 08 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 Python
Python Celery多队列配置代码实例
Nov 22 Python
简单了解python元组tuple相关原理
Dec 02 Python
python路径的写法及目录的获取方式
Dec 26 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 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实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
python绘制随机网络图形示例
2019/11/21 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
如何写出高性能的JSP和Servlet
2013/01/22 面试题
介绍一下Mysql的存储引擎
2015/02/12 面试题
装饰活动策划方案
2014/02/11 职场文书
英文慰问信
2015/02/14 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
创业计划书之家教中心
2019/09/25 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang