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

[Dúvida] Dificuldades para entender a seleção feita pelo professor

Boa tarde, estou com dificuldades para entender o que o for está executando na aula [https://cursos.alura.com.br/course/introducao-python-pandas/task/41003]('Identificando e Removendo Outliers por Grupo)

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

Se alguém puder me ajudar.

2 respostas
solução!

Boa tarde! Vou tentar explicar o que esse código faz.

  • Cria um novo DataFrame chamado "dados_new" vazio.

  • Percorre num 'for loop' as chaves do objeto "grupo_tipo.groups.keys()", onde é executado no loop:

Uma seleção na coluna 'Tipo' do dataframe 'dados'.

Uma seleção das linhas do DataFrame original "dados" que correspondem ao tipo atual (a key que está rodando no loop) e que estão dentro de um determinado intervalo na coluna 'Valor' (definidos pelas listas "limite_inferior" e "limite_superior" indexadas pelo tipo atual).

A seleção é feita criando duas séries booleanas "eh_tipo" e "eh_dentro_limite" e aplicando a operação booleana "&" entre elas para criar uma nova série booleana "selecao".

  • Filtra o DataFrame original "dados" usando essa série booleana "selecao" e armazena as linhas selecionadas em um novo DataFrame chamado "dados_selecao".

  • Por fim, ele concatena o DataFrame "dados_selecao" ao DataFrame "dados_new", que contém todas as linhas selecionadas para todos os tipos percorridos pelo loop.

Em resumo, o código realiza uma seleção de dados com base no tipo de objeto e em um intervalo de valores definido para cada tipo, e retorna um novo DataFrame que contém apenas as linhas selecionadas.

Obrigado, Angelo!

Ficou bem mais claro agora.