Python时间序列缺失值处理:日期填充实战指南

键盘旁的猫
键盘旁的猫
发布时间:2026-10-13| 6人浏览过
原创

本文详细讲解在Python中利用Pandas处理时间序列数据时遇到的日期缺失问题。通过示例代码展示如何构建连续日期序列,并将原始数据映射至完整时间轴,实现缺失日期的自动填充与插值替换。适合需要进行时间序列分析且遇到数据预处理瓶颈的开发者参考。

前言与背景

前言

近期在进行时间序列分析时,我遇到了数据预处理阶段常见的缺失值处理难题。特别是关于日期缺失及填充的问题,网络上缺乏系统且全面的参考资料,为此我耗费了大量工作时间进行摸索。现将此次关于时间序列缺失值处理的学习心得整理如下,旨在为同行提供一定的参考与指正依据。

时间序列缺失值处理

环境准备与模块安装

一、编程前准备

首先需收集时间序列数据,相信阅读本文的读者已具备这一基础。

其次需安装pandas模块,并调用Python标准库中的datetime模块。值得注意的是,部分开发者可能在PyCharm环境中未直接看到datetime模块,进而尝试安装第三方DateTime模块或查阅其英文文档,发现其参数无法满足时间序列缺失填充的需求。若进一步尝试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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。