日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python時(shí)間序列缺失值的處理方法(日期缺失填充)

系統(tǒng) 2114 0

前言

因近期進(jìn)行時(shí)間序列分析時(shí)遇到了數(shù)據(jù)預(yù)處理中的缺失值處理問(wèn)題,其中日期缺失和填充在網(wǎng)上沒(méi)有找到較好較全資料,耗費(fèi)了我一晚上工作時(shí)間,所以下面我對(duì)這次時(shí)間序列缺失值處理學(xué)習(xí)做了以下小結(jié)以供之后同行們參考指正。

時(shí)間序列缺失值處理

一、編程前準(zhǔn)備

收集時(shí)間序列數(shù)據(jù),相信看這篇博客的各位已經(jīng)完成了這步。

需要安裝pandas模塊,并利用Python的Lib文件夾自帶的datetime庫(kù)(當(dāng)時(shí)我因?yàn)樵赑ycharm環(huán)境中沒(méi)看到datetime模塊又去安裝了DateTime模塊并看了DateTime英文文檔,發(fā)現(xiàn)這個(gè)對(duì)象的參數(shù)并不能滿足時(shí)間序列缺失填充的需求,所以又下了datetime2模塊,在import? datetime2時(shí)發(fā)現(xiàn)Python自帶datetime庫(kù),血虐啊,真是對(duì)菜鳥(niǎo)不要太善良)。

二、編程與講解

因?yàn)槲业臄?shù)據(jù)不是普遍形式的時(shí)間序列形式,而下面程序是我按普遍形式時(shí)間序列數(shù)據(jù)改編的,與我數(shù)據(jù)不適用,所以可能存在問(wèn)題,但是程序所用步驟和程序原理都是與原程序相同,對(duì)于初步接觸的同行具有一定的借鑒和參考意義。

            
import pandas as pd
import datetime
def load_Data():
  #加載數(shù)據(jù)
  df0 = pd.read_csv("Path/power.csv",index_col='user_id')
  df0['record_date'] = pd.to_datetime(df0['record_date'])
  return df0
 
#把datetime轉(zhuǎn)成字符串
def datetime_toString(dt):
  return dt.strftime("%Y-%m-%d")
 
#把字符串轉(zhuǎn)成datetime
def string_toDatetime(string):
  return datetime.strptime(string, "%Y-%m-%d")
 
#缺失值處理,插值替換
def data_Full():
  df1 = load_Data()  #加載數(shù)據(jù)
  date_start = df1.iloc[0, 0] #初始時(shí)間
  df1_date = df1['record_date'].tolist() #數(shù)據(jù)日期轉(zhuǎn)為列表
  df1_data = df1[ 'value'].tolist()  #數(shù)據(jù)值轉(zhuǎn)為列表
  act = 365    #實(shí)際期望日期序列長(zhǎng)度
  for j in range(0, len(df1_date)):
    if len(df1_date) < act:
      date0 = date_start
      date_s = datetime_toString(date0)  #日期轉(zhuǎn)換為字符串類(lèi)型,使日期可進(jìn)行邏輯比較
      date_i = df1_date[j]  #順序選取數(shù)據(jù)中日期列表里對(duì)應(yīng)各日期
      date_is = datetime_toString(date_i)
      while date_is != date_s:  #如數(shù)據(jù)中日期列表與期望日期序列不相等,即存在缺失值執(zhí)行while程序
        nada = (df1_data[j] + df1_data[j+1]) / 2  #計(jì)算缺失處左右相鄰插值
        adda = [date0, nada]  
        date_da = pd.DataFrame(adda).T
        date_da.columns = df1.columns
        df1 = pd.concat([df1, date_da]) #將缺失日期加入數(shù)據(jù)列表中
        date0 += datetime.timedelta(days=1) #日期加一
        date_s = datetime_toString(date0)  #日期字符串轉(zhuǎn)日期時(shí)間類(lèi)型
      date0 += datetime.timedelta(days=1) #日期加一
      date_s = datetime_toString(date0)  #日期字符串轉(zhuǎn)日期時(shí)間類(lèi)型
  df1 = df1.sort_values(by=['record_date'])
  return df1
          

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 白城市| 昭平县| 宿松县| 遂川县| 循化| 东乡县| 贵阳市| 鹤山市| 湖北省| 彭泽县| 兴化市| 改则县| 衡山县| 漯河市| 彰化市| 乐至县| 方正县| 秦安县| 即墨市| 韩城市| 焉耆| 蛟河市| 桂平市| 贵南县| 西城区| 建宁县| 罗田县| 车险| 广宗县| 汤原县| 海宁市| 云龙县| 新巴尔虎右旗| 曲阜市| 临夏市| 德昌县| 曲松县| 金堂县| 洮南市| 南丹县| 碌曲县|