Seaborn - Distribuição de Observações

Em gráficos de dispersão categóricos que tratamos no capítulo anterior, a abordagem torna-se limitada nas informações que pode fornecer sobre a distribuição de valores dentro de cada categoria. Agora, indo mais longe, vamos ver o que pode nos facilitar na realização de comparação em categorias.

Box Plots

Boxplot é uma maneira conveniente de visualizar a distribuição de dados por meio de seus quartis.

Os gráficos de caixa geralmente têm linhas verticais que se estendem das caixas, que são denominadas de bigodes. Esses bigodes indicam variabilidade fora dos quartis superior e inferior, portanto, os Box Plots também são denominados comobox-and-whisker trama e box-and-whisker diagrama. Quaisquer outliers nos dados são plotados como pontos individuais.

Exemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.swarmplot(x = "species", y = "petal_length", data = df)
plt.show()

Resultado

Os pontos no gráfico indicam o outlier.

Tramas de violino

Os Violin Plots são uma combinação do box plot com as estimativas de densidade do kernel. Portanto, esses gráficos são mais fáceis de analisar e compreender a distribuição dos dados.

Vamos usar o conjunto de dados de dicas chamado para aprender mais sobre tramas de violino. Este conjunto de dados contém as informações relacionadas às dicas dadas pelos clientes em um restaurante.

Exemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill", data=df)
plt.show()

Resultado

Os valores de quartil e bigode do boxplot são mostrados dentro do violino. Como a trama do violino usa o KDE, a parte mais larga do violino indica a densidade mais alta e a região estreita representa densidade relativamente mais baixa. O intervalo interquartil no boxplot e a porção de densidade mais alta no kde estão na mesma região de cada categoria do gráfico de violino.

O gráfico acima mostra a distribuição de total_bill em quatro dias da semana. Mas, além disso, se quisermos ver como a distribuição se comporta em relação ao sexo, vamos explorá-la no exemplo abaixo.

Exemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill",hue = 'sex', data = df)
plt.show()

Resultado

Agora podemos ver claramente o comportamento de gastos entre homens e mulheres. Podemos facilmente dizer que os homens faturam mais do que as mulheres olhando para a trama.

E, se a variável hue tiver apenas duas classes, podemos embelezar o enredo dividindo cada violino em dois, em vez de dois violinos em um determinado dia. Qualquer uma das partes do violino se refere a cada classe na variável hue.

Exemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y="total_bill",hue = 'sex', data = df)
plt.show()

Resultado