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

Não entendi o propósito de parte do código

Estou colocando abaixo a parte que não entendi. Por que não pode usar o grupo_tipo no lugar de dados['Valor'] ???

eh_dentro_limite = (dados['Valor'] >= limite_inferior[tipo]) & (dados['Valor'] <= limite_superior[tipo])
2 respostas
solução!

Olá, Thayna. Tudo bem?

Primeiramente, vamos entender o que temos tanto no grupo_tipo quanto no dados['Valor'].

Se formos exibir apenas o grupo_tipo, teremos o seguinte resultado:

grupo_tipo

Saída:

pandas.core.groupby.generic.SeriesGroupBy object at 0x00000230C9B6D100>

Não nos diz muita coisa, certo?

Então, vamos olhar sobre o quê estamos percorrendo no for:

grupo_tipo.groups.keys()

Saída:

dict_keys(['Apartamento', 'Casa', 'Casa de Condomínio', 'Casa de Vila', 'Quitinete'])

Como podemos ver, estamos percorrendo as chaves dos grupos (grupo_tipo.groups).

Agora, vamos ver o que temos nas colunas Valor e Tipo :

dados.loc[:, ['Tipo', 'Valor']].head()

Saída:

TipoValor
0Quitinete1700.0
1Casa7000.0
2Apartamento800.0
3Apartamento800.0
4Apartamento1300.0

Como você pode ver, cada tipo de imóvel tem seu respectivo valor.

Então, o que queremos saber é se os valores dos imóveis dos tipos que estamos percorrendo - Apartamento, Casa, Casa de Condomínio, etc - estão dentro dos limites inferiores e superiores. Ou seja, o grupo_tipo não seria útil para verificar os valores de cada tipo de imóvel, pois ele não armazena essa informação, ele guarda apenas onde cada tipo de imóvel está no DataFrame dados.

Por esse motivo, utilizamos o dados['Valor'], pois ele irá retornar uma Series do pandas dizendo quais valores daquele tipo de imóvel específico estão ou não dentro dos limites.

Como exemplo, vou verificar se os valores estão dentro dos limites para o tipo de imóvel Apartamento:

(dados['Valor'] >= limite_inferior['Apartamento']) & (dados['Valor'] <= limite_superior['Apartamento']) 

Saída:

0True
1True
2True
3True
4True
...
21821True
21822True
21823True
21824True
21825True

Name: Valor, Length: 21826, dtype: bool

Depois disso, vamos filtrar os resultados que não fazem parte do tipo Apartamento, pois o dados['Valor'] está verificando os valores de todos os tipos.

Isso é feito no trecho final do for:

selecao = eh_tipo & eh_dentro_limite

Dessa forma, podemos saber se os valores do tipo de imóvel Apartamento estão ou não dentro dos limites.

 

Espero ter ajudado, Thayna. Se tiver mais alguma dúvida, estou à disposição. Bons estudos =)

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

Eu entendi sua explicação.

Mas na aula extra acontece algo que fiquei curiosa, pois me parece ser contra essa sua explicação.

Veja o código:

grupo = dados.groupby('Tipo')['Valor']

label = grupo.mean().index

valores = grupo.mean().values

g4.bar(label, valores)

g4.set_title('Valor médio por Tipo')

Como pode ser feito uma seleção matemática (.mean) com o dado 'grupo'? Ele não demonstra os valores, mas sim a posição em que eles se encontram, igualmente com o dado 'grupo_tipo' que foi descrito anteriormente.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software