Média, Mediana e Moda em Python
Aprenda a calcular média, mediana e moda em Python com numpy e statistics. Exemplos reais, quando usar cada uma e como tratar valores ausentes.
Média, mediana e moda são as três medidas de tendência central fundamentais em estatística. Cada uma descreve o "centro" de um conjunto de dados de forma diferente, e saber qual utilizar — e quando — é uma das primeiras habilidades práticas necessárias para a preparação de dados em machine learning.
Este capítulo aborda:
- O que cada medida significa e como é calculada
- Como calculá-las em Python com
numpye o módulostatistics - Quando preferir uma medida em vez de outra
- Como utilizá-las para preencher valores ausentes (imputação)
O que São Média, Mediana e Moda?
As três medidas resumem um conjunto de dados com um único valor representativo, mas capturam aspectos diferentes da distribuição:
| Medida | Definição | Melhor para |
|---|---|---|
| Média | Soma de todos os valores ÷ quantidade | Dados simétricos com distribuição normal |
| Mediana | Valor central quando ordenado | Dados assimétricos ou com valores extremos |
| Moda | Valor que ocorre com maior frequência | Dados categóricos ou contagens discretas |
Compreender a distribuição de dados ajuda a decidir qual medida é mais adequada para o seu conjunto de dados.
Média
A média (média aritmética) soma todos os valores e divide pela quantidade de valores.
Fórmula: mean = (x₁ + x₂ + … + xₙ) / n
Use numpy.mean() para calculá-la em Python:
Calcular a média de uma lista usando numpy
Quando usar a média
A média funciona bem quando os dados não têm valores extremos e seguem uma distribuição aproximadamente simétrica. Quando há valores extremos, eles puxam a média em sua direção, tornando-a uma representação fraca do valor "típico".
Média vs. mediana com um valor extremo
import numpy as np
salaries = [40000, 42000, 45000, 48000, 50000, 300000]
print(f"Mean: {np.mean(salaries):.0f}") # Output: 87500
print(f"Median: {np.median(salaries):.0f}") # Output: 46500Aqui a média é 87 500 — muito maior do que cinco dos seis salários — porque um valor extremo (300 000) a distorce para cima. A mediana (46 500) representa melhor o que um funcionário típico ganha.
Mediana
A mediana é o valor central de um conjunto de dados ordenado.
- Número ímpar de valores: o elemento do meio.
- Número par de valores: a média dos dois elementos centrais.
Use numpy.median():
Calcular a mediana de uma lista usando numpy
Conjunto com quantidade par — a mediana é a média dos dois valores centrais
import numpy as np
data_even = [1, 3, 5, 7]
print(np.median(data_even)) # Output: 4.0 (average of 3 and 5)Quando usar a mediana
A mediana é a medida de tendência central preferida sempre que os dados são assimétricos ou contêm valores extremos, pois não é afetada por valores muito altos ou baixos. Renda, preços de imóveis e distribuições de idade são exemplos clássicos em que a mediana é mais informativa do que a média.
Moda
A moda é o valor que aparece com maior frequência em um conjunto de dados. Um conjunto de dados pode ter:
- Nenhuma moda — quando todos os valores aparecem o mesmo número de vezes.
- Uma moda (unimodal) — o caso mais comum.
- Múltiplas modas (multimodal) — dois ou mais valores empatam na maior frequência.
Use statistics.mode() da biblioteca padrão:
Calcular a moda de uma lista usando o módulo statistics
Tratando dados multimodais
statistics.mode() lança um StatisticsError no Python 3.7 e versões anteriores quando há empate. No Python 3.8+, retorna a primeira moda encontrada. Para recuperar todas as modas com segurança, use statistics.multimode():
Encontrar todas as modas quando os dados têm múltiplos picos
import statistics
votes = [1, 1, 2, 2, 3]
print(statistics.multimode(votes)) # Output: [1, 2]Moda para dados numéricos
A moda é mais natural para dados categóricos ou inteiros discretos, mas também funciona para dados numéricos contínuos:
import statistics
scores = [10, 20, 20, 30, 40]
print(statistics.mode(scores)) # Output: 20Quando usar a moda
Use a moda ao trabalhar com atributos categóricos (cores, rótulos, categorias de produtos) ou quando precisar saber o item mais popular — por exemplo, o tipo de defeito mais comum em um conjunto de dados de controle de qualidade.
Comparando as Três Medidas
O exemplo abaixo mostra como média, mediana e moda divergem em um conjunto de dados assimétrico. Alguns funcionários mais velhos puxam a média para cima, enquanto a mediana e a moda ficam próximas de onde a maioria dos dados realmente se concentra:
Comparar média, mediana e moda em dados assimétricos
import numpy as np
import statistics
ages = [22, 23, 24, 24, 25, 25, 25, 26, 60]
print(f"Mean: {np.mean(ages):.1f}") # Output: 28.2
print(f"Median: {np.median(ages):.1f}") # Output: 25.0
print(f"Mode: {statistics.mode(ages)}") # Output: 25A média (28.2) é puxada para cima pelo único funcionário de 60 anos. A mediana e a moda (ambas 25) representam com precisão o funcionário típico.
Usando Média e Mediana para Imputar Valores Ausentes
Uma etapa comum de pré-processamento antes de treinar um modelo é substituir valores ausentes (NaN) por uma estatística representativa. Isso é chamado de imputação.
- Imputação pela média — substitui
NaNpela média da coluna. Rápida, mas sensível a valores extremos. - Imputação pela mediana — substitui
NaNpela mediana. Robusta a valores extremos; preferida para atributos assimétricos. - Imputação pela moda — substitui
NaNpelo valor mais frequente. Adequada para colunas categóricas.
Imputação pela média com numpy
import numpy as np
data = [10.0, 20.0, float('nan'), 40.0, 50.0]
mean_val = np.nanmean(data) # ignores NaN: (10+20+40+50)/4 = 30.0
imputed = [mean_val if np.isnan(x) else x for x in data]
print(imputed)
# Output: [10.0, 20.0, 30.0, 40.0, 50.0]No código em produção, normalmente se utiliza o sklearn.impute.SimpleImputer, que se integra de forma limpa às pipelines do scikit-learn e aplica as mesmas estatísticas ajustadas tanto nos conjuntos de treino quanto nos de teste.
Referência Rápida: Qual Medida Escolher
| Cenário | Medida recomendada |
|---|---|
| Dados numéricos com distribuição normal | Média |
| Dados numéricos assimétricos (renda, preços) | Mediana |
| Dados com valores extremos | Mediana |
| Dados categóricos (rótulos, cores) | Moda |
| Imputação de colunas numéricas com valores extremos | Mediana |
| Imputação de colunas categóricas | Moda |
| Encontrar o valor mais popular | Moda |
Tópicos Relacionados
- Distribuição de Dados — entenda distribuições normais, assimétricas e uniformes antes de escolher uma medida.
- Desvio Padrão — meça o quanto seus dados estão dispersos em torno da média.
- Percentil — classifique valores em relação ao restante do conjunto de dados.
- Escala — técnicas de escalonamento de atributos que se baseiam nessas estatísticas.
Conclusão
Média, mediana e moda capturam aspectos diferentes do centro dos seus dados. A média é o padrão mais comum, mas é frágil na presença de valores extremos. A mediana é robusta e deve ser a primeira escolha para distribuições assimétricas. A moda é indispensável para dados categóricos e para consultas rápidas de "valor mais comum". Em machine learning, as três aparecem regularmente na análise exploratória de dados e na imputação de valores ausentes — escolher a correta para cada coluna resulta em atributos mais limpos e melhor desempenho do modelo.