Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Removendo Outliers e Biblioteca Matplotlib

Ola,

Tenho algumas dúvidas referentes a remover Outliers e sobre a biblioteca Matplotlib. Eu assisti o video diversas vezes e ainda não compreendi muito bem a fórmula abaixo:

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

Sobre o Matplotlib, eu apenas gostaria de confirmar a aplicação do autopct, uma vez que não entendi o motivo do valor %1.1f%%. Ainda também gostaria de entender o motivo pelo qual o 'Valor' esta mencionado na fórmula, uma vez que o enunciado pede apenas os imoveis pelo tipo.

area = plt.figure()
g1 = area.add_subplot(1, 2, 1)
g2 = area.add_subplot(1, 2, 2)
grupo1 = dados.groupby('Tipo Agregado')['Valor']
label = grupo1.count().index
valores = grupo1.count().values
g1.pie(valores, labels = label, autopct='%1.1f%%')
g1.set_title('Total de Imóveis por Tipo Agregado')
grupo2 = dados.groupby('Tipo')['Valor']
label = grupo2.count().index
valores = grupo2.count().values
g2.pie(valores, labels = label, autopct='%1.1f%%', explode = (.1, .1, .1, .1, .1))
g2.set_title('Total de Imóveis por Tipo')

Muito obrigado desde já.

1 resposta
solução!

Olá, Guilherme. Tudo bem?

Fique tranquilo, vamos tentar entender o que está acontecendo.

Pergunta 1) Fórmula para remover os outliers:

  • o for está sendo utilizando para passarmos por cada tipo de grupo, ou seja, por Apartamento, Casa, Casa de Condomínio etc;
  • a variável eh_tipo serve para fazermos uma seleção de dados contendo apenas os dados que são iguais ao tipo de grupo, ou seja, a cada iteração, teremos uma seleção diferente, onde uma será para Apartamento, outra pra Casa, e assim em diante;
  • a variável eh_dentro_limite também serve para guardar uma seleção de dados, porém, agora queremos saber se os valores dos nossos dados não são Outliers, ou seja, nem muito baixos, nem muito altos. Olhando o Box Plot, onde está marcado são, da esquerda pra direita, o limite_inferior e o limite_superior que estão nessa linha de código: Imagem de uma representação gráfica de um box plot, um um método para demonstrar graficamente os grupos de localidade, dispersão e assimetria de dados numéricos através de seus quartis. Nele, temos em destaque com um circulo vermelho os limites inferiores e superiores.
  • a variável selecao serve para guardar uma** seleção de dados** que sejam tanto do tipo que estamos percorrendo (no for) no momento quanto estejam dentro dos limites inferiores e superiores do Box Plot.
  • por fim, a variável dados_new serve para guardar a junção dos DataFrames dados_new e dados_selecao.

Pergunta 2) Argumento autopct e coluna Valor no agrupamento por Tipo:

O autopct é um argumento utilizado para especificar como os valores percentuais serão representados no gráfico de pizza (pie). Por exemplo, se você quisesse representar a porcentagem 33.45%, você utilizaria autopct='%1.2f%%, pois o que vem depois do (.) determina a quantidade máxima de casas decimais, que nesse caso são 2. O f diz respeito ao tipo de dado numérico float. Se quiséssemos apenas uma casa decimal, ficaria autopct='%1.1f%%.

Com relação ao Valor estar sendo utilizado no agrupamento, isso acontece porque ele diz respeito à coluna que estamos interessados. Essa coluna serve apenas para vermos os agrupamentos de cada tipo, pois, se não utilizássemos uma coluna específica, veríamos o seguinte:

dados.groupby('Tipo').count()

Saída:

BairroQuartosVagasSuitesAreaValorCondominioIPTUValor m2Tipo Agregado
Tipo
Apartamento8613861386138613861386138613861386138613
Casa426426426426426426426426426426
Casa de Condomínio454454454454454454454454454454
Casa de Vila117117117117117117117117117117
Quitinete390390390390390390390390390390

Teríamos os mesmos valores para todas as colunas. Então, especificar uma coluna, nesse caso a Valor, nos ajuda a não repetir essas informações:

dados.groupby('Tipo')['Valor'].count()

Saída:

Tipo
Apartamento8613
Casa426
Casa de Condomínio454
Casa de Vila117
Quitinete390
Name: Valor, dtype: int64

O mesmo vale para o Tipo Agregado.

 

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

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