image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Phelipe Tisoni
Phelipe Tisoni29/06/2023 19:41
Compartilhe

8 Gráficos Fundamentais para Data Science Utilizando Python

  • #Python

Você já tentou transformar dados complexos em informações claras para uma apresentação e não sabia qual gráfico era o mais indicado? Se você busca a resposta, você está no artigo certo! Descubra os principais tipos de gráficos e como utilizá-los na ciência de dados através do Python.

Introdução

A visualização de informações é fundamental na ciência de dados, auxiliando na exposição de conteúdos e colaborando para a interpretação de problemas. Deste modo, podemos entender que a visualização de dados, quando feita de modo assertivo, ajuda a resolver situações com mais agilidade. 

Através de gráficos, é possível comunicar efetivamente informações contidas em um conjunto de dados, sejam eles simples ou complexos. Neste artigo, irei apresentar os principais tipos de gráficos e como utilizá-los na ciência de dados com a linguagem Python.

Gráfico de Linha

O gráfico de linhas é composto por dois eixos (plano cartesiano), podendo possuir uma ou mais linhas que mostram a variação (medidas ou quantidades numéricas) dos dados no decorrer do tempo (IBGE, 2023).

Esse modelo é ideal para visualizar a evolução de uma variável em um período, em outras palavras, podemos utilizá-lo para analisar a tendência de vendas de um produto durante o ano, preços de ações em determinada semana, ou entender o porquê uma empresa vende mais chocolate em Abril do que em Setembro.  

Vamos imaginar que uma empresa fictícia chamada Gourmi teve uma queda grande de vendas com o surgimento de um concorrente, porém, rapidamente a equipe de marketing prospectou um novo público e a empresa expandiu. Repare como esse cenário não está evidente se analisarmos os dados através de uma tabela:

image

 

A informação fica pouco intuitiva, sendo difícil dizer quando a empresa está crescendo ou tendo prejuízo. Agora, com o auxílio do Python, vamos visualizar esses dados em um gráfico de linhas através do código:  

import matplotlib.pyplot as plt

meses = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho"]
lucro = [10, 12, 9, 11, 13, 15, 14]

plt.plot(meses, lucro, marker='o')
plt.xlabel('Mês')
plt.ylabel('Lucro (em milhões)')
plt.title('Lucro da Gourmi em 2023')
plt.grid(True)
plt.show()

Esse código importa a biblioteca Matplotlib e atribui os dados da nossa tabela para as variáveis meses e lucro. Os comandos seguintes, representam as configurações de estilização, como: labels, marcadores e título do gráfico.

image

 

Após a execução do código, note que a visualização do gráfico de linhas deixa mais claro que em Março houve uma queda significativa, mas a empresa expandiu posteriormente. 

Gráfico de Barras

O gráfico de barras também é exibido com dois eixos, possuindo barras que representam a variação (medidas ou quantidades numéricas) dos dados, e por valores categóricos. Para melhorar a visualização, as barras devem possuir a mesma largura e uma distância constante entre elas (IBGE, 2023). 

São muito utilizados para fazer comparações entre categorias ou grupos. Por exemplo, podemos comparar a popularidade de diferentes produtos ou a distribuição de vendas por região de uma loja. 

 

Vamos verificar os produtos oferecidos pela empresa Gourmi e descobrir quais possuem uma avaliação melhor dentro do aplicativo:

 image

Nesse caso, o gráfico de barras é ideal, pois proporciona uma visão interessante de comparação entre os produtos, sendo possível verificar qual deles é o favorito pelos usuários do aplicativo. Vamos passar essa ideia para o Python:

import matplotlib.pyplot as plt

produtos = ["Pizza", "Hambúrguer", "Sushi", "Churrasco", "Massas", "Saladas", "Sobremesas"]
notas = [9, 8, 7, 9, 6, 5, 8]

plt.bar(produtos, notas)
plt.xlabel('Produtos')
plt.ylabel('Nota')
plt.title('Popularidade dos Produtos da Gourmi’)
plt.grid(True)

plt.show()

De forma semelhante, importamos a biblioteca Matplotlib e atribuímos os valores da tabela para as variáveis. Na sequência, estilizamos o gráfico como feito anteriormente, porém, perceba que agora o tipo do gráfico foi alterado (linha 6 você encontrará plt.bar(produtos, notas)).

image

 

Assim, podemos identificar com mais facilidade que Pizza e Churrasco são os produtos mais populares dentro do aplicativo. 

Histograma

Esse gráfico é formado por colunas verticais lado a lado, sem existir espaço entre elas. As colunas são analisadas de modo que quanto mais alta, mais frequente é aquele dado na amostra. Também possui eixos cartesianos e é amplamente utilizado em modelos estatísticos. 

Seu objetivo é baseado na visualização da distribuição de uma variável contínua, permitindo entender a forma dessa distribuição e identificar outliers (dados que se distanciam radicalmente dos demais), avaliando a simetria ou assimetria dos dados.

Segundo Significados (2023), os histogramas possuem diversos tipos:

  • Simétrico: Quando apresenta colunas mais extremas menores e um pico centralizado.
  • Assimétrico: Apresenta um único ponto de grande frequência, destacando-se entre as outras frequências
  • Despenhadeiro: Ocorre quando existem lacunas inesperadas, utilizados quando algum dado é eliminado do gráfico
  • Dois Picos: Dois picos são destacados com maior frequência, assemelhando-se com o tipo assimétrico.
  • Platô: Quando as frequências centrais estão próximas, havendo um equilíbrio na distribuição do centro.
  • Retângulos Isolados ou Ilha Isolada: Exibe lacunas, demonstrando indícios de anormalidades ou erros nas amostras coletadas.

Dessa vez, a nossa tarefa será descobrir a frequência em que um intervalo de número de vendas aparece na semana da Gourmi

image

 

Perceber intervalos de vendas na tabela não parece tão óbvio, vamos melhorar a visualização dessas informações com o Python:

import matplotlib.pyplot as plt

dias_semana = ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo']
vendas = [55, 70, 40, 85, 60, 90, 75]

plt.figure(figsize=(8, 6))
plt.hist(vendas, bins=10, edgecolor='black')
plt.xticks(range(10, 101, 10))
plt.title("Quantidade de Vendas Diárias")
plt.xlabel("Quantidade de Vendas")
plt.ylabel("Frequência")

plt.show()

O código está mais estilizado, mas segue o mesmo padrão anterior: Importação da biblioteca, definição de variáveis, criação do histograma. Porém, para definir o estilo, foi adicionado um tamanho para a figura e posicionamento dos marcadores para melhorar a visualização (linha 6 e 8 respectivamente).

 image

Podemos perceber que a maioria dos intervalos aparecem uma única vez na tabela, com exceção do intervalo entre 85 e 90 que possuem duas amostras (quinta e sábado). Também podemos abstrair a informação que diversos intervalos não estão presentes, podendo levantar hipóteses do porquê isso ocorre.

Gráfico de Setores - Pizza

Esses gráficos são formados a partir de um círculo e divididos proporcionalmente de acordo com os dados analisados. Os valores são expressos em números ou porcentuais. Geralmente, não se recomenda o uso de três dimensões, afim de facilitar a visualização da informação (IBGE, 2023).

Eles são utilizados para analisar a composição de um todo em termos de proporções. Assim, podemos mostrar a distribuição de gastos de um orçamento ou a participação de diferentes categorias em relação ao total.  

Como se trata de uma setorização, vamos utilizar como exemplo a tarefa de descobrir em porcentual a quantidade de funcionários da empresa Gourmi em diferentes regiões do Brasil para tomarmos a decisão de realocar funcionários ou mantê-los na mesma equipe. 

 image

Seria trabalhoso calcular e analisar através da tabela, mas acho que você já entendeu que utilizando o Python a tarefa fica otimizada: 

import matplotlib.pyplot as plt

regioes = ['Norte', 'Nordeste', 'Centro-Oeste', 'Sudeste', 'Sul', 'Centro-Sul', 'Centro-Norte']

funcionarios = [100, 200, 150, 300, 250, 180, 1180]

plt.pie(funcionarios, labels=regioes, autopct='%1.1f%%')
plt.title("Quantidade de Funcionários por Região")

plt.show()

Esse código é um pouco mais simples e segue o mesmo padrão que foi apresentado anteriormente.

 image

 

Através do gráfico de setores, notamos que metade dos funcionários da empresa estão na região Centro-Norte e que as regiões Norte, Nordeste e Centro-Oeste possuem poucos funcionários. 

Neste caso, poderíamos estudar a realocação de alguns funcionários para equilibrar o número das equipes. Porém, é importante ressaltar que em um caso real, existem muitas variáveis como demanda de mão-de-obra, custos, impostos, dentre outros.

Gráfico de Dispersão

Também chamados de diagrama de disposição, gráfico de correlação ou Scatter. Esse modelo é representado por eixos e pontos que podem estar mais agrupados ou dispersos. É formado por uma variável independente (causa), que é representada no eixo horizontal, e outra dependente (consequência) no eixo vertical (COUTINHO, 2023).

Utilizado quando queremos explorar a relação entre duas variáveis numéricas, ou seja, se existe padrões ou tendências entre variáveis analisadas.

Essa relação entre variáveis pode ser de três tipos (TRYBE, 2022):

  • Correlação Negativa: Quando existe uma tendência de valores decrescentes 
  • Correlação Nula: Quando os pontos não seguem uma tendência
  • Correlação Positiva: Quando existe uma tendência de valores crescentes

Para exemplificar o gráfico de dispersão, vamos utilizar uma tabela um pouco maior mostrando o tempo de entrega dos produtos da Gourmi em minutos e a nota de satisfação atribuída pelos clientes. Dessa vez, tentaremos descobrir se existe uma relação entre essas duas variáveis:

 image

 Com os dados espalhadas dessa maneira, fica difícil entender se existe uma relação. Vamos passar o nosso cenário para as linhas de código:

import matplotlib.pyplot as plt

tempo_entrega = [25, 40, 30, 20, 35, 50, 15, 45, 55, 28, 33, 22, 38, 17, 42]
nota_satisfacao = [8, 6, 9, 7, 5, 4, 10, 6, 2, 9, 7, 8, 5, 10, 6]

plt.scatter(tempo_entrega, nota_satisfacao, color='b', edgecolors='black')
plt.title("Tempo de Entrega vs. Nota de Satisfação")
plt.xlabel("Tempo de Entrega (minutos)")
plt.ylabel("Nota de Satisfação")
plt.grid(True)

plt.show()

Assim como os exemplos anteriores, importamos a biblioteca com as funções de geração de gráficos, passamos os dados da tabela para variáveis, mudamos o tipo do gráfico para scatter e adicionamos algumas estilizações.

 image

Observando os dados no gráfico de dispersão, percebemos que existe uma correlação negativa, indicando que quanto mais o entregador demora para levar o pedido, menor é a nota de satisfação do cliente. 

Também notamos que os dados estão relativamente dispersos, mostrando que o tempo de entrega costuma variar, podendo indicar um estudo de melhoria de rotas para os entregadores ou aumentar a quantidade de funcionários.

Gráfico de Caixa - Boxplot

É representado por uma caixa com os valores mínimos, máximos, primeiro e terceiro quartis, mediana e outliers. Na parte central do gráfico, encontra-se os valores da mediana, primeiro e terceiro quartil. As hastes inferior e superior representam os intervalos mínimos e máximos, respectivamente (IBM, 2023).

Utilizado para visualizar a distribuição de uma variável numérica, ele nos fornece uma visão detalhada das estatísticas dos dados, facilitando principalmente a análise entre quartis, mediana, amplitude e outliers.

Para facilitar a teoria, vamos ver outro exemplo da Gourmi, dessa vez, nós iremos analisar os salários dos homens e mulheres e descobrir mais informações sobre esses dados através de conceitos estatísticos:

 image

Gerando um boxplot no Python podemos visualizar os dados com mais informações:

import matplotlib.pyplot as plt
import pandas as pd

data = {
'Gênero': ['Masculino', 'Feminino', 'Masculino', 'Feminino', 'Masculino', 'Feminino', 'Masculino'],
'Salário': [5000, 4500, 6200, 4800, 7500, 5200, 6800]
}

df = pd.DataFrame(data)

plt.boxplot([df[df['Gênero'] == 'Masculino']['Salário'], df[df['Gênero'] == 'Feminino']['Salário']])
plt.xticks([1, 2], ['Masculino', 'Feminino'])
plt.title("Distribuição de Salários por Gênero")
plt.ylabel("Salário (R$)")

plt.show()

Para esse exemplo, importamos outra biblioteca famosa dentro da ciência de dados chamada Pandas, ela é utilizada para a manipulação e organização de dados. 

Diferente dos outros exemplos, atribuímos as variáveis através de um dicionário, isso facilita a criação de um Data Frame, como mostrado na sequência com o Pandas (pd.DataFrame(data)).

Para exibir os dados com boxplot, selecionamos a coluna Gênero e fizemos uma filtragem para mostrar os salários de acordo com o sexo. 

Por fim, apresentamos mais algumas linhas de estilização, com labels, título e posicionamento dos marcadores. 

 image

Esse gráfico é muito rico em informações, note que é possível visualizar a média salaria e perceber que os homens ganham R$6.500,00 e as mulheres R$4.800,00 aproximadamente.  

Também podemos notar os valores de mínimo e máximos indicados pelas hastes horizontais, demonstrando que os homens ganham no mínimo R$5.000,00 e no máximo R$ 7.500,00, enquanto as mulheres possuem o mínimo em R$4.500,00 e o máximo em R$5.200,00 aproximadamente.

Com essas informações, percebemos que o valor mínimo dos homens é semelhante ao máximo das mulheres, sendo necessário um estudo para entender os motivos dessa desigualdade.

Gráfico de Mapa de Calor - Heatmap

Utilizado para representar uma matriz de dados através de cores. É especialmente útil para visualizar a relação entre duas variáveis categóricas ou numéricas, destacando padrões e tendências (PROGRAMAÇÃO DINÂMICA, 2021). 

Esse modelo é muito utilizado no marketing para rastrear o caminho percorrido do usuário pelo mouse, afim de compreender seu comportamento em uma página de conversão (RODRIGUES, 2022).

Abaixo temos o exemplo da avaliação dos clientes da Gourmi em relação aos pratos oferecidos nos restaurantes. Nosso trabalho será verificar quais pratos possuem uma avaliação melhor e procurar entender o motivo:

 image

Vamos verificar esses dados no código:

import matplotlib.pyplot as plt
import numpy as np

dias_semana = ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo']
pratos = ['Pizza', 'Hambúrguer', 'Sushi', 'Salada', 'Massa', 'Churrasco', 'Sobremesa']

satisfacao = np.array([
[4, 5, 3, 4, 5, 4, 3],
[3, 4, 4, 3, 5, 4, 4],
[5, 5, 5, 4, 3, 5, 5],
[4, 3, 4, 3, 4, 3, 4],
[3, 4, 3, 4, 3, 4, 3],
[5, 4, 5, 5, 4, 5, 4],
[4, 3, 4, 4, 3, 4, 4]
])

plt.figure(figsize=(8, 6))
plt.imshow(satisfacao, cmap='coolwarm', aspect='auto')
plt.title("Satisfação do Cliente por Prato e Dia da Semana")
plt.xlabel("Dia da Semana")
plt.ylabel("Prato")
plt.xticks(np.arange(len(dias_semana)), dias_semana)
plt.yticks(np.arange(len(pratos)), pratos)
plt.colorbar(label='Satisfação')

plt.show()

Para demonstrar outra biblioteca famosa na ciência de dados, inserimos o Numpy, responsável por facilitar manipulações matemáticas. Ele foi utilizado para a criação de um array (ou matriz) para guardar as notas das avaliações.

As outras linhas são semelhantes aos exemplos anteriores, adicionamos o Matplotlib para gerar o gráfico, inserimos os dados em variáveis e fizemos a estilização do gráfico.

image

 

As áreas em vermelho representam as maiores notas, sendo possível perceber que o sushi é um prato bem avaliado em quase todos os dias da semana, podendo ser o carro chefe da empresa.  

Também podemos analisar que na sexta-feira existe uma boa avaliação de pizzas e hambúrgueres, podendo traçar uma análise do perfil do consumidor que visita o restaurante nesse dia da semana.

Gráfico de Área

Ele é formado por um conjunto de pontos que são ligados por uma linha, tendo a área abaixo dela preenchida. Deste modo, deve-se analisar toda a área formada entre o eixo e o ponto marcado durante o intervalo de tempo (TRYBE, 2022).

Ele é utilizado para visualizar a evolução de uma ou mais variáveis em um período. É útil para mostrar tendências, oscilações e comparar a distribuição de diferentes variáveis (IBM, 2021). 

Nessa tabela, exibimos a receita diária que a Gourmi arrecadou durante o primeiro semestre do ano:

 

image

Como padrão, o Matplotlib exibe o gráfico de linha (através do plt.plot), deste modo, adicionando a função fill_between, podemos preencher a área abaixo do gráfico:

import matplotlib.pyplot as plt

meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho']
receita = [50, 70, 65, 80, 90, 75, 60]

plt.figure(figsize=(8, 6))
plt.fill_between(meses, receita, color='skyblue', alpha=0.4)
plt.title("Receita Mensal da Empresa Gourmi")
plt.xlabel("Mês")
plt.ylabel("Receita (em milhares)")
plt.xticks(rotation=45)
plt.ylim(0, max(receita) * 1.2)

plt.show()

Quanto ao restante do código, mantemos o padrão dos outros exemplos, adicionando a biblioteca, inserindo os dados nas variáveis e estilizando os componentes visuais.

 image

Podemos perceber que houve um crescimento da receita entre Março e Maio, alcançando o seu pico em 90 milhões. Também temos uma visão mais global dos dados quando considerados em relação à tabela, mostrando que a partir do terceiro mês, a empresa teve um crescimento em relação ao primeiro trimestre.

Conclusão

Nesse artigo, demonstramos diversos tipos de gráficos e exemplos de aplicações através de uma empresa fictícia chamada Gourmi. Os exemplos foram pensados para estudantes iniciantes de ciência de dados que procuram se aprimorar nessa área.

É importante ressaltar que situações reais envolvem uma quantidade imensa de informações, existindo um estudo mais aprofundado para tomada de decisões.

Foi utilizado a linguagem Python que apresenta poderosas ferramentas como as bibliotecas Matplotlib, Numpy e Pandas, que facilitam a geração de gráficos e manipulação de dados.

Dominar esses conceitos é fundamental para a área, além de possibilitar o avanço da compreensão e análise de informações.  

Utilize esse artigo como um guia de consultas para iniciar seus estudos e aprofundar seus conhecimentos. Experimente, teste e descubra o poder dos gráficos na ciência de dados, você se surpreenderá com os resultados!

Referências

COUTINHO, Thiago, 2023: https://www.voitto.com.br/blog/artigo/diagrama-de-dispersao

IBGE, 2023: https://educa.ibge.gov.br/professores/educa-recursos/20773-tipos-de-graficos-no-ensino.html

IBM, 2021: https://www.ibm.com/docs/pt-br/cognos-analytics/11.0.0?topic=SSEP7J_11.0.0/com.ibm.swg.ba.cognos.ug_cr_pps.doc/c_as_ti_charts_area.htm

IBM, 2023: https://www.ibm.com/docs/pt-br/spss-statistics/saas?topic=examples-example-boxplot

PROGRAMAÇÃO DINÂMICA, 2021: https://www.youtube.com/watch?v=kEQAY4gcSd0

RODRIGUES, Leonardo, 2022 : https://www.voitto.com.br/blog/artigo/boxplot

SIGNIFICADOS, 2023: https://www.significados.com.br/histograma/

TRYBE, 2022: https://blog.betrybe.com/estatistica/principais-tipos-de-grafico/

Compartilhe
Recomendados para você
Suzano - Python Developer
BairesDev - Machine Learning Practitioner
Santander - Cibersegurança #2
Comentários (0)