Distribuição de Frequência em Python

A distribuição de frequência é uma das ferramentas mais fundamentais da estatística descritiva. Ela organiza e resume os dados, mostrando quantas vezes cada valor (ou intervalo de valores) aparece em um conjunto de observações. Em Python, podemos calcular e visualizar a distribuição de frequência de forma simples, utilizando bibliotecas como pandas, numpy e matplotlib. Neste artigo, você aprenderá passo a passo como construir uma tabela de frequência completa com:

  • Classes (intervalos)
  • Pontos médios
  • Frequência absoluta
  • Frequência acumulada
  • Frequência relativa
  • Frequência relativa acumulada

O que é uma Distribuição de Frequência?

Imagine que você tenha os dados de idades de 20 pessoas de um grupo. Esses valores podem ser muito variados, e olhar diretamente para a lista de números não ajuda muito. A distribuição de frequência agrupa esses dados em classes (intervalos), facilitando a visualização de como os valores se distribuem.


Exemplo Prático:

1. Importar bibliotecas:


# Importar bibliotecas numpy(Matemática), pandas(Análise de Dados) e matplotlib(Gráficos).
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
        

2. Criação de array numpy:


# Exemplo de conjunto de dados: idades de 20 pessoas.
idades = np.array([18, 22, 20, 24, 27, 19, 30, 34, 35, 28, 25, 23, 22, 21, 29, 26, 33, 37, 31, 38])
        

3. Definição do números de classes:


# Quantidade de elementos do array.
n = len(idades)
# Quantidade de classes(Intervaloe).
k = int(np.sqrt(n))
        

4. Determinar amplitude total e intervalos:


# Encontrando o valor mínimo e máximo
minima_idade = min(idades)
maxima_idade = max(idades)

# Amplitude total
amplitude_total = maxima_idade - minima_idade

# Amplitude de classe (intervalo)
amplitude_classe = round(amplitude_total / k)

# Criando os limites de classes
faixas = list(range(minima_idade, maxima_idade + amplitude_classe, amplitude_classe))
        

5. Construir a tabela de frequência:


# Criando as classes e suas frequências
frequencia_absoluta = pd.cut(idades, bins=faixas, right=False).value_counts().sort_index()

# Criando um DataFrame para organizar os resultados
tabela = pd.DataFrame({
    "Classe": [f"[{intervalo.left}-{intervalo.right})" for intervalo in frequencia_absoluta.index],
    "Ponto Médio": [(intervalo.left + intervalo.right) / 2 for intervalo in frequencia_absoluta.index],
    "Frequência Absoluta": frequencia_absoluta.values
})

# Frequência absoluta acumulada
tabela["Frequência Acumulada"] = tabela["Frequência Absoluta"].cumsum()

# Frequência relativa
tabela["Frequência Relativa"] = (tabela["Frequência Absoluta"] / len(idades)).round(3)

# Frequência relativa acumulada
tabela["Freq. Relativa Acumulada"] = tabela["Frequência Relativa"].cumsum().round(3)

tabela

# Saída

	Classes	Ponto Médio	Frequência Absoluta	Frequência Acumulada	Frequência Relativa	Freq. Relativa Acumulada
0	18---22	       20.0	                  4	                   4	               0.20	                    0.20
1	22---26	       24.0	                  5	                   9	               0.25	                    0.45
2	26---30	       28.0	                  3	                  12	               0.15	                    0.60
3	30---34	       32.0	                  3	                  15	               0.15	                    0.75
4	34---38	       36.0	                  5	                  20	               0.25	                    1.00

        

6. Histograma


# Histograma dos resultados.
plt.hist(idades, bins=faixas, edgecolor='black', color='skyblue')
plt.title("Histograma de Idades")
plt.xlabel("Faixas de Idade")
plt.ylabel("Frequência Absoluta")
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()
        

Concusão

A distribuição de frequência é uma técnica essencial para resumir e interpretar grandes conjuntos de dados. Com Python, podemos automatizar completamente esse processo, gerando tanto tabelas quanto gráficos de maneira rápida e eficiente. Além de ser útil em análises estatísticas, esse tipo de tratamento é fundamental em ciência de dados, análise exploratória (EDA) e visualização de informações. Muito obrigado e até a próxima.

Repositório do projeto: https://github.com/jcarlossc/python-frequency-distribution

Comentários

Postagens mais visitadas deste blog