Alura > Cursos de Data Science > Cursos de Data Science > Conteúdos de Data Science > Primeiras aulas do curso Python: gráficos de composição e relacionamento

Python: gráficos de composição e relacionamento

Gráficos de composição e relacionamento - Gráficos de composição e relacionamento

Olá! Eu sou a Mirla Costa, instrutora de Dados na Alura, e te dou boas-vindas a este curso.

Audiodescrição: Mirla se descreve como uma mulher de pele clara, com cabelos pretos e cacheados médios, e olhos castanho-escuros. Ela usa óculos de armação arredondada prateada, veste uma camisa preta, e está sentada em frente a um microfone, com uma parede clara ao fundo iluminada em gradiente azul e verde, com duas estantes contendo livros e enfeites.

Gráficos de composição e relacionamento

Vamos relembrar conteúdos que envolvem gráficos de composição e de relacionamento?

Para revisar esses conteúdos, criamos um material que será disponibilizado neste curso e utilizaremos durante este vídeo. Dito isso, vamos para o material no notebook do Google Colab.

O que são gráficos de composição?

Iniciaremos com os gráficos de composição, utilizados quando desejamos mostrar como diferentes partes contribuem para a construção de um todo. Podemos separá-los em duas categorias:

  1. Gráficos de composição estáticos, que mostram como diferentes partes contribuem para um todo em um momento específico;
  2. E gráficos de composição dinâmicos, que tratam ao longo do tempo ou em vários períodos.

Importando as bibliotecas de visualização

Para construir esses gráficos, utilizaremos bibliotecas de visualização, como a matplotlib.pyplot, a plotly.graph_objects, e o numpy para suporte.

import matplotlib.pyplot as plt
import plotly.graph_objects as go
import numpy as np

Vamos executar a célula para importar essas bibliotecas e criar nosso primeiro gráfico.

Criando um gráfico de pizza

O gráfico de composição que abordaremos é o gráfico de pizza. Podemos utilizá-lo para mostrar, de forma simples, como poucas partes contribuem para um todo.

Devemos ter cuidado ao usá-lo, mas, para o caso que apresentaremos, faz sentido utilizá-lo.

Queremos mostrar a proporção das respostas "Sim" e "Não" em relação a uma pergunta feita aos clientes. Para isso, temos alguns dados, como as respostas e as porcentagens:

# Dados
respostas = ['Sim', 'Não']  # Categorias de respostas
porcentagens = [77, 23]  # Proporção de cada categoria
cores = ['#76c7c0', '#ff6f61']  # Tons suaves de verde e vermelho

Para construir esse gráfico de pizza, utilizamos a função plt.pie(), da biblioteca matplotlib. Precisamos informar as porcentagens, as respostas, e podemos ajustar o gráfico conforme desejado.

# Criando o gráfico de pizza
plt.figure(figsize=(6, 6))  # Define o tamanho da figura (6x6 polegadas)
plt.pie(
    porcentagens,
    labels=respostas,  # Adiciona os rótulos nas fatias
    colors=cores,  # Define as cores de cada fatia
    autopct='%1.1f%%',  # Exibe os percentuais nas fatias (1 casa decimal)
    wedgeprops={'edgecolor': 'white'},  # Adiciona bordas brancas às fatias
)

# Adicionando o título
plt.title('Você indicaria nosso serviço?', fontsize=18, fontweight='bold')

# Exibe o gráfico
plt.tight_layout() # Ajusta automaticamente os elementos do gráfico para evitar sobreposição (como textos ou rótulos)
plt.show()

Observação: O código está comentado para consulta posterior no material.

Após executar a célula da criação dos dados, vamos executar a criação do gráfico de pizza. No final, podemos observar o título do gráfico e o gráfico de pizza com as porcentagens bem expostas.

Gráfico de pizza com a pergunta 'Você indicaria nosso serviço?' escrita em preto sobre um fundo branco no topo. O gráfico está dividido em duas partes: uma maior em verde água representando 77,0% com a legenda 'Sim', e uma menor em vermelho representando 23,0% com a legenda 'Não'.

Criando um gráfico de cascata

Outro gráfico interessante é o gráfico de cascata, utilizado para mostrar como saímos de um todo até chegar a um resultado final, mostrando alterações positivas e negativas.

Neste caso, queremos mostrar como sair de uma receita bruta até o lucro líquido, detalhando os decréscimos de cada componente. Informamos indicadores e características, começando com o valor absoluto (absolute), seguido de valores relativos (relative) e do valor total (total).

# Dados
indicadores = ['Receita Bruta', 'Impostos', 'Despesas Operacionais', 'Lucro Líquido']  # Categorias
valores = [500000, -100000, -150000, 250000]  # Valores em reais
medidas = ['absolute', 'relative', 'relative', 'total']  # Configuração para cascata

Para construir isso, utilizamos a biblioteca plotly e a função Waterfall(), onde especificamos as características, os valores, adicionamos títulos e também rótulos.

# Configurando o gráfico de cascata
fig = go.Figure(
    go.Waterfall(
        measure=medidas,  # Define o tipo de valor: 'absolute' (início), 'relative' (intermediários), 'total' (final)
        x=indicadores,  # Categorias no eixo X
        y=valores,  # Valores associados a cada categoria
        text=[f'R$ {v:,.2f}' for v in valores],  # Formata os rótulos como valores monetários
    )
)

# Adicionando título e legenda
fig.update_layout(
    title="Finanças da Empresa",  # Título do gráfico
    font=dict(size=14),  # Configura o tamanho da fonte
    plot_bgcolor="white",  # Define o fundo como branco
    yaxis_title="Valores (R$)",  # Título do eixo Y
)

# Exibindo o gráfico
fig.show()

Ao executar a célula, temos um gráfico de cascata que parte de um valor total até o lucro líquido:

Gráfico de cascata mostrando as finanças da empresa. O título na parte superior esquerda diz 'Finanças da Empresa' em preto sobre um fundo branco. No eixo vertical, há a legenda 'Valores (R$)'. O gráfico começa com uma barra azul representando 'Receita Bruta' no valor de R$ 500.000,00. Segue-se uma barra vermelha para 'Impostos', indicando um valor de R$ -100.000,00. Outra barra vermelha à direita representa 'Despesas Operacionais', com R$ -150.000,00. Por fim, uma barra azul mostra o 'Lucro Líquido' de R$ 250.000,00.

Criando um gráfico de barras empilhadas

Agora vamos para a parte dinâmica, onde podemos mostrar outros períodos além do período fixo estabelecido anteriormente. Para isso, trouxemos um exemplo de gráficos de barras empilhadas, que mostram como categorias influenciam o valor final, indicado para poucos períodos.

Apresentaremos a composição de tipos de acesso a um site ao longo de três trimestres:

Além disso, temos os tipos de acesso: redes_sociais; pesquisa_google; ou acesso_direto.

# Dados
trimestres = ['1º Trimestre', '2º Trimestre', '3º Trimestre']  # Períodos
redes_sociais = [1200, 1500, 1700]  # Acessos via redes sociais
pesquisa_google = [900, 1100, 1400]  # Acessos via pesquisa no Google
acesso_direto = [800, 700, 600]  # Acessos diretos

Após executar os dados, vamos construir o gráfico efetivamente com a biblioteca matplotlib, utilizando a função plt.bar(), responsável por criar as barras.

Após criar a primeira barra, as próximas precisam ser empilhadas, iniciando onde a última terminou. Especificamos isso utilizando o parâmetro bottom, definindo como valor o valor da primeira barra (redes_sociais) ou das barras anteriores.

# Configuração das barras
largura_barra = 0.6  # Largura das barras
x = np.arange(len(trimestres))  # Posições no eixo X

# Criando o gráfico de barras empilhadas
plt.figure(figsize=(10, 6))
plt.bar(x, redes_sociais, label='Redes Sociais', color='#76c7c0', width=largura_barra)
plt.bar(x, pesquisa_google, label='Pesquisa no Google', color='#4a90e2', width=largura_barra, bottom=redes_sociais)
plt.bar(x, acesso_direto, label='Acesso Direto', color='#ff6f61', width=largura_barra,
        bottom=np.array(redes_sociais) + np.array(pesquisa_google))

# Adicionando informações no gráfico
plt.xticks(x, trimestres, fontsize=12)  # Define os rótulos no eixo X
plt.ylabel('Número de Acessos', fontsize=14)  # Define o rótulo do eixo Y
plt.title('Formas de Acesso ao Site por Trimestre', fontsize=16, loc='left')  # Adiciona o título
plt.legend()  # Adiciona a legenda

# Ajuste final e exibição
plt.tight_layout()
plt.show()

Uma vez executada a célula, conseguimos obter um gráfico de composição dinâmico:

Gráfico de barras empilhadas mostrando as formas de acesso a um site por trimestre. O eixo vertical indica o 'Número de Acessos' e o eixo horizontal apresenta '1º Trimestre', '2º Trimestre' e '3º Trimestre'. Cada barra é dividida em três cores, de baixo para cima: verde-água para 'Redes Sociais', azul para 'Pesquisa no Google' e vermelho para 'Acesso Direto'. O título no topo é 'Formas de Acesso ao Site por Trimestre' escrito em preto sobre um fundo branco. Uma legenda no canto superior esquerdo explica a representação das cores.

Dica! Outro exemplo de gráfico de composição dinâmico são os gráficos de áreas empilhadas, que deixaremos como expansão do material para conferência posterior.

O que são gráficos de relacionamento?

Agora, podemos partir para os gráficos de relacionamento. Esses tipos de gráfico são utilizados em visualizações quando queremos mostrar a relação entre variáveis.

Criando um gráfico de dispersão

Podemos usar um gráfico de dispersão para mostrar a relação entre duas variáveis numéricas. Neste exemplo, mostramos a relação entre valores obtidos em vendas e investimento em marketing.

Para isso, criamos dados que se relacionam entre si. Observe abaixo:

# Dados
np.random.seed(40)  # Garante reprodutibilidade
investimento_marketing = np.linspace(1000, 10000, 100)  # Valores de investimento (R$1.000 a R$10.000)
vendas = investimento_marketing * 2 + np.random.normal(0, 500, 100)  # Vendas com uma relação linear e variação aleatória

Para criar o gráfico de dispersão, utilizamos a biblioteca matplotlib com a função plt.scatter(), que cria um gráfico de pontos. No escopo, precisamos informar os dados necessários.

# Criando o gráfico de dispersão
plt.figure(figsize=(10, 6))  # Define o tamanho da figura
plt.scatter(investimento_marketing, vendas, color='#4a90e2')  # Cria os pontos de dispersão (azul)

# Personalizando o gráfico
plt.title('Relação entre Investimento em Marketing e Vendas', fontsize=16, loc='left')  # Adiciona o título
plt.xlabel('Investimento em Marketing (R$)', fontsize=12)  # Adiciona o rótulo do eixo X
plt.ylabel('Vendas (R$)', fontsize=12)  # Adiciona o rótulo do eixo Y
plt.grid(True, alpha=0.4)  # Adiciona uma grade leve no fundo

# Ajustando o layout e exibindo o gráfico
plt.tight_layout()  # Ajusta os elementos para evitar sobreposição
plt.show()

Executando a célula, temos o seguinte resultado:

Gráfico de dispersão mostrando a relação entre o investimento em marketing e vendas. O eixo horizontal é rotulado como 'Investimento em Marketing (R$)', variando de 0 a 10000 em intervalos de 2000, e o eixo vertical é rotulado como 'Vendas (R$)', variando de 0 a 20000 em intervalos de 2500. Os pontos de dados formam uma tendência ascendente, indicando correlação positiva entre as variáveis. No topo do gráfico, está o título 'Relação entre Investimento em Marketing e Vendas' escrito em preto. O fundo do gráfico é branco com linhas de grade cinza-claras.

Dica! Além desse gráfico, deixamos um material de expansão para você conhecer outros gráficos de relacionamento. Confira e aprenda mais, ou relembre como construir esses gráficos.

Conclusão

Neste vídeo, revisamos como construir gráficos de composição e relacionamento utilizando Python e bibliotecas como matplotlib e plotly. Agora, você tem o conhecimento necessário para avançar para os exercícios e praticar o que foi abordado. Bons estudos, e até a próxima!

Sobre o curso Python: gráficos de composição e relacionamento

O curso Python: gráficos de composição e relacionamento possui 8 minutos de vídeos, em um total de 13 atividades. Gostou? Conheça nossos outros cursos de Data Science em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Data Science acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas