0Pricing
Pandas & NumPy Academy · Aula

Gráficos de distribuição: histplot e kdeplot

Visualize o formato de uma distribuição numérica com sns.histplot e sobreponha uma estimativa de densidade de kernel com sns.kdeplot.

Gráficos de distribuição: histplot e kdeplot é uma aula grátis de Pandas & NumPy Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Pandas & NumPy Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Pandas & NumPy Academy inclui 4 aulas no total.

Seaborn e Gráficos de Distribuição

O Seaborn é uma biblioteca de visualização estatística de dados construída sobre o Matplotlib. Ela oferece uma API de alto nível que cria gráficos bonitos e informativos com pouco código. Uma das primeiras coisas que você precisa entender sobre qualquer conjunto de dados é o formato de suas distribuições — e histplot e kdeplot do Seaborn são as principais ferramentas para isso.

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

# Load a built-in dataset
tips = sns.load_dataset('tips')
print(tips.head())

Criando um Histograma Básico com histplot

sns.histplot(data, x='column') cria um histograma de uma variável numérica. Por padrão, o Seaborn escolhe automaticamente uma quantidade adequada de intervalos usando a regra de Sturges. Você pode personalizar a quantidade de intervalos com o parâmetro bins ou deixar que o Seaborn escolha automaticamente. A altura de cada barra representa a contagem de observações naquele intervalo.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Basic histogram of total bill amounts
sns.histplot(data=tips, x='total_bill')
plt.title('Distribution of Total Bill')
plt.xlabel('Total Bill ($)')
plt.show()

Controlando os Intervalos e o Parâmetro stat

O parâmetro bins controla quantas barras o histograma exibe — mais intervalos revelam detalhes mais finos, mas podem deixar o gráfico ruidoso. O parâmetro stat altera o que o eixo y representa: 'count' (padrão), 'density' (densidade de probabilidade), 'probability' (fração de observações) ou 'percent'. Escolher stat='density' torna comparáveis histogramas de conjuntos de dados com tamanhos diferentes.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 2, figsize=(10, 4))

# Count histogram with 20 bins
sns.histplot(data=tips, x='total_bill', bins=20, ax=axes[0])
axes[0].set_title('Count (20 bins)')

# Density histogram
sns.histplot(data=tips, x='total_bill', stat='density', ax=axes[1])
axes[1].set_title('Density')

plt.tight_layout()
plt.show()

Sobrepondo uma KDE ao Histograma

Definir kde=True em histplot sobrepõe ao histograma uma curva de estimativa de densidade por núcleo (KDE). A KDE é uma aproximação contínua e suave da distribuição de probabilidade subjacente. Essa combinação é muito eficaz: o histograma mostra as contagens brutas dos intervalos, enquanto a KDE revela o formato geral e detecta vários picos (multimodalidade).

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Histogram with KDE overlay
sns.histplot(data=tips, x='total_bill', kde=True, bins=25, color='steelblue')
plt.title('Bill Distribution with KDE Overlay')
plt.xlabel('Total Bill ($)')
plt.show()

Usando kdeplot de Forma Independente

sns.kdeplot() desenha apenas a curva suave de densidade, sem barras de histograma. Isso é útil ao comparar várias distribuições nos mesmos eixos, pois histogramas sobrepostos ficam confusos, enquanto curvas KDE sobrepostas continuam legíveis. O parâmetro fill=True preenche a área sob a curva, facilitando a distinção visual entre os grupos.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# KDE plot for lunch vs dinner bills
sns.kdeplot(data=tips, x='total_bill', hue='time', fill=True, alpha=0.5)
plt.title('Bill Distribution: Lunch vs Dinner')
plt.xlabel('Total Bill ($)')
plt.show()

O Parâmetro hue para Comparação entre Grupos

histplot e kdeplot aceitam um parâmetro hue que divide os dados por uma coluna categórica e desenha cada grupo com uma cor diferente. Isso facilita a comparação das distribuições entre grupos. Ao usar histplot com hue, defina stat='density' para tornar justa a comparação entre grupos de tamanhos diferentes.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Compare tip distributions by smoker status
sns.histplot(
    data=tips,
    x='tip',
    hue='smoker',
    stat='density',
    common_norm=False,
    bins=20,
    alpha=0.6
)
plt.title('Tip Distribution by Smoker Status')
plt.show()

Largura de Banda na KDE: o Parâmetro bw_adjust

A KDE tem um parâmetro de ajuste chamado largura de banda, que controla o grau de suavidade da curva. Uma largura de banda pequena torna a curva irregular e faz com que ela se ajuste excessivamente aos dados; uma largura grande suaviza demais a curva e oculta características reais. O Seaborn usa bw_adjust (padrão 1.0) como multiplicador da largura de banda escolhida automaticamente — valores abaixo de 1 aumentam a irregularidade, enquanto valores acima de 1 aumentam a suavidade.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 3, figsize=(12, 4))
bw_values = [0.3, 1.0, 3.0]

for ax, bw in zip(axes, bw_values):
    sns.kdeplot(data=tips, x='total_bill', bw_adjust=bw, ax=ax)
    ax.set_title(f'bw_adjust={bw}')

plt.tight_layout()
plt.show()

Distribuições 2D com histplot e kdeplot

histplot e kdeplot aceitam gráficos bidimensionais quando você passa os parâmetros x e y. Um histograma 2D mostra uma grade de frequências codificada por cores; uma KDE 2D mostra linhas de contorno de mesma densidade. Esses gráficos revelam a distribuição conjunta de duas variáveis numéricas e se elas estão correlacionadas.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# 2D histogram
sns.histplot(data=tips, x='total_bill', y='tip', ax=axes[0])
axes[0].set_title('2D Histogram')

# 2D KDE contour plot
sns.kdeplot(data=tips, x='total_bill', y='tip', fill=True, ax=axes[1])
axes[1].set_title('2D KDE Contours')

plt.tight_layout()
plt.show()

Personalizando a Aparência com Temas do Seaborn

O Seaborn oferece temas integrados por meio de sns.set_theme(style=). Os estilos disponíveis são 'darkgrid', 'whitegrid', 'dark', 'white' e 'ticks'. Você também pode definir uma paleta com palette= ou sns.set_palette(). Essas configurações se aplicam globalmente a todos os gráficos posteriores na sessão, facilitando a obtenção de uma aparência consistente.

import seaborn as sns
import matplotlib.pyplot as plt

# Apply a clean whitegrid theme
sns.set_theme(style='whitegrid', palette='muted')

tips = sns.load_dataset('tips')
sns.histplot(data=tips, x='total_bill', kde=True, bins=20)
plt.title('Styled Distribution Plot')
plt.show()

# Reset to defaults when done
sns.reset_defaults()

Interpretando o Formato da Distribuição

Ao interpretar um gráfico de distribuição, procure quatro características principais. Centro: onde os dados se concentram (média/mediana)? Dispersão: qual é a largura da distribuição (desvio-padrão)? Assimetria: a cauda é mais longa à direita (assimetria positiva) ou à esquerda (assimetria negativa)? Modalidade: a distribuição tem um pico (unimodal) ou mais de um (bimodal/multimodal)? Distribuições bimodais geralmente indicam duas subpopulações ocultas que vale a pena separar.

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# Simulate a bimodal distribution
np.random.seed(42)
data = np.concatenate([
    np.random.normal(loc=20, scale=3, size=300),
    np.random.normal(loc=45, scale=5, size=200)
])

sns.histplot(data, kde=True, bins=40)
plt.title('Bimodal Distribution — Two Hidden Groups')
plt.xlabel('Value')
plt.show()

displot: função de distribuição no nível da figura

sns.displot() é o invólucro no nível da figura que cria sua própria figura e permite dividir os dados em painéis por linhas e colunas usando os parâmetros col= e row=. Passe kind='hist', kind='kde' ou kind='ecdf' para alternar o tipo de gráfico. A ECDF (Função de Distribuição Acumulada Empírica) é especialmente útil porque mostra qual fração dos dados está abaixo de cada valor sem exigir a escolha de intervalos.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Faceted KDE by day of week
sns.displot(
    data=tips,
    x='total_bill',
    col='day',
    col_wrap=2,
    kind='kde',
    fill=True
)
plt.suptitle('Bill Distributions by Day', y=1.02)
plt.show()

Verificação rápida

Teste sua compreensão dos gráficos de distribuição do Seaborn apresentados nesta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: sns.histplot cria histogramas com intervalos e parâmetros estatísticos personalizáveis, sns.kdeplot desenha curvas de densidade suaves, ideais para comparar grupos, e o parâmetro hue divide os dois tipos de gráfico por uma variável categórica para permitir uma comparação lado a lado. A seguir, exploraremos gráficos de comparação categórica, como gráficos de caixa, gráficos de barras e gráficos de violino.

Perguntas Frequentes

A aula “Gráficos de distribuição: histplot e kdeplot” é grátis?

Sim — o texto completo de “Gráficos de distribuição: histplot e kdeplot” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Pandas & NumPy Academy, atualize para CoddyKit PRO. O curso de Pandas & NumPy Academy inclui 4 aulas no total.

O que vou aprender em “Gráficos de distribuição: histplot e kdeplot”?

Visualize o formato de uma distribuição numérica com sns.histplot e sobreponha uma estimativa de densidade de kernel com sns.kdeplot. Você pratica Pandas & NumPy Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Pandas & NumPy Academy?

Nenhuma experiência prévia é necessária. Pandas & NumPy Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Gráficos de distribuição: histplot e kdeplot”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Pandas & NumPy Academy?

Sim. Cada aula de Pandas & NumPy Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Gráficos de distribuição: histplot e kdeplot
  2. Gráficos categóricos: boxplot, barplot e violinplot
  3. Gráficos de dispersão e gráficos de pares
  4. Mapas de calor para matrizes de correlação
← Voltar para Pandas & NumPy Academy