22 Pandas怎麼處理日期索引的缺失

2021-10-16 17:15:45 字數 3769 閱讀 8490

問題:按日期統計的資料,缺失了某天,導致資料不全該怎麼補充日期?

可以用兩種方法實現:

1、dataframe.reindex,調整dataframe的索引以適應新的索引

2、dataframe.resample,可以對時間序列重取樣,支援補充缺失值

import pandas as pd

%matplotlib inline

df = pd.dataframe(

)df

pdate

pvuv

02019-12-01

10010

12019-12-02

20020

22019-12-04

40040

32019-12-05

50050

df.set_index(

"pdate"

).plot(

)

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-tjtsayqg-1611063433578)(output_4_1.png)]

問題,這裡缺失了2019-12-03的資料,導致資料不全該怎麼補充?

df_date = df.set_index(

"pdate"

)df_date

pvuv

pdate

2019-12-01

10010

2019-12-02

20020

2019-12-04

40040

2019-12-05

50050

df_date.index
index(['2019-12-01', '2019-12-02', '2019-12-04', '2019-12-05'], dtype='object', name='pdate')
# 將df的索引設定為日期索引

df_date = df_date.set_index(pd.to_datetime(df_date.index)

)df_date

pvuv

pdate

2019-12-01

10010

2019-12-02

20020

2019-12-04

40040

2019-12-05

50050

df_date.index
datetimeindex(['2019-12-01', '2019-12-02', '2019-12-04', '2019-12-05'], dtype='datetime64[ns]', name='pdate', freq=none)
# 生成完整的日期序列

pdates = pd.date_range(start=

"2019-12-01"

, end=

"2019-12-05"

)pdates

datetimeindex(['2019-12-01', '2019-12-02', '2019-12-03', '2019-12-04',

'2019-12-05'],

dtype='datetime64[ns]', freq='d')

df_date_new = df_date.reindex(pdates, fill_value=0)

df_date_new

pvuv

2019-12-01

10010

2019-12-02

20020

2019-12-0300

2019-12-04

40040

2019-12-05

50050

df_date_new.plot(

)

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-bmbjl4rt-1611063433584)(output_15_1.png)]

df

pdate

pvuv

02019-12-01

10010

12019-12-02

20020

22019-12-04

40040

32019-12-05

50050

df_new2 = df.set_index(pd.to_datetime(df[

"pdate"])

).drop(

"pdate"

, axis=1)

df_new2

pvuv

pdate

2019-12-01

10010

2019-12-02

20020

2019-12-04

40040

2019-12-05

50050

df_new2.index
datetimeindex(['2019-12-01', '2019-12-02', '2019-12-04', '2019-12-05'], dtype='datetime64[ns]', name='pdate', freq=none)
resample的含義:

改變資料的時間頻率,比如把天資料變成月份,或者把小時資料變成分鐘級別

resample的語法:

(dataframe or series).resample(arguments).(aggregate function)

resample的取樣規則引數:

# 由於取樣會讓區間變成乙個值,所以需要指定mean等取樣值的設定方法

df_new2 = df_new2.resample(

"d")

.mean(

).fillna(0)

df_new2

pvuv

pdate

2019-12-01

100.0

10.0

2019-12-02

200.0

20.0

2019-12-03

0.00.0

2019-12-04

400.0

40.0

2019-12-05

500.0

50.0

# resample的使用方式

df_new2.resample(

"2d"

).mean(

)

pvuv

pdate

2019-12-01

150.0

15.0

2019-12-03

200.0

20.0

2019-12-05

500.0

50.0

pandas處理日期時間

遇到的問題 乙個資料表的兩列,原始資料為float64,如20150101.0 需要求兩個日期的差值,判斷是否超過多少天 9 一些基本的知識 檢視date列有多少行的缺失值 off train date isnull sum 選擇任意行出現空值的資料 off train off train.t.is...

pandas處理日期缺失

兩種方法實現 1 dataframe.reindex 調整dataframe的索引以適應新的索引 2 dataframe.resample,可以對時間序列重新取樣,支援補充缺失值 import pandas as pd import os matplotlib inlinedf pd.datafra...

pandas 22 資料去重處理

資料去重可以使用duplicated 和drop duplicates 兩個方法。dataframe.duplicated subset none,keep first 返回boolean series表示重複行 引數 subset 列標籤或標籤序列,可選 僅考慮用於標識重複項的某些列,預設情況下使...