Como construir belos gráficos com Python e Seaborn

O guia básico e prático de plotagem com Seaborn

seaborn — Python

A visualização de dados é uma técnica que permite aos cientistas de dados converter dados brutos em gráficos e gráficos que geram insights valiosos. Os gráficos reduzem a complexidade dos dados e facilitam a compreensão de qualquer usuário.

Existem muitas ferramentas para realizar a visualização de dados, como Tableau, Power BI, ChartBlocks e muito mais, que são ferramentas sem código. São ferramentas muito poderosas, e têm seu público. No entanto, ao trabalhar com dados brutos que exigem transformação e todo um cenário de manipulação de dados, python é uma excelente escolha.

versátil

Embora mais complicado, pois requer conhecimento de programação, o Python permite que você realize qualquer manipulação, transformação e visualização de seus dados. É ideal para cientistas de dados.

Existem muitas razões pelas quais o Python é a melhor escolha para a ciência de dados, mas uma das mais importantes é seu ecossistema de bibliotecas. Muitas grandes bibliotecas disponíveis em Python para trabalhar com dados são: NumPy, Pandas, Matplotlib, TensorFlow e Scikit-Learn.

matplotlib

Matplotlib é provavelmente a biblioteca de plotagem mais reconhecida em Python. É o seu nível de personalização e operabilidade que o define em primeiro lugar. No entanto, algumas ações ou personalizações podem ser difíceis de aplicar em R.

Os desenvolvedores criaram uma biblioteca baseada sobre o motor da matplotlib chamada Seaborn, sendo tão poderosa quanto, ao mesmo tempo, possibilitando uma abstração para simplificar visualização.

Vamos nos concentrar em como trabalhar com Seaborn para criar as melhores plotagens da classe.

o que é Seaborn?

Seaborn é uma biblioteca para plotar gráficos estatísticos em Python. Ele se constrói em cima do matplotlib e se integra de perto com estruturas de dados pandas.

instalação do Seaborn

Instalar é tão fácil quanto instalar uma biblioteca usando seu gerenciador de pacotes Python favorito. Vamos então instalar o Seaborn, e, claro, também o notebook pacote para ter acesso ao nosso playground de dados.

pip install seaborn 

Além disso, vamos importar alguns módulos antes de começarmos.

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib

construindo seus primeiros plots

Antes de começarmos a traçar qualquer gráfico, precisamos de dados. A beleza é que ele funciona diretamente com dataframes, tornando-o super conveniente. Seaborn já vem com alguns conjuntos de dados incorporados que agora você pode carregar a partir do código, sem necessidade de baixar manualmente arquivos.

Vamos ver como isso funciona carregando um conjunto de dados que contém informações sobre voos.

flights_data = sns.load_dataset("flights")
flights_data.head()

Toda a magia acontece ao chamar a função, que espera que o nome dos dados seja carregado e retorne um dataframe. Todos esses conjuntos de dados disponíveis em load_dataset Seaborn estão disponíveis em um repositório.

gráfico de dispersão

Um gráfico de dispersão é um diagrama que exibe pontos com base em duas dimensões do conjunto de dados. Criar um gráfico de dispersão com Seaborn é tão simples, bastando uma linha de código.

sns.scatterplot(
data = flights_data,
x = "year",
y = "passengers")
número de passageiros por ano — seaborn

gráfico de linha

Este gráfico desenha uma linha que representa o sequenciamento de dados contínuos ou categóricos. É um tipo popular de gráfico, e é super fácil de produzir. Da mesma forma que antes, usamos a função com o conjunto de dados e as colunas representando o eixo e eixo.

sns.lineplot(
data = flights_data,
x = "year",
y = "passengers")
evolução do número de passageiros — seaborn

gráfico de Barras

É provavelmente o tipo mais conhecido de gráfico, e como previsto, podemos traçar esse tipo de plot da mesma maneira que fazemos para linhas e gráficos de dispersão usando a função barplot.

sns.barplot(
data = flights_data,
x = "year",
y = "passengers")
gráfico de barras — seaborn

É muito colorido, eu sei, vamos aprender a personalizá-lo mais tarde.

indo mais além com matplotlib

Seaborn é construída sobre a matplotlib, ampliando sua funcionalidade e abstraindo a complexidade. Dito isso, não limita suas capacidades. Qualquer gráfico pode ser personalizado usando funções da biblioteca. Digamos que você, por exemplo, deseja traçar vários gráficos simultaneamente:

diamonds_data = sns.load_dataset('diamonds')plt.subplot(1, 2, 1)
sns.countplot(x='carat', data=diamonds_data)
plt.subplot(1, 2, 2)
sns.countplot(x='depth', data=diamonds_data)
subplots — seaborn

Usando a função plt.subplot, podemos desenhar mais de um gráfico em um único plot. A função leva três parâmetros, o primeiro é o número de linhas, o segundo é o número de colunas, e o último o quadrante de plotagem.

a conexão entre Seaborn e Pandas

A aplicação das visualizações em Searbon baseiam-se e são otimizados para plotagem de DataFrames.

Até agora, vimos exemplos de uso com dados pré-carregados, mas e se quisermos desenhar um plot de dados que ainda vamos carregar.

drinks_df = pd.read_csv("data/drinks.csv")sns.barplot(
x = "country",
y = "beer_servings",
data = drinks_df)
plotagem diretamente do read_csv

belas visualizações

O Seaborn lhe dá a capacidade de alterar a interface de seus gráficos, e fornece cinco estilos diferentes fora da caixa: darkgrid, whitegrid, escuro, branco e ticks.

sns.set_style("darkgrid")sns.lineplot(
data = data,
x = "year",
y = "passengers")
estilo darkgrid
sns.set_style("whitegrid")
sns.lineplot(
data = flights_data,
x = "year",
y = "passengers")
estilo whitegrid

casos de uso

Sabemos o básico seaborn, agora vamos colocá-los em prática construindo vários gráficos sobre o mesmo conjunto de dados. No nosso caso, usaremos o conjunto de dados “tips” podendo carregar diretamente usando seaborn.

tips_df = sns.load_dataset('tips')
tips_df.head()

Gosto de imprimir as primeiras linhas do conjunto de dados para ter uma noção das colunas e dos dados em si.

Vamos criar uma coluna adicional para o conjunto de dados com a porcentagem que representa o valor da gorjeta sobre o total da conta.

tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
tips_df.head()

Agora, nosso dataframe tem uma nova variável:

Em seguida, podemos começar a traçar alguns gráficos.

entendendo percentuais de gorjeta

Vamos primeiro tentar entender a distribuição percentual de gorjeta. Para isso, podemos usar o histplot() que irá gerar um gráfico de histograma:

sns.histplot(tips_df["tip_percentage"], binwidth=0.05)
histograma de percentual de gorjetas

A maioria dos clientes daria gorjeta entre 15 e 20% do valor total, e temos alguns casos extremos onde a gorjeta é superior a 70%. Esses valores são anomalias, e sempre valem a pena explorar para determinar se os valores são erros ou não

gorjetas diferentes ao longo do dia

Seria nteressante saber se a % da gorjeta muda dependendo da hora do dia

sns.histplot(
data = tips_df,
x = "tip_percentage",
binwidth=0.05, hue="time")
Entendendo as porcentagens de gorjeta por plot temporal

Desta vez, carregamos o gráfico com o conjunto de dados completo em vez de apenas uma coluna, e então definimos a propriedade hue para a coluna time.

Isso forçará o gráfico a usar cores diferentes para cada valor de classe time e adicionar uma legenda ele.

total de dicas por dia da semana

Outra métrica interessante é saber quanto dinheiro em gorjetas o pessoal pode esperar dependendo do dia da semana.

sns.barplot(
data=tips_df,
x = "day",
y = "tip",
estimator = np.sum)
Entendendo as porcentagens de gorjeta por parcela diária

Parece que sexta-feira é um bom dia para ficar em casa.

impacto do tamanho da mesa e do dia na gorjeta

Como o dia da semana e o tamanho da mesa impactam na gorjeta? Para desenhar o próximo gráfico, combinaremos a função pivot dos Pandas para pré-processar as informações e, em seguida, desenhar um gráfico de mapa de calor.pivot

pivot = tips_df.pivot_table(
index=["day"],
columns=["size"],
values="tip_percentage",
aggfunc=np.average)
sns.heatmap(pivot)
heatmap de gorjetas

Conclusão

Claro, há muito mais do que podemos fazer com seabro , e você pode aprender mais casos de uso visitando a sua documentação oficial.

Obrigado.

Composing a repository of books (i bought), authors (i follow) & blogs (direct ones) for my own understanding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store