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?
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?
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).
# 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.