Python时间序列缺失值的处理方法(日期缺失填充)

作者:Leo_Sheng 时间:2023-04-13 07:39:18 

前言

因近期进行时间序列分析时遇到了数据预处理中的缺失值处理问题,其中日期缺失和填充在网上没有找到较好较全资料,耗费了我一晚上工作时间,所以下面我对这次时间序列缺失值处理学习做了以下小结以供之后同行们参考指正。

时间序列缺失值处理

一、编程前准备

收集时间序列数据,相信看这篇博客的各位已经完成了这步。

需要安装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

来源:https://blog.csdn.net/leo_sheng/article/details/83316285

标签:python,缺失值,填充
0
投稿

猜你喜欢

  • Python+Opencv实现把图片、视频互转的示例

    2022-03-24 23:07:38
  • python中numpy数组的csv文件写入与读取

    2021-11-26 06:18:20
  • vue+canvas实现拼图小游戏

    2024-05-09 15:09:34
  • 详解win10下pytorch-gpu安装以及CUDA详细安装过程

    2023-07-01 07:21:36
  • PHP最常用的正则表达式

    2024-05-03 15:34:38
  • 一步一步教你网站同步镜像(转载)

    2024-01-21 03:38:11
  • Python3 解决读取中文文件txt编码的问题

    2022-10-22 13:14:43
  • 如何使用Python+ChatGPT批量生成论文

    2023-10-01 20:30:17
  • 一文搞懂​​​​​​​python可迭代对象,迭代器,生成器,协程

    2023-08-22 18:45:13
  • Python plt.title()函数实例详解

    2023-07-02 21:00:34
  • Python 多核并行计算的示例代码

    2022-08-18 11:20:36
  • Linux下实现C++操作Mysql数据库

    2024-01-21 21:25:26
  • Django安装配置mysql的方法步骤

    2024-01-21 19:18:08
  • Python搜索引擎实现原理和方法

    2023-06-26 05:35:32
  • MSSQL数据库的定期自动备份计划。

    2024-01-27 11:01:04
  • MySQL如何优化查询速度

    2024-01-17 05:38:04
  • MySQL字段类型详解

    2009-01-05 09:23:00
  • 微信小程序实现滑动删除效果

    2024-04-19 10:03:45
  • 解决python将xml格式文件转换成txt文件的问题(xml.etree方法)

    2021-10-21 02:51:13
  • 高性能网站建设指南:性能提升的14个原则

    2011-07-14 16:04:54
  • asp之家 网络编程 m.aspxhome.com