Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Dúvida sobre uso do df.keys() ao invés do df.columns

Olá,

Escrevi a solução para este desafio conforme o código abaixo:

# Criação do dataframe com dados dos 2 datasets originais:
df = pd.DataFrame(vendas_2022, index = lojas)
df

# Criação dos gráficos de variação temporal das vendas em cada loja:
fig, axs = plt.subplots(nrows = 2, ncols = 2, figsize = (15,8))
plt.subplots_adjust(wspace = 0.3, hspace = 0.4)
fig.suptitle("Variação temporal mensal das vendas em cada loja:\nAno 2022")

axs[0,0].plot(df.loc["A", df.keys()])
axs[0,1].plot(df.loc["B", df.keys()])
axs[1,0].plot(df.loc["C", df.keys()])
axs[1,1].plot(df.loc["D", df.keys()])

for ax in axs.flat:
  ax.set_xlabel("Meses")
  ax.set_ylabel("Quantidade de vendas")

ymin = 0
ymax = 500
for ax in axs.flat:
  ax.set_ylim(ymin, ymax)
  ax.grid(True)

plt.show()

Gostaria de saber se, na linha do código axs[0,0].plot(df.loc["A", df.keys()]), o uso do df.keys() ao invés do df.columns é apropriado ou poderá gerar erros? No meu caso, deu tudo certo, com os gráficos iguais ao da resolução.

Obrigada.

1 resposta
solução!

Oii, Marina!

Que prazer analisar o seu código. É muito bom ver como você foi além do desafio básico, adicionando uma grade visual e padronizando os limites do eixo Y para tornar a comparação entre as lojas mais justa.

Sobre a sua dúvida técnica entre o uso de df.keys() e df.columns:

No Pandas, quando falamos de um DataFrame, o método .keys() é um herdeiro direto do comportamento de dicionários do Python.

Como o DataFrame é estruturado internamente como uma coleção de colunas, chamar .keys() retorna exatamente o que o atributo .columns entregaria: o índice das colunas.

Então, não está errado e não deve gerar erros. Olha como ambos se comportam:

  • df.columns: É o atributo padrão e mais direto para acessar os nomes das colunas.
  • df.keys(): É um método que faz a mesma coisa, mas é menos comum de encontrar em documentações de Data Science, sendo mais usado por quem vem do mundo do desenvolvimento Python puro.

Uma observação sobre o seu código

Embora funcione perfeitamente, o uso de df.loc["A", df.keys()] acaba sendo um pouco redundante. No Pandas, se você quer plotar todos os dados de uma linha específica, basta passar o índice da linha.

axs[0,0].plot(df.loc["A"])

Ao não especificar as colunas, o Pandas assume que você deseja utilizar todas as disponíveis para aquela linha, usando os nomes das colunas (os meses) automaticamente para o eixo X.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!