[英]Finding average data per hour based on the day of the week to simulate data for missing days
我有一组从 19 年 2 月 7 日到 19 年 2 月 17 日的每小时数据:
t v_amm v_alc v_no2
0 2019-02-07 08:00:00+00:00 0.320000 0.344000 1.612000
1 2019-02-07 09:00:00+00:00 0.322889 0.391778 1.580889
2 2019-02-07 10:00:00+00:00 0.209375 0.325208 2.371250
...
251 2019-02-17 19:00:00+00:00 1.082041 0.652041 0.967143
252 2019-02-17 20:00:00+00:00 0.936923 0.598654 1.048077
253 2019-02-17 21:00:00+00:00 0.652553 0.499574 1.184894
以及从 19 年 3 月 1 日到 2019 年 3 月 11 日的另一组类似的每小时数据:
t v_amm v_alc v_no2
0 2019-03-01 00:00:00+00:00 0.428222 0.384444 1.288222
1 2019-03-01 01:00:00+00:00 0.398600 0.359600 1.325800
2 2019-03-01 02:00:00+00:00 0.365682 0.352273 1.360000
...
244 2019-03-11 04:00:00+00:00 0.444048 0.415238 1.265000
245 2019-03-11 05:00:00+00:00 0.590698 0.591395 1.156977
246 2019-03-11 06:00:00+00:00 0.497872 0.465319 1.228298
但是,在2019 年 2 月 17 日和 2019 年 3 月 1 日之间没有可用数据。 因此,我想根据一周中的某天找到每小时平均数据,以模拟19 年 2 月 17 日和 2019 年 3 月 1 日之间缺失的每小时数据。
换句话说,使用一周中同一天的所有小时数据并找到当天每个小时的平均值。 2019 年 2 月 17 日至 2019 年 3 月 1 日的预期输出类似于:
t v_amm v_alc v_no2
0 2019-02-17 22:00:00+00:00 1.082041 0.652041 0.967143
1 2019-02-17 23:00:00+00:00 0.936923 0.598654 1.048077
2 2019-02-18 00:00:00+00:00 0.652553 0.499574 1.184894
...
250 2019-02-29 21:00:00+00:00 0.428222 0.384444 1.288222
251 2019-02-29 22:00:00+00:00 0.398600 0.359600 1.325800
252 2019-02-29 23:00:00+00:00 0.365682 0.352273 1.360000
有谁知道如何在熊猫中获得这个?
我会通过添加一个临时列“day_of_week”来解决这个问题。 您可以使用 pandas 轻松生成此值:
df['day_of_week'] = df.t.dt.dayofweek
( pandas.DatetimeIndex.dayofweek 文档)
接下来,您需要生成每个工作日的平均值:
daily_mean = df.groupby(by='day_of_week').mean()
从这里开始,接下来的步骤取决于您需要的值。 Daily_means 变量具有您需要的所有平均值。
下一步可能是通过生成日期值、生成相应的工作日并插入生成的平均值来创建缺失的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.