Olá, Diego! Como vai?
Obrigado por aguardar nosso retorno!
Execute o seguinte código em uma célula de um novo notebook no Google Colab:
# Definindo a paleta de cores
AZUL1, AZUL2, AZUL3, AZUL4, AZUL5 = '#03045e', '#0077b6', "#00b4d8", '#90e0ef', '#CDDBF3'
CINZA1, CINZA2, CINZA3, CINZA4, CINZA5 = '#212529', '#495057', '#adb5bd', '#dee2e6', '#f8f9fa'
VERMELHO1, LARANJA1, AMARELO1, VERDE1, VERDE2 = '#e76f51', '#f4a261', '#e9c46a', '#4c956c', '#2a9d8f'
import pandas as pd
vendas = pd.read_csv("https://raw.githubusercontent.com/alura-cursos/dataviz-graficos/master/dados/relatorio_vendas.csv")
# Atualizando as colunas de pedido e envio para o tipo data
vendas["data_envio"] = pd.to_datetime(vendas["data_envio"], format="%Y-%m-%d")
vendas["data_pedido"] = pd.to_datetime(vendas["data_pedido"], format="%Y-%m-%d")
# Criando um df desejado
df_vendas_ano = vendas.copy()
df_vendas_ano = df_vendas_ano[["data_pedido", "vendas"]]
# Gerando uma coluna que represente apenas os anos
df_vendas_ano["ano"] = df_vendas_ano.data_pedido.dt.year
df_vendas_ano.drop(labels = "data_pedido", axis = 1, inplace = True)
# Agrupando os dados por ano
df_vendas_ano = df_vendas_ano.groupby(['ano']).sum()
# Importando as bibliotecas
import seaborn as sns
import matplotlib.pyplot as plt
# Área do gráfico e tema da visualização
sns.set_theme(style="white")
fig, ax = plt.subplots(figsize=(10,4))
# Gerando o gráfico de colunas
ax = sns.barplot(data = df_vendas_ano, x = df_vendas_ano.index, y="vendas", palette = [AZUL2])
# Personalizando o gráfico
ax.set_title("Vendas das lojas de departamentos de\n 2016 a 2019", loc="left", fontsize=18, color= CINZA1)
ax.set_xlabel("")
ax.set_ylabel("")
ax.xaxis.set_tick_params(labelsize = 14, labelcolor = CINZA2)
sns.despine(left= True, bottom = True)
# Escrevendo os valores de cada barra no gráfico
ax.set_yticklabels([])
for i, valor in enumerate(df_vendas_ano["vendas"]):
qtd = f'R$ {valor:,.0f}'.replace(",",".")
offset = 1e5
ax.text(i, valor + offset, qtd, color = CINZA2, fontsize =12, ha = "center", va = "center")
É uma compilação dos códigos executados pela pessoa instrutora, a diferença é que estou usando df_vendas_ano = df_vendas_ano.groupby(['ano']).sum()
.
Como resultado nós temos:

Agora, em uma outra célula, execute esse bloco de código a seguir que possui o laço for
:
# Gerando a função para criar o gráfico de colunas
def grafico_vendas(cores: list=[AZUL2]):
import matplotlib.pyplot as plt
import seaborn as sns
fig, ax = plt.subplots(figsize=(10,4))
sns.set_theme(style="white")
ax = sns.barplot(data = df_vendas_ano, y='vendas', x = df_vendas_ano.index, palette = cores)
ax.set_title("Vendas das lojas de departamentos\nde 2016 a 2019", loc="left", fontsize=18, color= CINZA1)
ax.set_xlabel("")
ax.set_ylabel("")
ax.xaxis.set_tick_params(labelsize = 14, labelcolor = CINZA2)
sns.despine(left= True, bottom = True)
ax.set_yticklabels([])
for i, valor in enumerate(df_vendas_ano["vendas"]):
qtd = f'R$ {valor:,.0f}'.replace(",",".")
offset = 1e5
ax.text(i, valor + offset, qtd, color = CINZA2, fontsize =12, ha = "center", va = "center")
return ax
# Definindo as cores
cores = []
for ano in df_vendas_ano.index:
if df_vendas_ano.loc[ano,"vendas"] == df_vendas_ano.vendas.max():
cores.append(AZUL2)
else:
cores.append(AZUL5)
# Chamando a função
ax = grafico_vendas(cores)
E como resultado temos:

Repare que é possível obter o mesmo resultado ainda que a gente use df_vendas_ano = df_vendas_ano.groupby(['ano']).sum()
, sem aggregate()
!
Sugiro que você execute esses blocos de código no seu computador, e depois compare para saber qual ou quais trechos foram deixados de ser executados no momento em que você estava realizando as aulas.
Espero ter ajudado!