Análise Estatística Descritiva com df.describe() no Pandas

O método df.describe() é uma das funções mais úteis e frequentemente utilizadas na biblioteca Pandas para Python. Ele fornece um resumo estatístico rápido das colunas numéricas e de objeto em um DataFrame, permitindo uma compreensão rápida da distribuição e características dos dados.

O que é df.describe()?

O método describe() gera estatísticas descritivas que resumem a tendência central, dispersão e forma da distribuição de um conjunto de dados, excluindo valores NaN.

Por padrão, o método fornece:

  • Para dados numéricos: count, mean, std, min, quartis (25%, 50%, 75%) e max
  • Para dados categóricos/object: count, unique, top (valor mais frequente) e freq (frequência do top)

Exemplo básico de uso:

Em R, a função equivalente seria summary() aplicada a um data frame:

Estatísticas Fornecidas pelo describe()

Para Variáveis Numéricas

Para colunas numéricas, describe() retorna oito medidas estatísticas principais:

Medidas de Posição:

  • count: Quantidade de valores não nulos
  • mean: Média aritmética dos valores
  • min: Valor mínimo
  • max: Valor máximo

Medidas de Dispersão:

  • std: Desvio padrão (medida de dispersão)
  • 25%: Primeiro quartil (Q1)
  • 50%: Mediana (segundo quartil, Q2)
  • 75%: Terceiro quartil (Q3)

Interpretação Matemática:

As medidas de posição e dispersão podem ser representadas matematicamente:

\(\text{Média} (\mu) = \frac{1}{n}\sum_{i=1}^{n}x_i\) \(\text{Desvio Padrão} (\sigma) = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i – \mu)^2}\) \(\text{Mediana} = \begin{cases} x_{\frac{n+1}{2}} & \text{se n é ímpar} \\ \frac{x_{\frac{n}{2}} + x_{\frac{n}{2}+1}}{2} & \text{se n é par} \end{cases}\)

Para Variáveis Categóricas

Para colunas do tipo object (strings) ou categóricas, describe() retorna quatro medidas diferentes:

Medidas de Frequência:

  • count: Quantidade de valores não nulos
  • unique: Número de valores únicos

Medidas de Moda:

  • top: Valor mais frequente (moda)
  • freq: Frequência do valor mais comum

Exemplo com dados categóricos:

Em R, para obter estatísticas de variáveis categóricas, usamos table() ou funções específicas:

Relação entre as Medidas Estatísticas

As estatísticas fornecidas pelo describe() estão inter-relacionadas e fornecem uma visão abrangente da distribuição dos dados:

\(\text{Intervalo Interquartil (IQR)} = Q_3 – Q_1\)

O IQR é uma medida de dispersão robusta a outliers, diferentemente do desvio padrão.

Podemos detectar outliers usando a regra:

Outlier inferior < \(Q_1\) - 1.5 IQR e

Outlier superior > \(Q_3\) + 1.5 IQR

O coeficiente de variação (CV) é outra medida útil:

\(CV = \frac{\sigma}{\mu} \times 100\%\)

Que representa a dispersão relativa dos dados em relação à média.

Quando e Como Usar df.describe()

Análise Exploratória Inicial

Use describe() como uma das primeiras etapas na análise de dados para obter uma visão geral rápida das variáveis numéricas.

Identificação de Outliers

Use os quartis e valores min/max para identificar possíveis outliers nos dados.

Comparação entre Grupos

Use describe() em conjunto com groupby() para comparar estatísticas entre diferentes categorias.

Em R, usamos funções do pacote dplyr para operações similares:

Personalizando o df.describe()

O método describe() aceita vários parâmetros para personalizar sua saída:

Parâmetros Principais:

  • percentiles: Lista de percentis para incluir (padrão: [.25, .5, .75])
  • include: Tipos de dados a incluir (padrão: apenas numéricos)
  • exclude: Tipos de dados a excluir
  • datetime_is_numeric: Tratar datetime como numérico (padrão: True)

Exemplos de personalização:

⚠️ Limitações e Considerações

Embora describe() seja extremamente útil, é importante entender suas limitações:

  • Não mostra a assimetria (skewness) ou curtose da distribuição
  • Não fornece informações sobre missing values além do count
  • Para uma análise completa, é necessário complementar com outras técnicas
  • Pode ser enganoso para distribuições multimodais ou assimétricas

Conclusão

O método df.describe() é uma ferramenta poderosa para análise exploratória de dados em Python com Pandas. Ele fornece um resumo estatístico rápido que ajuda a entender a distribuição, tendência central e dispersão dos dados.

Lembre-se de que describe() é apenas o ponto de partida para a análise de dados. Para uma compreensão completa, complemente essas estatísticas com visualizações, testes de hipóteses e análises mais profundas específicas do seu domínio de aplicação.

Referências