問題:按日期統計的資料,缺失了某天,導致資料不全該怎麼補充日期?
可以用兩種方法實現:
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 列標籤或標籤序列,可選 僅考慮用於標識重複項的某些列,預設情況下使...