Jump to content

Média móvel considerando (3 variáveis) - Python


Douglas Vieira

Postagens Recomendadas

Estou enfrentando um desafio na minha análise de dados e gostaria de pedir a ajuda de vocês. Preciso calcular a média móvel dos últimos 6 meses para cada linha do meu conjunto de dados, considerando o código do material, o tipo de incoterms e a data do pedido. Para isso, é necessário retroceder 180 dias a partir da data do pedido para obter o valor médio dos últimos 6 meses do código de material pelo tipo de incoterms.

 

O objetivo é calcular a média móvel dos valores dos materiais, considerando um período de 6 meses

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • 1 month later...
  • Pessoal da TecnoSpeed

Olá @Douglas Vieira tudo bem?

Entendi, para conseguir lhe ajudar da melhor forma possível vou precisar de mais algumas informações, principalmente relacionado a estrutura dos dados (DataFrame).

Seria possível você enviar um print do seu DataFrame, caso necessário pode ocultar os valores no print ou deixar valores fictícios.  Ai conseguirei lhe auxiliar melhor.

Vou deixar aqui abaixo um exemplo de como obter a média móvel da maneira que tu deseja em um DataFrame.

Segue abaixo uma imagem do DataFrame de teste que criei aqui.

image.png

Segue abaixo o código para obter a média móvel dos últimos 6 meses para essa coluna "Valor".

import pandas as pd
import random
import datetime
from dateutil.relativedelta import relativedelta

def calcular_media_movel(df, data):
    # Diminuir 180 dias da data passada no parametro 
    data_menos_180_dias = data - relativedelta(days = 180)
    
    # Filtrar para obter os dados dos últimos 6 meses baseados na data do paramêtro.
    df_filtrado_6_meses = df[(df['data']>= data_menos_180_dias) & (df['data'] <= data)]
    
    # Obter a media do valor
    media_6_meses = df_filtrado_6_meses['valor'].mean()
    
    # Retornar a média arrendodada 
    return round(media_6_meses,2)
  
# Agora basta aplicarmos essa função a cada linha do dosso DataFrame
df['media_movel'] = df['data'].apply(lambda data: calcular_media_movel(df,data))

print(df)

image.png

Espero que isso lhe auxilie de alguma forma, caso contrário estou a disposição para ajudar no que for preciso.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...