Grafico De Frequencia - Grafico De Contagem E Tabela De Frequencia Gráficos De
Grafico De Contagem E Tabela De Frequencia Gráficos De

Como construir um gráfico de frequência sem complicar

Você pega uma lista de números e quer saber o que ela está tentando dizer. O gráfico de frequência é a resposta mais direta pra isso. Não é mágica, só é visualização de distribuição. O eixo horizontal mostra os intervalos ou valores, o vertical mostra quantas vezes cada coisa apareceu, e pronto. O difícil é acertar os detalhes. Eu comecei a mexer com gráficos de frequência em planilhas simples, depois passei pra Python com matplotlib e seaborn, e ultimamente quase tudo sai direto do pandas com binning adequado. O caminho que eu sigo agora é: pegar os dados brutos, definir faixas, contar ocorrências, plotar, e ajustar se algo ficar ambíguo. Em geral leva uns 10 minutos se os dados já estiverem limpos.

gráfico de frequencia

O conceito é simples, mas a escolha dos bins faz tudo ou estraga tudo. Bin muito aberto esconde padrões. Bin muito fechado transforma ruído em padrão. Eu costumo começar com a regra de Sturges ou Freedman-Diaconis, dependendo do volume, e só ajusto depois de olhar o desenho. Em Python, um código base que eu uso com frequência é esse aqui:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

dados = pd.read_csv("minha_tabela.csv")
plt.hist(dados["coluna"], bins="fd", edgecolor="black")
plt.xlabel("Valor")
plt.ylabel("Frequência")
plt.title("Histograma")
plt.show()

Escolhi o método de Freedman-Diaconis porque ele reage melhor a outliers que Sturges. Sturges tende a subestimar bins quando o conjunto é grande, e aí o gráfico parece mais liso do que deveria. Nada disso é difícil, só exige decisão no início. Outra coisa que as pessoas deixam passar é a diferença entre histograma e gráfico de barras. Histograma representa variável contínua agrupada em faixas. Gráfico de barras representa categorias discretas. Misturar os dois gera confusão na leitura, e muita gente não percebe até o cliente perguntar algo óbvio.

Se seus dados são categóricos, use value_counts() do pandas e plot em barras. Se são numéricos contínuos, histograma com bins. A linha entre discreto e contínuo às vezes é tênue, mas a decisão muda o visual completo. Eu já vi gente usar barras pra idade, e a coisa ficava pior que um histograma ruim. Às vezes funciona, mas raramente é a escolha certa. Um problema real que eu encontrei foi com dados de tempo de chamada em suporte técnico. A distribuição era fortemente assimétrica, com muitos valores pequenos e uma cauda longa. O histograma padrão deixava tudo amontoado à esquerda e a cauda virava uma linha fina sem informação. A solução foi usar scale logarítmico no eixo X e limitar o range visual com np.percentile para cortar outliers extremos que não mudavam a leitura prática. Eu calculei o percentil 99 e plotei só até esse valor. O gráfico ficou legível em 30 segundos.

Se você prefere R, o ggplot2 trata bins de forma quase automática, mas ainda assim eu recomendo ajustar binwidth manualmente nos casos assimétricos. O padrão pode gerar gráficos bonitos, mas pouco informativos quando a densidade é irregular. Outra armadilha comum é usar density=True sem avisar o leitor. Isso normaliza a área sob o histograma, o que ajuda a comparar distribuições de tamanhos diferentes, mas estraga a leitura intuitiva de frequências absolutas. Eu aviso em todas as legendas sempre. As pessoas confundem fácil.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Para download de exemplos práticos, eu recomendo baixar o código de template que eu mantenha no GitHub e adaptar pra sua coluna. O repositório tem notebooks com os três casos mais comuns: distribuição simétrica, assimétrica e multimodal. A versão com bins ajustados manualmente aparece no terceiro exemplo, que é onde a coisa fica interessante. Um insight que ninguém conta no tutorial básico: gráfico de frequência bem feito é sobre controle de escala e clareza de eixos, não sobre cores ou títulos chamativos. A maioria dos erros vem de deixar o eixo Y começar em zero quando não precisa, ou terminar abruptamente cortando informações importantes. Use ymin=0 em barras discretas. Para histogramas, deixe o eixo Y começar em zero por padrão, a menos que a cauda seja realmente o foco da análise.

Se quiser simplificar, a saída básica em Python com pandas já gera histogramas aceitáveis com df["coluna"].hist(). Mas aí você perde controle de bins, cores e edgecolor, que importam quando o gráfico vai pra apresentação ou relatório. Eu nunca entrego um gráfico pronto sem edgecolor="black" e labels explícitas. O esforço extra é pequeno, mas evita perguntas inconvenientes. Dica rápida pra quem trabalha com grandes volumes: pré-agrupamento com pd.cut() antes de plotar pode acelerar a renderização e facilitar ajustes finos. Você cria as faixas manualmente, conta com value_counts(), e plota com plt.bar(). O resultado visual é o mesmo, mas o controle é maior.

Resumindo sem resumir: defina a variável, escolha o tipo de bin, verifique a assimetria, ajuste a escala se necessário, adicione labels, e só então decida se usa densidade ou frequência absoluta. Esse fluxo evita a maioria dos erros que eu vejo em fóruns e relatórios mal formados. Para começar agora, você pode baixar um arquivo CSV de exemplo com dados sintéticos de vendas, tempos de resposta e idades, e testar os três métodos de binning em paralelo. O objetivo é perceber visualmente a diferença. A teoria fica mais clara quando você vê os gráficos lado a lado.

Se os seus dados têm muitos zeros ou valores ausentes, trate antes de plotar. Gráfico de frequência não corrige dados, ele só mostra o que você alimenta. Dados ruins geram gráficos ruins, e ninguém pergunta de onde vieram os números. A culpa cai na visualização. Último ponto prático: salve o gráfico em PNG com dpi=150 e proporção 4:3 quando for usar em apresentações. Imagens menores ou quadradas distorcem a percepção de densidade. Eu já vi apresentações onde a cauda longa parecia plana por causa da compressão. Recomendar DPI alto e formato largo economiza reuniões de correção.

Se você precisa de um atalho, use a função de template que eu deixei organizada por tipo de dado. Ela recebe DataFrame, nome da coluna, método de bin, e opcionalmente limite de outliers. O retorno é um objeto matplotlib já formatado com labels, edgecolor e título padrão. Isso reduz o tempo de geração de gráfico de frequência de algumas linhas para uma única chamada. Experimente. Ajuste os bins. Veja o que muda. O gráfico de frequência é só isso: uma forma de transformar números em padrão visível. Nada mais, nada menos. E quando você domina os bins, domina a leitura.