1
resposta

[Dúvida] Dúvida sobre salvar resultado com o método query()

Olá, instrutores, tudo bem?

Consegui acompanhar a aula e entender os filtros que a professora aplicou ao longo do desenvolvimento.
Porém, fiquei com uma dúvida neste momento:

df = df.query('Tipo == "Apartamento"')

O primeiro filtro foi feito assim:

df = dados.query('@imoveis_comerciais not in Tipo')

Em seguida, a professora salvou o segundo filtro na mesma variável df:

df = df.query('Tipo == "Apartamento"')

Entendi, de certa forma, que o resultado filtrado foi sobrescrito sobre ele mesmo na segunda etapa. Minha dúvida é:

  • Como isso acontece “debaixo dos panos”?
  • Qual é a diferença entre sobrescrever o DataFrame original e criar uma nova variável para cada filtro?

Agradeço desde já!

1 resposta

Olá, Tereza, tudo bem?

Quando você usa df = df.query('Tipo == "Apartamento"'), o método query() cria um novo DataFrame apenas com as linhas que atendem ao filtro. Esse novo objeto é então atribuído novamente à variável df. Na prática, o Python está atualizando a referência da variável df para apontar para esse novo DataFrame. O anterior só permanece na memória caso ainda exista outra variável apontando para ele; caso contrário, será descartado pelo coletor de lixo.

Agora, sobre a diferença entre sobrescrever e criar uma nova variável, podemos pensar assim:

  • Sobrescrever o DataFrame
    Utilizamos quando não precisamos mais dos dados originais e queremos economizar memória. Porém, perdemos a possibilidade de voltar ao DataFrame completo. Também ajuda a manter o código mais enxuto e organizado, já que evita a criação de várias variáveis intermediárias.

  • Criar uma nova variável
    Mantém os dados originais intactos, o que é interessante em análises exploratórias, já que podemos aplicar diferentes filtros e comparar resultados. Por exemplo:

    df_apartamentos = df.query('Tipo == "Apartamento"')
    

    Assim, df continua com todos os registros, e df_apartamentos contém apenas os filtrados.

Portanto, sobrescrever é mais econômico, mas menos flexível; criar uma nova variável dá mais segurança e liberdade durante a análise.

Espero ter esclarecido sua dúvida.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!