Qual a necessidade de utilizar :
eh_tipo = dados['Tipo'] == tipo
Pois, aomeu ver sempre vai ser True
Obrigado pela ajuda
Qual a necessidade de utilizar :
eh_tipo = dados['Tipo'] == tipo
Pois, aomeu ver sempre vai ser True
Obrigado pela ajuda
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 .