Python时间序列缺失值的处理方法(日期缺失填充)
作者:Leo_Sheng 发布时间:2023-04-13 07:39:18
标签:python,缺失值,填充
前言
因近期进行时间序列分析时遇到了数据预处理中的缺失值处理问题,其中日期缺失和填充在网上没有找到较好较全资料,耗费了我一晚上工作时间,所以下面我对这次时间序列缺失值处理学习做了以下小结以供之后同行们参考指正。
时间序列缺失值处理
一、编程前准备
收集时间序列数据,相信看这篇博客的各位已经完成了这步。
需要安装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


猜你喜欢
- 第一步把tensorflow保存的.ckpt模型转为pb模型, 并记下模型的输入输出名字.第二步去ncnn的github上把仓库clone下
- 引言随着ES6新语法的不断迭代更新,已经出现了许多常用的工具api。今天我将为大家推荐两款明星api,它们就是Object.freeze和O
- 支持按照文件夹去批量处理,也可以单独一个文件进行处理,并且可以自定义标识符最近在开发一个答题类的小程序,到了录入试题进行测试的时候了,发现一
- 这篇文章主要介绍了python标识符命名规范原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 前言首先,先说明我只是初步接触yolov7,写这篇文章的主要目的是可以让大家快速应用自己的数据集进行训练。没有接触过yolov5也没有关系,
- Python使用for实现无限循环# 方法1.1:借助循环遍历列表的cycle方法from itertools import cyclefo
- 摘要:有时候我们只需要数据集中的一部分,并不需要全部的数据。这个时候我们就要对数据集进行随机的抽样。pandas中自带有抽样的方法。应用场景
- 一、案例分析我们先思考一下,实现扫码工具需要写什么操作。在扫码过程中我们需要打开摄像头,如何由手机或者电脑识别二维码。所以我们要实现两个关键
- MySQL主从配置及原理,供大家参考,具体内容如下一、环境选择:1.Centos 6.52.MySQL 5.7二、什么是MySQL主从复制M
- 简单定义图轴:import numpy as npimport matplotlib.pyplot as plt创建一个简单的matplot
- 废话不多说了,直接给大家贴代码了,具体代码如下所述:<!DOCTYPE html><html><head>
- 学习一些你已经知道的知识也没有什么坏处,是吧?我知道这可能并不一定非常有意义,但是很多时候我们往往知其然而不知其所以然,这会使得事情出现惊人
- 本文实例为大家分享了vue+echarts封装气泡图的具体代码,供大家参考,具体内容如下前端可视化封装气泡图1. html<templ
- 一、安装PythonPython比较稳定的两个版本是Python 3.5和Python 2.7,我用的是Python 2.7,下载地址是:h
- PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称
- 安装redis服务1 下载redis cd /usr/local/ 进入安装目录 wget http://downl
- 企业管理器中没有改数据库名的功能,如果一定要用企业管理器来实现,你可以备份数据库,然后还原,在还原时候可以指定另一个库名,然后再删除旧库就行
- 引言Python 是一个强大的语言,提供了许多内置函数以帮助开发者编写高效、简洁的代码。在这篇文章中,我们将深入探讨三个内置函数:map、f
- 验证码制作#string模块自带数字、字母、特殊字符变量集合,不需要我们手写集合import stringimport randomimpo
- 本文实例为大家分享了SpringBoot整合Mybatis使用Druid数据库连接池的方法,具体内容如下在SpringBoot项目中,增加如