Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Sugestão] Método .mad()

Olá!
Durante a aula foi utilizado o método .mad() do pandas para calcular o desvio médio absoluto. Porém, ao tentar reproduzir o código nas versões mais recentes da biblioteca, percebi que o método foi removido, resultando no erro:

AttributeError: 'Series' object has no attribute 'mad'

Com isso, atualmente é necessário calcular o desvio médio absoluto manualmente, por exemplo:

desvio_medio_absoluto = (
    serie - serie.mean()
).abs().mean()

Talvez seja interessante atualizar esse trecho da aula ou adicionar uma observação sobre a remoção do método nas versões mais recentes do pandas, para evitar dúvidas entre os alunos.

1 resposta

Olá, Igor. Como vai?

Sua contribuição é extremamente valiosa para a comunidade! A biblioteca Pandas passa por constantes atualizações e o método mad() foi de fato descontinuado e removido nas versões mais recentes (a partir da versão 2.0). Trazer essa alternativa demonstra uma excelente visão prática e proatividade de sua parte.

O cálculo manual que você compartilhou está perfeitamente correto e reflete exatamente a definição matemática do Desvio Médio Absoluto. Para complementar o seu raciocínio e ajudar ainda mais os colegas que passarem por este tópico, podemos formalizar esse comportamento tanto com o Pandas puro quanto utilizando a biblioteca NumPy, que é amplamente usada em Data Science.

Alternativa 1: Utilizando Pandas Puro

A lógica que você apresentou é a forma mais limpa de substituir o método antigo:

desvio_medio_absoluto = (dados - dados.mean()).abs().mean()

O que este código faz por trás dos panos:

  1. dados - dados.mean() calcula a distância de cada ponto em relação à média (os desvios).
  2. .abs() transforma todos os valores em positivos, eliminando o efeito de desvios negativos que se anulariam.
  3. .mean() calcula a média dessas distâncias absolutas.

Alternativa 2: Utilizando a biblioteca NumPy

Caso o aluno prefira trabalhar com arrays do NumPy ou queira uma alternativa de alta performance, podemos fazer a mesma operação dessa forma:

import numpy as np

desvio_medio_absoluto = np.mean(np.absolute(dados - np.mean(dados)))

Boas práticas: Quando estamos lidando com conjuntos de dados que contêm valores nulos (NaN), o Pandas por padrão ignora esses valores ao calcular a média. A sua solução já trata isso automaticamente, o que é uma grande vantagem.

Com certeza a equipe de instrutores ficará atenta a esse ponto para atualizar as notas de aula. Parabéns por compartilhar a solução com a gente!

Espero que possa ter lhe ajudado!