【问题标题】:Finding average data per hour based on the day of the week to simulate data for missing days根据星期几查找每小时平均数据,以模拟缺失日期的数据
【发布时间】:2020-03-18 19:21:16
【问题描述】:

我有一组从 2019 年 2 月 7 日到 2019 年 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

以及从 2019 年 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 日之间没有可用的数据。 因此,我想在 2019 年 2 月 17 日到 2019 年 3 月 1 日之间找到基于星期几的小时平均数据来模拟丢失的小时数据

换句话说,使用一周中同一天的所有每小时数据,并找到当天每小时的平均值。 2019 年 2 月 17 日至 19 年 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

有人知道如何在 pandas 中获得这个吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我会通过添加一个临时列“day_of_week”来解决这个问题。您可以使用 pandas 轻松生成此值:

    df['day_of_week'] = df.t.dt.dayofweek
    

    (pandas.DatetimeIndex.dayofweek documentation)

    接下来,您需要生成每个工作日的平均值:

    daily_mean = df.groupby(by='day_of_week').mean()
    

    pandas.DataFrame.groupby documentation

    从这里开始接下来的步骤取决于您需要哪些值。 daily_means 变量包含您需要的所有平均值。

    下一步可能是通过生成日期值、生成相应的工作日并插入生成的平均值来创建缺失的行。

    【讨论】:

    • 谢谢。但是,我不是在寻找每个工作日的平均值。我正在寻找每个工作日每小时的平均值。我可以知道如何实现吗?
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 2014-07-07
    • 2021-05-06
    • 1970-01-01
    • 2021-04-23
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多