image

Acesse bootcamps ilimitados e +650 cursos

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

8 Gráficos Fundamentais para Data Science Utilizando 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
    Comentários (0)