Criando histogramas e diagramas de frequência com SQL

Wesley Muller
3 min readOct 4, 2023

--

Imagem de rawpixel.com no Freepik

Certamente você já viu um histograma e um diagrama de frequência na vida e, se está iniciando na área de dados ou não tem tanta intimidade com visualizações, pode ter confundido essa ferramenta com um gráfico de barras.

Essas ferramentas consistem em uma etapa muito importante na análise exploratória de dados e nesse artigo vou te explicar o porque e te mostrar como construí-los usando o SQL.

Na verdade, acredito que a análise das distribuições de frequências sejam o ponto de partida das suas análises.

Mas porquê usar essas ferramentas gráficas?

Elas são interessantes para estudar algumas características dos conjuntos de dados:

  • como está a distribuição dos dados;
  • qual o intervalo de valores e com qual frequência esse intervalo ocorre;
  • existem valores inesperados? Com qual frequência eles ocorrem?
  • valores nulos?
  • e valores negativos?

Perceba, essas informações são muito importantes e te ajudam a iniciar a exploração de uma base.

E a diferença entre eles é que o diagrama de frequências é utilizado para analisar dados categóricos e o histograma permite a análise de dados contínuos.

E como fazemos isso no SQL?

  1. Diagrama de Frequências
Diagrama de frequência — dados fictícios

O código que nos auxiliaria a montar essa visualização é muito simples. Trata-se apenas de uma contagem:

SELECT education
,count(customer_id) as quantidade

FROM customers

GROUP BY 1

Como dito anteriormente, as frequências são agrupadas nas categorias do grau de escolaridade dos clientes.

2. Histograma

a) histograma básico

O exemplo da figura abaixo, traz uma clássica representação de um histograma básico que mostra a distribuição de frequências das idades de um grupo de clientes.

Histograma de idade dos clientes — dados fictícios

O código SQL para possibilitar essa visualização também seria muito básico e observe que, o gráfico se assemelha muito a um gráfico de barras.

SELECT age
,COUNT(customer_id) as quantidade

FROM customers

GROUP BY 1

Observe também, que aqui, os valores das frequências são agrupados de acordo com a idade das pessoas.

b) bin size

Para valores contínuos, criar intervalos de valores agrupados é muito interessante. Esses intervalos são chamados de bins.

Considere uma situação em que existe vários valores possíveis de observações, nessa situação a visualização gráfica se tornaria muito difícil. Na imagem abaixo, vemos como fica um histograma com dados contínuos agrupados de forma discreta.

Histograma de frequência — dados fictícios

O tamanho do intervalo da faixa compreendida por cada bin pode ser determinado de forma que tenham uma largura semelhante ou, ainda, contendo um número de registros parecido e a forma mais usual: contendo um significado específico ao negócio.

Caso nenhuma dessas formas faça sentido, existe uma regra empírica chamada Regra de Sturges que pode ser utilizada. Nesse link, você pode acessar como calcular a regra.

c) código SQL — tamanho dos bins

Utilizamos então a associação de instruções CASE WHEN para determinar o tamanho dos bins. Elas permitem a avaliação de uma lógica condicional, que pode ser de igualdade, diferença ou outra condição lógica.

SELECT
CASE WHEN amount <1 then 'a.Menor que 1 real'
WHEN amount>=1 and amount <10 then 'b.De 1 a 10 reais'
WHEN amount>=10 and amount <50 then 'c.De 10 a 50 reais'
WHEN amount>=50 and amount <100 then 'd.De 50 a 100 reais'
WHEN amount>=100 and amount <150 then 'e.De 100 a 150 reais'
WHEN amount>150 then 'f.Acima de 750 reais' end as hist
,COUNT(customer_id) as freq
from transactions
group by 1

É possível notar que no código de exemplo, os intervalos não seguem um tamanho proporcional para cada largura.

Mas isso é tudo pessoal!!!

Espero muito que esse texto possa enriquecer suas análises e, de alguma forma, te ajudar 🙌😁.

Para conectar comigo no Linkedin, esse aqui é o link. Para me seguir aqui no Medium, é nesse aqui.

--

--

Wesley Muller

Sou formado em engenharia elétrica e pós-graduado em analytics. Aqui falo sobre análise de dados e de negócios 📊📈.