<jupyter_start><jupyter_text>Relatório de Análise VIII  Identificando e Removendo Outliers<jupyter_code>%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
plt.rc('figure', figsize = (14, 6))

dados = pd.read_csv('../data/aluguel/aluguel_residencial.csv', sep = ';')
dados.boxplot(['Valor'])
dados[dados['Valor'] >= 500000]
valor = dados['Valor']
Q1 = valor.quantile(.25)
Q3 = valor.quantile(.75)
IIQ = Q3 - Q1
limite_inferior = Q1 - 1.5 * IIQ
limite_superior = Q3 + 1.5 * IIQ
selecao = (valor >= limite_inferior) & (valor <= limite_superior)
dados_new = dados[selecao]
dados_new.boxplot(['Valor'])
dados.hist(['Valor'])
dados_new.hist(['Valor'])<jupyter_output><empty_output><jupyter_text>Identificando e removendo Outliers (Continuação)<jupyter_code>dados.boxplot(['Valor'], by = ['Tipo'])
grupo_tipo = dados.groupby('Tipo')['Valor']
type(grupo_tipo)
grupo_tipo.groups
q1 = grupo_tipo.quantile(.25)
q3 = grupo_tipo.quantile(.75)
iiq = q3 - q1
limite_inferior = q1 - 1.5 * iiq
limite_superior = q3 + 1.5 * iiq
q1
q3
iiq
limite_inferior
limite_superior
limite_superior['Casa']
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])
dados_new.boxplot(['Valor'], by = ['Tipo'])
dados_new.to_csv('../data/aluguel/aluguel_residencial_sem_outliers.csv', sep =';', index = False)<jupyter_output><empty_output><jupyter_text>Exercicios<jupyter_code>import pandas as pd
dados = pd.read_csv('../data/aluguel/aluguel_amostra.csv', sep = ';')
dados.head(10)
valor = dados['Valor m2']
q1 = valor.quantile(.25)
q3 = valor.quantile(.75)
iiq = q3 - q1
limite_inferior = q1 - 1.5 * iiq
limite_superior = q3 + 1.5 * iiq
print(f'1° quartil: {q1}')
print(f'3° quartil: {q3}')
print(f'Intervalo interquartil: {iiq:.2f}')
print(f'Limite inferior: {limite_inferior:.2f}')
print(f'Limite superior: {limite_superior:.2f}')<jupyter_output>1° quartil: 21.25
3° quartil: 42.31
Intervalo interquartil: 21.06
Limite inferior: -10.34
Limite superior: 73.90
{'fraction_non_alphanumeric': 0.16195603409600717, 'fraction_numerical': 0.03813369223867205, 'mean_word_length': 5.96875, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '6862', 'license': 'MIT', 'n_tokens_mistral': 1028, 'n_tokens_neox': 965, 'n_words': 168, 'path': 'notebook/identificando-e-removendo-outliers.ipynb', 'repo_name': 'cglima/alura-python-pandas-tratando-e-analisando-dados', 'size': '2229'}