Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida na lógica utilizada no for

Qual a necessidade de utilizar :

eh_tipo = dados['Tipo'] == tipo

Pois, aomeu ver sempre vai ser True

Obrigado pela ajuda

2 respostas
solução!

Olá Fernando, tudo bem? Espero que sim!

Acompanhando o código, foi criado uma variável grupo_tipo com os dados agrupados por 'Tipo':

grupo_tipo = dados.groupby('Tipo')

Ao executar o for por grupo_tipo.groups.keys(), vamos coletar a informação de tipo um a um e não todos de uma vez. Portanto, quando realizamos:

dados_new = pd.DataFrame()
for tipo in grupo_tipo.groups.keys():
    eh_tipo = dados['Tipo'] == tipo
    eh_dentro_limite = (dados['Valor'] >= limite_inferior[tipo]) & (dados['Valor'] <= limite_superior[tipo])
    selecao = eh_tipo & eh_dentro_limite
    dados_selecao = dados[selecao]
    dados_new = pd.concat([dados_new, dados_selecao])

Primeiramente o tipo será Apartamento, quando eh_tipo = dados['Tipo'] == tipo, é o mesmo que fazer eh_tipo = dados['Tipo'] == 'Apartamento' o que não corresponde a todos os valores True, somente será True quando for do tipo Apartamento.

Em seguida, o código continua selecionando somente os dados cujo valor seja maior que o limite inferior daquele tipo e menores que o limite superior daquele tipo. Realizamos a seleção desses dados e colocamos em um novo DataFrame.

O código segue para um outro tipo que é a casa e segue os mesmos passos, passando por todos os tipos existentes.

Ao fim teremos todos os tipos presentes. Entendo a sua dúvida de que estamos comparando todos os tipos e que a seleção pegaria todos os valores do DataFrame em algum momento. Mas estamos restringindo os valores do limite inferior e superior para cada tipo separadamente, uma vez que cada tipo terá seu próprio valor superior e inferior e assim nem todos os valores daquele tipo serão selecionados. Portanto é necessário realizar a seleção do tipo um a um.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Obrigado João me esclareu a dúvida .