Bom dia Douglas, tudo bem? Espero que sim!
Eu não seu como está o seu conjunto de dados, como está o formato das suas datas, nem se começa do mês Janeiro, mas vou dar aqui uma sugestão. Não é a única forma de fazer mas pode ser útil.
Cria uma lista com o nome dos meses:
meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']
Agora vamos multiplicar essa lista por 37, isso vai fazer com que os valores se repitam 37 vezes, gerando uma lista do tamanho do seu dataset. Você ainda pode automatizar esse processo, caso tenha mais anos, vou mostrar isso mais abaixo.
meses = meses*37
Agora crie uma coluna no seu conjunto de dados com esses meses.
dados['mes_referencia'] = meses
Agora você irá utilizar um groupby, com essa coluna meses, gerando a média.
agrupados = dados.groupby('mes_referencia').mean()
agrupados
Dessa forma você vai obter a média dos valores que você deseja, sendo agrupado pelo mês de referencia. Eu me referi a dados sendo o seu conjunto de dados, mas pode ser que você tenha importado e salvado em uma variável com outro nome. Nesse caso, você pode trocar para o nome que você estiver utilizando.
Aquele 37 que foi multiplicado pelos meses pode ser trocado por (dados.shape[0] / 12), visto que o shape[0] nos dá a quantidade de registros do nosso conjunto de dados, que são todos os meses de todos os anos. Quando você dividir por 12, terá a quantidade de anos do seu conjunto de dados.
Você pode então substituir aquele código por esse e ter algo mais automático, sem precisar contar quantos anos tem no seu conjunto de dados. O símbolo de *= já é o mesmo que fazer meses = meses * dados.shape[0] / 12.
meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']
meses *= dados.shape[0] / 12
Espero que tenha tirado sua dúvida.
Estou à disposição. Bons estudos!