0
respostas

[Projeto] 09 Desafio: gráficos de comparação - Colunas e barras empilhadas

Desafio 1: Vendas na Região Centro-Oeste (2017-2018)

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

1. Preparação dos dados

df = pd.read_csv('relatorio_vendas.csv')
df['data_pedido'] = pd.to_datetime(df['data_pedido'])
df['ano'] = df['data_pedido'].dt.year

2. Filtragem: Região Centro-Oeste e anos 2017/2018

vendas_co = df.query('regiao == "Centro-Oeste" and ano in [2017, 2018]')

3. Agrupamento para o gráfico de colunas agrupadas

vendas_agrupadas = vendas_co.groupby(['estado', 'ano'])['vendas'].sum().reset_index()

4. Construção do gráfico

fig, ax = plt.subplots(figsize=(10, 6))
sns.set_theme(style="white")
ax = sns.barplot(data=vendas_agrupadas, x='estado', y='vendas', hue='ano', palette='viridis')

ax.set_title('Vendas por Estado na Região Centro-Oeste (2017-2018)', fontsize=14, loc='left')
ax.set_xlabel('Estado')
ax.set_ylabel('Vendas (R$)')

sns.despine()
plt.show()

Desafio 2: Modos de Envio por Departamento (Percentual)

1. Criar a tabela cruzada (Crosstab)

tabela_envio = pd.crosstab(df['departamento'], df['modo_envio'])

2. Transformar valores absolutos em percentuais (Relativo)

Dividimos cada linha pela sua soma total

tabela_percentual = tabela_envio.div(tabela_envio.sum(axis=1), axis=0) * 100

3. Gerar o gráfico de barras empilhadas

ax = tabela_percentual.plot(kind='barh', stacked=True, figsize=(12, 6),
color=['#0077b6', '#00b4d8', '#90e0ef', '#caf0f8'])

4. Ajustes estéticos

ax.set_title('Proporção de Modos de Envio por Departamento (%)', fontsize=14, loc='left')
ax.set_xlabel('Percentual (%)')
ax.set_ylabel('Departamento')
ax.legend(title='Modo de Envio', bbox_to_anchor=(1, 1))

Remover bordas desnecessárias

sns.despine(left=True, bottom=True)
plt.show()