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
Postar um comentário