pandas時間序列空值填充

 1.讀入csv文件

novels_month = pd.read_csv(csv_path)

2.生成時間索引 

#2004-12-1是時間序列開始的時間,並以月爲間隔
rng = pd.date_range('2004-12-1', periods = int((pd.Period(novels_month.iloc[-1,0],'M') - pd.Period('2004-12-1','M')).freqstr[0:-1]), freq = 'M') + pd.Timedelta('1 day')

s = pd.Series(rng)

3.生成一個空的DataFrame

empty = pd.DataFrame([],columns=["update_date","rating_total"])
empty["update_date"] = s
empty

4.填充DataFrame

#這裏是使用的臨近值進行填充
c_list = list(novels_month[0]["update_date"]);
counter = 2 #novels_month的第一個非空值的位置
for i in range(len(empty)):
    f_val = str(pd.Period(empty.iloc[i,0],'M'))
    if f_val in c_list:
        val = novels_month[0].iloc[c_list.index(f_val),1]
        empty.iloc[i,1] =  val
        counter = c_list.index(f_val)
    else:
        #將值填充爲最鄰近的一個值
        empty.iloc[i,1] =  novels_month[0].iloc[counter,1]

5.重新保存csv文件

empty.to_csv(os.path.join(NOVEL_PATH,"test.csv"), index_label="index_label")

6.補充

使用fillna進行值的填充

# 通過fillna填充缺失值 
# https://www.jianshu.com/p/79086fa52803

median = housing["total_bedrooms"].median() sample_incomplete_rows["total_bedrooms"].fillna(median, inplace=True) # option 3 sample_incomplete_rows

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章