1
resposta

Dúvida: uso de .Query ou conforme visto na aula

Bom dia, como vocês estão? Gostaria de saber se existe alguma diferença entre usar o .Query ou realizar as consultas conforme visto na aula. Se existir, quais são?

1 resposta

Bom dia Lucas,

Peço desculpas pela demora, essa realmente é uma pergunta interessante, quando eu vi os dois métodos pela primeira vez eu também fiquei curioso mas não encontrei nada sobre essa comparação.

Olhando diretamente no código original do pandas eu percebi que por trás os dois são bem parecidos, o query acaba utilizando o método de seleção da aula através do loc (loc é uma opção do pandas para selecionar linhas).

Código da função query:

# Obs.: Removi os comentários
def query(self, expr, inplace=False, **kwargs):
    inplace = validate_bool_kwarg(inplace, "inplace")
    if not isinstance(expr, str):
        msg = f"expr must be a string to be evaluated, {type(expr)} given"
        raise ValueError(msg)
    kwargs["level"] = kwargs.pop("level", 0) + 1
    kwargs["target"] = None
    res = self.eval(expr, **kwargs)

    try:
        new_data = self.loc[res]
    except ValueError:
        # when res is multi-dimensional loc raises, but this is sometimes a
        # valid query
        new_data = self[res]

    if inplace:
        self._update_inplace(new_data)
    else:
        return new_data

Como pode ser visto o query tenta buscar através do loc: new_data = self.loc[res] e como segunda opção caso o loc não funcione ele utiliza a seleção direta vista na aula: new_data = self[res]

Finalmente esse artigo (em inglês) fala sobre algumas vantagens do uso do query, principalmente vantagens de sintaxe do código, pois deixa mais claro que você está fazendo uma seleção no DataFrame.

Espero ter ajudado, qualquer dúvida é só falar.