Olá, bom dia a todos, quero fazer a previsão de vendas diárias de um banco de dados e preciso de ajuda =D. Como tenho poucos dados (562 dias) no meu exemplo não queria remover os outliers e sim substituir pela média de vendas diárias de um novo Dataframe 'dados_new' sem os outliers. Se remover os outliers perderei alguns dias de venda e a princípio não achei interessante. Gostaria de usar/aprender a usar o apply e criar uma função lambda para fazer alguma alteração nas linhas/colunas de acordo com alguma condição, acho que estou complicando as coisas rs , mas nesse caso preciso inserir a média dos valores do novo dataframe 'dados_new' nos dias que outliers foram identificados, e estou fazendo dessa forma:
#Criei um DataFrame 'dados_new' sem os outliers para testar se a seleção está ok e gerar uma média sem os outliers e funcionou, resultando em um DataFrame com 48 registros a menos e o valor seria 8040.39 de mean/média. obs: Usei a regra dos quartis para gerar os limites
selecao = (df['VENDA_DIA'] >= limite_inferior) & (df['VENDA_DIA'] <= limite_superior) dados_new = df[selecao]
Agora preciso inserir a média dos valores desse novo "dados_new" (dados_new["VENDA_DIA"].mean()) apenas nos dias que a venda total gerou um Outliers, tentei assim, não deu certo, gostaria de aprender a usar apply + lambda com alguma condição if, nesse caso tentei usar a condição da selecao:
df['VENDA_DIA'].apply(lambda x : dados_new['VENDA_DIA'].mean if (x['VENDA_DIA'] >= limite_inferior) & (x['VENDA_DIA'] <= limite_superior))
Mas retorna erro:
df['VENDA_DIA'].apply(lambda x : dados_new['VENDA_DIA'].mean if (x['VENDA_DIA'] >= limite_inferior) & (x['VENDA_DIA'] <= limite_superior)) ^ SyntaxError: invalid syntax
Tenho o df original com 562 registro e o dados_new sem outiliers com 514, preciso criar um DataFrame com os 562 linhas onde os valores outliers sejam substituídos pela média. Desde já agradeço a ajuda e paciência, muito obrigado e bora estudar.