#python #pandas
#python #pandas
Вопрос:
У меня есть dataframe / series, содержащий данные с ежечасной выборкой за пару лет. Я хотел бы суммировать значения за каждый месяц, а затем вычислить среднее значение этих месячных итогов за все годы. Я могу получить многоиндексный фрейм данных / серию итогов, используя:
df.groupby([df.index.year, df.index.month]).sum()
Date amp; Time Date amp; Time
2016 3 220.246292
4 736.204574
5 683.240291
6 566.693919
7 948.116766
8 761.214823
9 735.168033
10 771.210572
11 542.314915
12 434.467037
2017 1 728.983901
2 639.787918
3 709.944521
4 704.610437
5 685.729297
6 760.175060
7 856.928659
Но я не знаю, как затем объединить данные, чтобы получить средства.
Возможно, я тоже ошибаюсь. Также не уверен, что я очень хорошо сформулировал вопрос.
Ответ №1:
Я думаю, вам нужно mean
за годы — так на первый уровень:
df.groupby([df.index.year, df.index.month]).sum().mean(level=0)
Комментарии:
1. Спасибо. Думаю, мне нужно узнать об использовании level.
Ответ №2:
Вы можете использовать groupby
дважды, один раз, чтобы получить месячную сумму, один раз, чтобы получить среднее значение месячной суммы:
(df.groupby(pd.Grouper(freq='M')).sum()
.groupby(pd.Grouper(freq='Y')).mean()
)