【发布时间】:2021-06-30 00:47:13
【问题描述】:
我有以下三个数据框:
df1:
date_time system_load
01-01-2017 00:00:00 208111
01-01-2017 01:00:00 208311
01-01-2017 02:00:00 208311
01-01-2017 03:00:00 208011
............... ...
31-12-2017 20:00:00 208611
31-12-2017 21:00:00 208411
31-12-2017 22:00:00 208111
31-12-2017 23:00:00 208911
df1的系统负载值没有问题。
df2:
date_time system_load
01-01-2018 00:00:00 208111
01-01-2018 01:00:00 208311
01-01-2018 02:00:00 208311
01-01-2018 03:00:00 208011
............... ...
31-12-2018 20:00:00 209611
31-12-2018 21:00:00 209411
31-12-2018 22:00:00 209111
31-12-2018 23:00:00 209911
从 06-03-2018 20:00:00 到 24-10-2018 22:00:00 丢失 df2 的系统负载值。
df3:
date_time system_load
01-01-2019 00:00:00 309119
01-01-2019 01:00:00 309391
01-01-2019 02:00:00 309811
01-01-2019 03:00:00 309711
............... ...
31-12-2019 20:00:00 309611
31-12-2019 21:00:00 309411
31-12-2019 22:00:00 309111
31-12-2019 23:00:00 309911
df3的系统负载值没有问题。
我想要的是使用相应的 df1 和 df3 每小时记录(06-03-2017 20:00:00 直到 24-10-2017 22:00:00)以适当的方式插入 df2 中错过的每小时记录和 06-03-2019 20:00:00 至 24-10-2019 22:00:00 分别)。根据“Pierre D”的宝贵意见,我附上了我的缩放数据。
【问题讨论】:
-
您有具体的策略吗?当数据缺失时,您可以取相邻年份的平均值(精确为 52 周,以反映每周的季节性)。但是,您的数据样本表明 2019 年的平均值远大于 2018 年,而 2018 年的平均值与 2017 年大致相同,因此纵向变化 (diff) 与总体趋势相结合可能是更好的方法。重要的是,这完全取决于您要对结果数据做什么。
-
感谢“Pierre D”的回复。您的想法很棒,但是考虑到 df1 值 > df2 值 > df3 值,我该如何使用 python pandas 或 python 中的任何方式来做到这一点。
-
嗯,这只是一个问题。基本上,您需要了解一般的时间序列分布(基于有限的样本数据和术语“system_load”,可能类似于泊松分布,平均逐年缓慢增加)。由于某些日历日期,可能会有特殊事件。无论如何,一旦您了解了时间序列的一般特征,您就可以为缺失的日期生成合理的数据。所以我的问题是:从统计学上讲,您对数据还有什么了解?
-
而更重要的问题是:你想对结果做什么?让别人误以为你一开始就没有缺失数据?...训练一个机器学习模型(然后注意窥视偏差)?
-
感谢“Pierre D”,我正在尝试绘制我的数据并编辑我的问题,以便给我您的意见。
标签: pandas dataframe time-series