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:
dados - dados.mean() calcula a distância de cada ponto em relação à média (os desvios)..abs() transforma todos os valores em positivos, eliminando o efeito de desvios negativos que se anulariam..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!