• 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)
    没处理之前数据



    处理之后的数据

  • 相关阅读:
    es6学习之async和await关键字
    杂七杂八 2022年我今后的学习方向
    常见问题总结 某糠vms密码恢复
    软件开发 小程序分类
    Linux 命令 nproc
    java类初始化、实例初始化、方法重写、重载
    java方法的参数传递机制
    java的序列化与反序列化原理
    ThreadPoolExecutor线程池
    固定数据条的最大值
  • 原文地址:https://www.cnblogs.com/lhd1998/p/13601526.html
Copyright © 2020-2023  润新知