1
resposta

Duvida sobre o For

Olá! Achei no forum uma ótima explicação do laço for nesta parte do treinamento:

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])

A única coisa que não ficou tão clara para mim é a necessidade de se criar o dataframe dados_new. Somente o dados_seleção já não traria todas as informações necessárias?

1 resposta

Oi Claudia! Tudo bem com você?

As informações trazidas pela variável dados_selecao alternam a cada repetição do laço for, desse modo, ela está sendo usada apenas como um armazenamento temporário de dados para que dados_new armazene esse dado de uma forma mais permanente.

Nesse caso, a melhor opção seria não utilizar dados_selecao dentro do for, pois ela está apenas armazenando um dado temporariamente para ser salvo em outra variável, o que não torna ela tão útil. Podemos adaptar o código para a seguinte estrutura:

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_new = pd.concat([dados_new, dados[selecao]])

Nessa estrutura existem mais variáveis de armazenamento temporário como eh_tipo, eh_dentro_limite e selecao, isto abre a possibilidade de colocar toda a estrutura do for em apenas uma linha, com apenas uma variável para armazenamento. No entanto, isso não seria muito didático, e poderia prejudicar o aprendizado de alguns alunos e alunas.

Eu espero ter te ajudado! Se surgir outra dúvida estarei à disposição ;-)

Bons estudos!

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

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