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执行系统命令的常见方法(全)
Oct 22 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
使用python实现生成用户信息
Mar 20 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
Python处理CSV与List的转换方法
Apr 19 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
Python流程控制语句的深入讲解
Jun 15 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
Python+kivy BoxLayout布局示例代码详解
Dec 28 Python
python爬虫scrapy基本使用超详细教程
Feb 20 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/21 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
通过javascript设置css属性的代码
2009/12/28 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
总结python爬虫抓站的实用技巧
2016/08/09 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
物业管理员岗位职责范文
2013/11/25 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
清洁工岗位职责
2015/02/13 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
MySQL学习必备条件查询数据
2022/03/25 MySQL