1
resposta

Aula - Identificando e Removendo Outliers por Grupo

O professor usa

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

para aplicar os parametros em cada tipo e depois imprimir em um mesmo box plot um gráfico para cada tipo. só que isso faz com que os valores do eixo sejam "ruins" para alguns tipos. Por isso eu queria fazer um boxplot para cada um dos tipos... nesse caso eu teria "5 imagens" diferentes e os eixos seriam melhores para cada tipo. Inocentemente achei que conseguiria dessa forma conseguiria

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_selecao.boxplot(['Valor'])

mas quando eu fiz isso todos os boxplot ficaram sobrepostos e não "imprimidos" separados. Como resolver isso?

1 resposta

Olá Luiz,

Encontrei na internet uma solução:

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_selecao.boxplot(['Valor'])
    print(tipo)
    plt.show()

Ele usa o comando plt.show() para printar as saidas, sem esse comando ele agrupa tudo em um único boxplot.

Espero que tenha ajudado. Bons estudos.