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

Dúvidas com ~ e lógica usada para o IPTU

Boa tarde,

1) Não entendi a explicação do professor quanto ao código usando o ~ em dados = dados[~selecao]. Está claro que o ~ inverte a lógica boolena de seleção, o que não entendi é como esse comando é capaz de eliminar os registros. No exemplo imediatamente anterior dados.dropna(subset = ['Valor'], inplace=True), o método .dropna deixa claro que há a eliminação dos registros nulos.

Poderia explicar melhor o uso do ~ no sentido de eliminar registros?

2) Apenas uma observação: acredito que a lógica de campos nulos em IPTU não seja de preenche-los com ZERO e sim eliminar essas linhas, já que não existe imóvel sem IPTU. Ou seja, nesse caso, o dataframe está incorreto e seria preciso eliminar os registros, assim como foi feito para 'Apartamento' com 'Condomínio' nulo.

Obrigado,

1 resposta
solução!

Olá Frederico,

O ~ não tem ligação direta com a eliminação, o que ele faz é inverter os valores de selecao e pronto como você já mencionou. Para facilitar o entendimento é bom ver isso como dois passos, primeiro é invertido os valores de selecao e depois filtramos o DataFrame dados baseado na selecao.

Explicando melhor essa eliminação, o que o pandas faz quando você passa um lista de valores booleanos como em dados[selecao] é retornar cada linha de dados onde o valor de selecao é True, e descartar onde for False

Exemplo:

Acho que esse exemplo em menor escala ajuda a visualizar o que está acontecendo. Segue o código para você copiar e poder fazer mais testes:

import pandas as pd

df = pd.DataFrame([1, 3, 5, 4], columns=['valor'])

# Pode ser uma lista simples [True, False] mas o ~ só funciona em uma Series
filtro = pd.Series([True, False, True, False])

# Aplicando o filtro diretamente
df[filtro]

# Aplicando o inverso do filtro
df[~filtro]

Sobre o ponto 2 que você mencionou realmente deve fazer mais sentido eliminar, mas acho que o instrutor focou mais em mostrar a técnica de tratamento de dados do que pensar no cenário real.

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