Python处理时间序列缺失值

import pandas as pd
import datetime


def load_Data():
# 加载数据
df0 = pd.read_csv(r'D:PythonCharmPythonInfos.csv')
df0['time'] = pd.to_datetime(df0['time'])
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() # 加载数据
# a = df1.iloc[len(df1)-7, 0]
date_start = df1.iloc[len(df1)-1, 0] # 初始时间
df1_date = df1['time'].tolist() # 数据日期转为列表
df1_data = df1['price'].tolist() # 数据值转为列表
info = []
#df1_date = list(reversed(df1_date))
#df1_data = list(reversed(df1_data))
times = ''
act = 365 * 26 # 实际期望日期序列长度
for j in range(0, len(df1_date)):
if len(info) < 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]) # 将前面的值直接赋值给缺失的值
info.append(pd.DataFrame({'time': date0, 'price': nada}, index=[0]))
date0 += datetime.timedelta(days=1) # 日期加一
date_s = datetime_toString(date0) # 日期字符串转日期时间类型
date0 += datetime.timedelta(days=1) # 日期加一
date_s = datetime_toString(date0) # 日期字符串转日期时间类型
info.append(pd.DataFrame({'time': date_is, 'price': df1_data[j]}, index=[0]))
date_start = date0
info = pd.concat(info, ignore_index=True)
return info


d = data_Full()
print(d.columns)
print(len(d))
message = []
for time, price in d.values:
message.append(pd.DataFrame({'time': time, 'price': price}, index=[0]))
qhdInfo = pd.concat(message, ignore_index=True)
qhdInfo.to_csv('info.csv', index=False)
没处理之前数据



处理之后的数据

原文地址:https://www.cnblogs.com/lhd1998/p/13601526.html