Olá! Meu nome é Valquíria, sou instrutora na Escola de Dados.
Audiodescrição: Valquíria é uma mulher branca, de olhos castanhos, cabelos loiros e ondulados na altura abaixo dos ombros. Usa piercing no nariz e uma camiseta rosa. Está sentada em uma cadeira gamer e ao fundo, há uma parede lisa com iluminação degradê entre o verde e o azul. Ao lado esquerdo, um vaso com uma planta e ao direito uma prateleira com itens de decoração.
Neste curso, vamos focar na prática de criação de gráficos, com ênfase em gráficos de comparação. Para isso, temos um notebook preparado, onde vamos carregar alguns dados e criar os gráficos.
Vamos começar importando os dados. Para isso, utilizaremos a biblioteca Pandas e executaremos a célula de código correspondente, passando import pandas as pd
.
import pandas as pd
Em seguida, vamos ler um arquivo CSV e armazená-lo em uma variável chamada df
.
df = pd.read_csv('https://raw.githubusercontent.com/alura-cursos/python_dados/refs/heads/main/Dados/loja_vendas.csv')
Para visualizar as informações, vamos usar o método head()
, que exibe as cinco primeiras linhas do conjunto de dados.
df.head()
ID_compra | unidade | cidade | data | horario | categoria_produto | valor_unitario | quantidade | valor_total | metodo_pagamento | ID_cliente | programa_cashback | idade | avaliacao_compra |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Parque das nações | Santo André | 2022-01-03 | 15.40 | Eletrônicos | 4457.9 | 4 | 178316 | Dinheiro | 6149 | Sim | 30 | 10 |
1 | Oswaldo Cruz | São Caetano do Sul | 2022-01-03 | 16:48 | Ferramentas e construção | 115.9 | 1 | 115.9 | PIX | 9491 | Sim | 36 | 9 |
2 | Paulicéra | São Bernardo do Campo | 2022-01-03 | 12:08 | Beleza e cuidados pessoais | 68.9 | 2 | 137.8 | Cartão | 5288 | Não | 39 | 9 |
3 | Oswaldo Cruz | São Caetano do Sul | 2022-01-03 | 9:28 | Ferramentas e construção | 80.9 | 5 | 404.5 | PIX | 9679 | Sim | 35 | 10 |
8 | Parque das nações | Santo André | 2022-01-03 | 13:02 | Beleza e cuidados pessoais | 165.0 | 660.0 | PIX | 1380 | Não | 50 |
Os dados carregados são de uma rede de lojas de departamento, contendo informações sobre vendas, produtos vendidos, valores e clientes. A ideia é construir gráficos de comparação para identificar padrões e semelhanças entre esses dados e extrair insights.
Podemos começar somando o valor total de vendas para cada unidade das lojas, verificando qual delas teve o melhor desempenho. Para isso, importaremos a biblioteca Seaborn para criar os gráficos. Para isso, passamos o código import seaborn as sns
.
import seaborn as sns
Um gráfico de colunas seria ideal para mostrar esses valores totais de cada unidade, facilitando a visualização e comparação. Para criar o gráfico de colunas, faremos um agrupamento pela unidade usando o método groupby()
, somando o valor total. Uma dica é usar o método reset_index()
no final para criar uma nova coluna contendo o índice, facilitando o acesso à unidade e ao valor total para criar o gráfico.
Usaremos a função barplot()
da biblioteca Seaborn, passando x
como a unidade, y
como o valor total, e definindo os dados como o df_unidade
unidade.
# Agrupando por unidade e somando o valor total
df_unidade = df.groupby('unidade')['valor_total'].sum().reset_index()
# Criando o gráfico de colunas
sns.barplot(x='unidade', y='valor_total', data=df_unidade)
Executando a célula, obtemos o gráfico de colunas, onde podemos verificar que a unidade Oswaldo Cruz teve o maior valor total, seguida de Parque das Nações e Pauliceia.
Além de gráficos de coluna para comparar valores, podemos usar gráficos para comparar frequências. Por exemplo, podemos verificar qual é o método de pagamento mais frequente usado pelos clientes. Para isso, usaremos a função countplot()
, que conta quantas vezes uma categoria é exibida. Passaremos x
como o método de pagamento e definiremos os dados como nosso DataFrame df
.
# Criando o gráfico de contagem
sns.countplot(x='metodo_pagamento', data=df)
Ao executar a célula, visualizamos o seguinte gráfico:
Para melhorar a visualização, podemos ordenar as categorias. Para isso, criamos uma variável para armazenar o método de pagamento, usando value_counts()
para ordenar do maior para o menor valor.
# Ordenando os dados da maior contagem para menor
metodo_pagamento_contagem = df['metodo_pagamento'].value_counts()
metodo_pagamento_contagem
metodo_pagamento | |
---|---|
Cartão | 2851 |
PIX | 2244 |
Carteira digital | 547 |
Dinheiro | 527 |
Após a ordenação, criamos novamente o gráfico, passando o parâmetro order
com a variável criada, especificando o índice como o método de pagamento. Assim, teremos as colunas ordenadas, facilitando a visualização e análise.
# Criando o gráfico de contagem ordenado
sns.countplot(x='metodo_pagamento', data=df, order=metodo_pagamento_contagem.index)
Assim, temos as colunas ordenadas, facilitando a visualização e a análise. Se quisermos comparar o método de pagamento em cada unidade da rede de lojas, podemos criar um gráfico de colunas agrupadas. Para isso, usamos o countplot()
com um parâmetro adicional hue
, definindo-o como a unidade. Isso atribui cores diferentes de acordo com a coluna passada, no caso, a coluna de unidade. O resultado é um gráfico de colunas com cores diferentes para cada unidade, com uma legenda indicando as cores.
# Criando o gráfico de contagem com hue
sns.countplot(x='metodo_pagamento', data=df, order=metodo_pagamento_contagem.index, hue='unidade')
Podemos mudar as cores usando paletas pré-definidas pelo Seaborn ou Matplotlib, ou definir paletas próprias. Focaremos em paletas pré-definidas, como a Set2
. Adicionamos o parâmetro palette
no código, definindo a paleta desejada.
# Definindo uma paleta de cores
sns.countplot(x='metodo_pagamento', data=df, order=metodo_pagamento_contagem.index, hue='unidade', palette='Set2')
Até o momento, trabalhamos com comparações entre poucas categorias. Se tivermos muitas categorias, podemos somar a quantidade de cada tipo de produto. Faremos um agrupamento pela coluna categoria_produto
, somando a quantidade de produtos vendidos. Usamos reset_index
para acessar facilmente as colunas geradas.
Criamos um barplot()
usando x
como a categoria do produto e y
como a quantidade, passando os dados como a variável criada pelo agrupamento.
# Agrupando por categoria e somando a quantidade
soma_categorias_produtos = df.groupby('categoria_produto')['quantidade'].sum().reset_index()
# Criando o gráfico de colunas
sns.barplot(x='categoria_produto', y='quantidade', data=soma_categorias_produtos)
Porém, ao executar, repare que, como temos muitas categorias, os nomes se sobrepõem, dificultando a visualização. Nesse caso, podemos transformar o gráfico de colunas em um gráfico de barras, virando-o na horizontal. Então, no código, trocamos x
por y
e y
por x
, mantendo os dados iguais.
# Criando o gráfico de barra
sns.barplot(y='categoria_produto', x='quantidade', data=soma_categorias_produtos)
Porém, como mencionamos anteriormente, não é recomendado exibir as barras desordenadas. Então, criamos uma variável para ordenar os produtos, usando sort_values
pela coluna de quantidade e ascending=False
para ordenar do maior para o menor valor. Executamos o código com os dados ordenados, obtendo um gráfico claro e organizado.
# Ordenando os dados da maior quantidade para menor
soma_categorias_produtos_ordenado = soma_categorias_produtos.sort_values(by=['quantidade'], ascending=False)
# Criando o gráfico de barra ordenado
sns.barplot(y='categoria_produto', x='quantidade', data=soma_categorias_produtos_ordenado)
Exploramos gráficos de colunas e barras, mas falta um tipo de gráfico de comparação importante: o gráfico de linhas. Com dados que envolvem tempo, como datas, podemos comparar vendas mensais. O gráfico de linhas é ideal para isso.
Para isso, primeiro transformamos a coluna de data no formato datetime
da biblioteca Pandas, aplicando pd.to_datetime()
e definindo o formato padrão.
# Transformando a coluna data em datetime
df['data'] = pd.to_datetime(df['data'], format='%Y-%m-%d')
Agrupamos as informações pela data, somando o valor total para verificar o número de vendas diárias. Usamos reset_index
para facilitar o acesso aos dados.
Criamos um lineplot()
, passando x
como a data e y
como o valor total, definindo os dados como vendas_diarias
. Executamos o gráfico, visualizando as informações de janeiro de 2022 a janeiro de 2023, permitindo verificar períodos de maior e menor valor de vendas.
# Agrupando por data e somando o valor total
vendas_diarias = df.groupby('data')['valor_total'].sum().reset_index()
# Criando o gráfico de linhas
sns.lineplot(x='data', y='valor_total', data=vendas_diarias)
Para customizar os gráficos, importamos o módulo pyplot
da biblioteca Matplotlib. Podemos definir o tamanho da figura, aumentar a largura e altura, e adicionar informações essenciais como título e labels para os eixos x
e y
. Usamos sns.despine
para remover caixas laterais e plt.show
para exibir o gráfico sem texto sobreposto.
import matplotlib.pyplot as plt
# Definindo o tamanho da figura
plt.figure(figsize=(10, 4))
# Plotando o gráfico
sns.lineplot(x='data', y='valor_total', data=vendas_diarias)
# Definindo o título do gráfico
plt.title('Vendas diárias ao longo do tempo', loc='left', fontsize=18)
# Definindo a label do eixo x
plt.xlabel('Ano/Mês', fontsize=12)
# Definindo a label do eixo y
plt.ylabel('Valor (R$)', fontsize=12)
# Removendo a borda do gráfico
sns.despine()
# Exibindo o gráfico
plt.show()
Assim, temos um gráfico mais organizado e informativo.
Revisamos diversos gráficos de comparação. Agora, é hora de praticar nos exercícios seguintes, aprimorando habilidades na criação de gráficos. Vamos lá!
O curso Praticando gráficos: criando gráficos de comparação possui 14 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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.