1
resposta

[Dúvida] O uso do @ e a expressão @produtos.

produtos = ['Café au lait', 'Espresso', 'Cappuccino']
vendas.query('produto in @produtos and metodo_pagamento == "PIX" ')

Na linha de código acima qual seria a função específica do @ e qual a ação do @produtos ?

1 resposta

Oii, Cauã! Tudo bem?

Para entender o papel do @, precisamos lembrar que o texto dentro da função query() é lido como uma "string de consulta" isolada.

A função específica do @:

O símbolo @ serve para indicar ao Pandas que você quer acessar uma variável externa, ou seja, uma variável que foi definida fora da string de consulta, no seu ambiente Python. Sem o uso do @, o Pandas tentaria procurar uma coluna chamada "produtos" dentro do seu arquivo CSV, o que causaria um erro, já que essa coluna não existe no DataFrame.

A ação do @produtos:

Nesse caso específico, o @produtos realiza as seguintes ações:

  • Referência dinâmica: Ele "puxa" o conteúdo da lista ['Café au lait', 'Espresso', 'Cappuccino'] para dentro da consulta.
  • Filtragem por conjunto: Combinado com o operador in, ele orienta o Pandas a verificar, linha por linha, se o item escrito na coluna "produto" consta dentro dessa lista externa.
  • Praticidade: Permite que você altere os itens da lista produtos em qualquer lugar do seu código e a consulta se atualize automaticamente, sem que você precise reescrever a string do query().

Pra ficar mais claro, veja como o Pandas interpreta o que você escreveu:

  • Com @: "Procure na coluna produto itens que estejam na lista externa chamada produtos."
  • Sem @: "Procure na coluna produto itens que estejam em outra coluna do DataFrame chamada produtos." (Isso geraria erro se a coluna não existisse).

É uma ferramenta muito útil para tornar suas análises mais dinâmicas e limpas.

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