Guia de tecnologias

Módulo statistics do Python: guia prático

8 min read Python Atualizado 20 Oct 2025
Módulo statistics do Python: guia prático
Módulo statistics do Python: guia prático

Uma calculadora com números e logotipos do Python ao redor.

O módulo statistics do Python fornece funções integradas para médias, dispersão, regressão linear simples e distribuição normal. Use-o para cálculos rápidos, aprendizado e protótipos; migre para NumPy/SciPy/Pandas para conjuntos de dados maiores ou análises avançadas.

Links rápidos

  • O que é o módulo statistics do Python?

  • Estatísticas descritivas

  • Regressão e correlação

  • A distribuição normal

  • E quanto a NumPy, SciPy e Pandas?

Importar o módulo statistics é simples, porque ele faz parte da biblioteca padrão do Python. Ele foi desenhado para cálculos estatísticos casuais e educacionais. Para iniciar em um script ou sessão interativa, basta importar:

import statistics

Em sessões interativas (IPython, Jupyter) você pode importar apenas as funções que usa com:

from statistics import mean, median

Importe funções no namespace principal apenas em sessões interativas. Em scripts, prefira importações qualificadas para evitar colisões com nomes built-in.

O que é o módulo statistics do Python?

O módulo statistics é uma coleção de funções para cálculos estatísticos simples. Ele é parte da biblioteca padrão do Python. Seu foco são necessidades de aprendizado, protótipos e cálculo rápido. Não substitui bibliotecas otimizadas para grandes volumes de dados.

Definição rápida: média, mediana e percentis são medidas de tendência central; desvio padrão e variância medem dispersão.

Importante: o módulo funciona com iteráveis convenientes (listas, tuplas). Em dados muito grandes ou arrays numéricos otimizados, prefira NumPy/Pandas.

Estatísticas descritivas

Estatísticas descritivas no intérprete interativo do Python usando o módulo statistics.

Estatísticas descritivas resumem características principais de um conjunto de dados. Use-as para entender tendência central, dispersão e forma.

  • Tendência central: mean, median, mode.
  • Dispersão: variance, stdev, pstdev, pvariance.
  • Medidas alternativas: geometric_mean, harmonic_mean.
  • Percentis e quartis: quantiles.

Exemplos práticos. Crie uma pequena amostra e calcule medidas básicas:

a = [4, 4, 3, 6]
print(mean(a))          # média aritmética
print(median(a))        # mediana
print(mode(a))          # moda

Saída esperada (valores descritos):

  • mean(a) → 4.25 (soma 17 / 4 elementos)
  • median(a) → 4
  • mode(a) → 4

Observação sobre mean vs fmean:

  • statistics.mean aceita números e devolve o tipo apropriado.
  • statistics.fmean converte internamente para float e é geralmente mais rápida em listas numéricas.

Médias alternativas:

  • geometric_mean(a): útil ao comparar taxas de crescimento.
  • harmonic_mean(a): útil em médias de taxas (por exemplo, velocidades médias com distâncias iguais).

Exemplo de média ponderada com fmean:

weights = [1, 2, 3, 4]
# Para média ponderada simples com fmean, combine a e weights apropriadamente
# statistics não fornece fmean(a, weights) na versão antiga; verifique sua versão.

Observação: verifique a versão do Python para confirmação da API. Em versões modernas, há suporte a fmean e geometric_mean.

Cálculo de dispersão:

from statistics import stdev, pstdev, variance, pvariance

print(stdev(a))   # desvio padrão amostral
print(pstdev(a))  # desvio padrão populacional
print(variance(a))
print(pvariance(a))
  • stdev usa n-1 no denominador (amostral).
  • pstdev usa n no denominador (populacional).

Percentis e quantis:

from statistics import quantiles

# quantiles retorna quartis por padrão
print(quantiles(a))

Min e max padrão:

print(min(a))
print(max(a))

Dicas práticas:

  • Use median quando dados têm outliers fortes.
  • Use geometric_mean para taxas de retorno compostas.
  • Use harmonic_mean para médias de taxas (por exemplo, velocidade média se a distância é constante).

Regressão e correlação

O módulo statistics fornece ferramentas para regressão linear simples (duas variáveis) e correlação.

Regressão linear simples (menor quadrado ordinário):

from statistics import linear_regression

x = [1, 2, 3, 4, 5]
y = [5, 7, 9, 11, 13]

slope, intercept = linear_regression(x, y)
print(slope, intercept)  # slope=2, intercept=3 esperados

A equação da reta fica y = slope * x + intercept. Esta função não gera gráficos e só trata duas variáveis (x e y).

Correlação:

from statistics import correlation

print(correlation(x, y))  # 1.0 para correlação perfeita positiva

A função correlation retorna o coeficiente de correlação de Pearson r. Valores: -1 (perfeita negativa), 0 (sem correlação linear), +1 (perfeita positiva).

Quando usar e quando não:

  • Use statistics.linear_regression para respostas rápidas e quando só houver duas variáveis.
  • Use statsmodels ou scikit-learn para regressões com múltiplos preditores, análise de resíduos, p-valores e diagnósticos.
  • Use Seaborn/Matplotlib para visualização (scatterplots, linhas de ajuste).

A distribuição normal

A distribuição normal (curva em sino) descreve muitas variáveis naturais aproximadas por uma distribuição contínua.

Exemplo: estimativa de altura média de homens adultos em um conjunto hipotético.

import math
from statistics import NormalDist

# exemplo baseado em dados hipotéticos (esquema demonstrativo)
sd = math.sqrt(2690) * 0.3
print(sd)  # ≈ 15.56

men_height = NormalDist(mu=175.1, sigma=sd)

# porcentagem entre 160 e 180 cm
p = men_height.cdf(180) - men_height.cdf(160)
print(p)  # aproximadamente 0.46 → 46%

Interpretação rápida: a função cdf retorna a probabilidade acumulada até um valor. A diferença entre cdf(180) e cdf(160) dá a fração entre esses pontos.

Limitações e cuidado:

  • As suposições de normalidade devem ser verificadas antes de interpretar probabilidades literais.
  • Para dados fortemente assimétricos, resultados podem ser enganosos.

E quanto a NumPy, SciPy, Pandas e statsmodels?

Resumo curto: NumPy/Pandas/SciPy/ statsmodels escalam melhor e fornecem recursos avançados. O módulo statistics é ótimo para aprendizado, protótipos e cálculos rápidos.

Quando escolher cada alternativa:

  • statistics: cálculos simples, sessões interativas, ensino.
  • NumPy: arrays grandes, operações vetoriais de alto desempenho.
  • Pandas: análise tabular, leitura de arquivos, agrupamentos, séries temporais.
  • SciPy: funções estatísticas e numéricas avançadas (distribuições, integração).
  • statsmodels: regressão, modelos estatísticos, inferência, diagnóstico.

Migração típica:

  • Comece com statistics para entender o problema.
  • Ao exigir desempenho e vetorização, converta listas para numpy.array e use numpy.mean, np.std etc.
  • Para análise tabular e operações por coluna, use pandas.DataFrame e métodos .mean(), .std(), .quantile().

Boas práticas e metodologia rápida

Mini-metodologia para análise exploratória com statistics (pequenos conjuntos):

  1. Limpeza básica: remova None/NaN, converta tipos.
  2. Calcule medidas centrais: mean, median, mode.
  3. Calcule dispersão: stdev, variance.
  4. Verifique quantis: quantiles.
  5. Analise correlações simples: correlation.
  6. Faça uma regressão linear simples se necessário: linear_regression.
  7. Interprete resultados com visualizações (Matplotlib/Seaborn) se possível.

Checklist rápido por função:

  • mean/fmean: média aritmética
  • geometric_mean: média geométrica
  • harmonic_mean: média harmônica
  • median: mediana
  • mode: moda
  • stdev/pstdev: desvio padrão (amostral/populacional)
  • variance/pvariance: variância
  • quantiles: quartis/percentis
  • correlation: coeficiente de correlação
  • linear_regression: slope + intercept
  • NormalDist: cdf, pdf, inv_cdf (funções de distribuição)

Cheatsheet: funções úteis e assinaturas

FunçãoO que fazNotas rápidas
mean(data)Média aritméticaRetorna int ou float conforme entrada
fmean(data)Média como floatMais rápido em números
geometric_mean(data)Média geométricaÚtil para taxas de crescimento
harmonic_mean(data)Média harmônicaÚtil para velocidades médias
median(data)MedianaDivide o conjunto ao meio
mode(data)ModaLevanta erro se houver ambiguidade em versões antigas
stdev(data)Desvio padrão amostralUsa n-1
pstdev(data)Desvio padrão populacionalUsa n
variance(data)Variância amostral
pvariance(data)Variância populacional
quantiles(data, n=4)Retorna n-1 cortesPadrão retorna quartis
correlation(x, y)Coef. de correlação de PearsonDuas séries de igual tamanho
linear_regression(x, y)slope, interceptRegressão linear simples
NormalDist(mu, sigma)Objeto de distribuição normalMétodos: cdf, pdf, inv_cdf

Comparação prática: statistics vs NumPy vs Pandas

CritériostatisticsNumPyPandas
Facilidade de usoAlta para tarefas simplesMédiaAlta para dados tabulares
Performance em arrays grandesBaixaAlta (vetorizado)Alta (internamente vetorizado)
Recursos estatísticos avançadosLimitadoMédio (com SciPy)Alto (integra com statsmodels)
VisualizaçãoNenhumaNenhuma diretaIntegra bem com Matplotlib/Seaborn

Quando o módulo statistics falha (contraexemplos)

  • Processamento de milhões de registros: performance fraca.
  • Operações vetoriais complexas (broadcasting): não projetado para isso.
  • Regressões multivariadas, modelos de efeitos mistos, análises de sobrevivência: use statsmodels ou scikit-learn.
  • Séries temporais com alinhamento por índice: use Pandas.

Diretrizes de migração e compatibilidade

  1. Detecte gargalos: se as operações são repetidas em laços, converta para NumPy.
  2. Substitua listas por numpy.array para computação vetorizada.
  3. Use pandas.DataFrame quando precisar de operações por coluna, joins ou leitura de CSV/Excel.
  4. Para funções estatísticas avançadas, combine NumPy/Pandas com SciPy e statsmodels.

Exemplo de migração simples:

# Antes (statistics)
a = [1, 2, 3, 4, 5]
from statistics import mean
m = mean(a)

# Depois (NumPy)
import numpy as np
arr = np.array(a)
m_np = arr.mean()

Checklist por função de papel

Data Scientist:

  • Verifique suposições de distribuição.
  • Use statsmodels para inferência e testes.

Analista/Engenheiro de Dados:

  • Transforme dados para NumPy/Pandas antes de escalar.
  • Automatize pipelines com verificações de nulos e tipos.

Professor ou instrutor:

  • Use statistics para demonstrar conceitos em sala.
  • Mostre a diferença entre média, mediana e moda com exemplos simples.

Iniciante em Python:

  • Comece com statistics para aprender definições estatísticas.
  • Acompanhe com visualizações simples para compreensão.

Exemplo prático passo a passo

  1. Carregue dados pequenos em uma lista.
  2. Limpe valores inválidos (None, strings ).
  3. Calcule mean, median e stdev.
  4. Verifique correlação entre duas listas relacionadas.
  5. Se necessário, transforme em numpy.array para operações vetoriais.

Matriz de riscos & mitigação (qualitativa)

  • Risco: resultados errados por dados faltantes. Mitigação: validação e remoção/inspeção de NaNs.
  • Risco: confundir amostra com população. Mitigação: escolha stdev vs pstdev corretamente.
  • Risco: uso em escala. Mitigação: migrar para NumPy/Pandas.

Exemplo de decisão (Mermaid)

flowchart TD
  A[Preciso de estatísticas rápidas?] -->|Sim, pequeno dataset| B[Use statistics]
  A -->|Não, grande dataset| C[Use NumPy / Pandas]
  C --> D{Precisa de modelos?}
  D -->|Sim| E[statsmodels / scikit-learn]
  D -->|Não| F[SciPy / operações científicas]

Sugestões de visualização social (previews)

  • OG title: Módulo statistics do Python: guia prático
  • OG description: Guia rápido para médias, dispersão, regressão simples e distribuição normal no Python. Exemplos e dicas para quando migrar para NumPy/Pandas.

Versão curta para anúncio

O módulo statistics do Python facilita cálculos estatísticos simples sem instalar nada. Ideal para aprender e prototipar. Quando os dados crescem, migre para NumPy, Pandas ou SciPy.

Resumo final

  • O módulo statistics é ótimo para tarefas rápidas e aprendizado.
  • Para desempenho e modelos avançados, use NumPy/Pandas/SciPy/statsmodels.
  • Sempre valide suposições (normalidade, amostragem) antes de interpretar resultados.

Obrigado por ler. Se quiser, posso gerar exemplos adaptados ao seu conjunto de dados ou uma checklist personalizada para um caso de uso específico.

Autor
Edição

Materiais semelhantes

Ativar feedback háptico no teclado do iPhone
Tutoriais

Ativar feedback háptico no teclado do iPhone

Versão desktop do Facebook no Android
Tutoriais Android

Versão desktop do Facebook no Android

Contornar detecção de AdBlock no YouTube
Tutoriais

Contornar detecção de AdBlock no YouTube

Bloqueadores de rastreadores: Ghostery e Firefox Focus
Privacidade

Bloqueadores de rastreadores: Ghostery e Firefox Focus

AnDoSid no Android: teste de stress de rede
Cibersegurança

AnDoSid no Android: teste de stress de rede

Visualizar documentos online — Guia prático
Produtividade

Visualizar documentos online — Guia prático