[英]How to impute missing value in time series data with the value of the same day and time from the previous week(day) in python
[英]fill missing data in pandas time series with data from the previous week(day) or day?
我在 pandas dataframe 中有一系列數據,這些數據是我從 CSV 導入的,但是這個文件(每分鍾采樣)一整天都缺少數據。 我想用前一天或一周的前一天(前 7 天)的相同數據替換它們,或者也用前一周或前幾天的每分鍾平均值(7 xn 天前)替換它們。
這應該用 pandas 或 python 來完成,但坦率地說我不知道該怎么做,也許嘗試重新采樣或 groupby,然后以分鍾頻率再次重新采樣? 我不希望所有數據都被更改..
該文件如下所示:
...
------------------------
*previous complete data*
------------------------
2018-01-05 00:00:00,2900.41
2018-01-05 00:01:00,2919.24
2018-01-05 00:02:00,2938.07
..
2018-01-05 23:59:00,2994.57
-------------------
*missing days data*
-------------------
2018-01-08 00:00:00,3118.00
2018-01-08 00:01:00,3118.00
2018-01-08 00:02:00,3125.54
...
-------------------------------
*complete data till end of year*
-------------------------------
在 output 中,我想獲得完整的數據集,用相同的 WEEKDAY(或 DAY BEFORE)值或平均值替換缺失值。 因此,如果我將值替換為數據集前一天的值,則如下所示:
...
------------------------
*previous complete data*
------------------------
2018-01-05 00:00:00,2900.41
2018-01-05 00:01:00,2919.24
2018-01-05 00:02:00,2938.07
...
2018-01-05 23:59:00,2994.57
2018-01-**06** 00:00:00,2900.41
2018-01-**06** 00:01:00,2919.24
2018-01-**06** 00:02:00,2938.07
...
2018-01-**06** 23:59:00,2994.57
......
2018-01-08 00:00:00,3118.00
2018-01-08 00:01:00,3118.00
2018-01-08 00:02:00,3125.54
...
-------------------------------
*complete data till end of year*
-------------------------------
感謝任何可以提供幫助的人。
下面是用前一天的值填充缺失日期時間的代碼。
考慮樣本輸入
date val
0 2018-01-05 00:00:00 2900.41
1 2018-01-05 00:01:00 2919.24
2 2018-01-05 00:02:00 2938.07
3 2018-01-08 00:00:00 3118.00
4 2018-01-08 00:01:00 3118.00
5 2018-01-08 00:02:00 3125.54
現在我們正在嘗試為 2018.01.06 和 2018.01.07 填充相同時間戳的這些值。
df['date'] = pd.to_datetime(df.date)
df = df.set_index('date')
df = df.reindex(pd.date_range('2018-01-05 00:00:00',
'2018-01-08 00:02:00', freq='1 min')
).reset_index().rename(columns={'index':'date'})
df = df.groupby(df.date.dt.time).ffill()
切片 Output 用於輸入時間
date val
0 2018-01-05 00:00:00 2900.41
1 2018-01-05 00:01:00 2919.24
2 2018-01-05 00:02:00 2938.07
1440 2018-01-06 00:00:00 2900.41
1441 2018-01-06 00:01:00 2919.24
1442 2018-01-06 00:02:00 2938.07
2880 2018-01-07 00:00:00 2900.41
2881 2018-01-07 00:01:00 2919.24
2882 2018-01-07 00:02:00 2938.07
解釋
'2018-01-05 00:00:00'
,將結束日期設為'2018-01-08 00:02:00'
,請根據您的要求進行修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.