将一年重新采样为平均一天

Resample one year down to one average day

我有一年的数据,按小时计算。数据如下所示:

2020-01-01 01:00:00  3
2020-01-01 02:00:00  4
2020-01-01 03:00:00  2
2020-01-01 04:00:00  3
2020-01-01 05:00:00  6
2020-01-01 06:00:00  8
2020-01-01 07:00:00  5
2020-01-01 08:00:00  9
...
2020-12-31 20:00:00  8
2020-12-31 21:00:00  4
2020-12-31 22:00:00  7
2020-12-31 23:00:00  2

根据这些数据,我想确定一年中的平均天数。结果

01:00:00 --> 从 1 点开始的所有值的平均值
02:00:00 --> 从 2 点开始的所有值的平均值
...

新答案:

如果你想要每小时的平均值:

df['date'] = pd.to_datetime(df['date'])
df.groupby(df['date'].dt.hour)['value'].mean()

输出:

hour value
1     3
2     4
3     2
4     3
5     6
6     8
7     5
8     9
20    8
21    4
22    7
23    2

注意。输出与此处的输入相同,因为没有足够的数据来计算平均值

旧答案:

您的问题不是很清楚,我想您想要的是每天 的平均值。我进一步假设您有两列名为“日期”和“值”:

                   date  value
0   2020-01-01 01:00:00      3
1   2020-01-01 02:00:00      4
2   2020-01-01 03:00:00      2
3   2020-01-01 04:00:00      3
4   2020-01-01 05:00:00      6
5   2020-01-01 06:00:00      8
6   2020-01-01 07:00:00      5
7   2020-01-01 08:00:00      9
8   2020-12-31 20:00:00      8
9   2020-12-31 21:00:00      4
10  2020-12-31 22:00:00      7
11  2020-12-31 23:00:00      2

可以转换成datetime类型,用dt.floor取日底值,groupby取底值取均值:

df['date'] = pd.to_datetime(df['date'])
df.groupby(df['date'].dt.floor('d'))['value'].mean()

输出:

2020-01-01    5.00
2020-12-31    5.25