<jupyter_start><jupyter_text>Pré processamento da coleção de dadosAplicação de técnicas de pré processamento de dados para ser possível uma pré-análise dos dados enquanto ocore a transformação para dados padronizados e normalizados. Lidando com valores ausentes (missing values)Dados ausentes talvez sejam a característica mais comum de dados impuros. Esses valores geralmente assumem a forma de NaN ou None.Existem várias maneiras de preencher os valores ausentes:* Remover as linhas com os dados se seu conjunto de dados for grande o suficiente e a porcentagem de valores ausentes for alta (mais de 50%, por exemplo);* Preencher todas as variáveis nulas com 0 para lidar com valores numéricos;* Usar alguma biblioteca (ex: classe SimpleImputer da biblioteca scikit-learn) para preencher os valores ausentes com os dados (média, mediana, moda) para atributos discretos;* Usar alguma biblioteca (ex: OrdenalEncoder e OneHotEncoder da biblioteca scikit-learn) para preencher os valores categóricos em numéricos e em seguida criar atributos "fictícios";    * Ou seja, uma coluna será substituída por uma coluna para cada uma das variáveis categóricas que tinha na coluna original e com 1s e 0s substituindo as variáveis categóricas.    * É possível também utilizar o codificador de rótulo se houver variáveis categóricas como "sim" e "não".* Preencher os valores ausentes com qualquer valor que vier diretamente depois deles na mesma coluna.Essas decisões dependem do tipo de dados, do deseja-se fazer com os dados e da causa dos valores ausentes. Na verdade, só porque algo é popular não significa necessariamente que seja a escolha certa. A estratégia mais comum é usar o valor médio, mas dependendo de seus dados, você pode chegar a uma abordagem totalmente diferente.> Média é a estratégia padrão, então não é necessário realmente especificar isso, mas está aqui para ter uma ideia de quais informações pode-se desejar incluir. Os valores padrão para missing_values é nan. Se o conjunto de dados tiver valores ausentes chamados "NaN", permaneceremos com np.nan no parâmetro. Conferir a documentação oficial [aqui](https://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html)!  Parte 1 - Tipos de Dados e Valores Ausentes* Drop colunas que possui pelo menos x% de valores não nulos (drop = True, fill = False), onde o x é o parâmetro threshold em % (para 30% defina 0.3)* Ou preencha os valores ausentes com o valor médio das colunas numericas e drop as linhas que tenha valores ausentes das colunas categoricas (drop = False, fill = True)* Ou faça ambos (drop = False, fill = False) > Obs. Se ambos os parâmetros forem passados como True, será feita somente a primeira condição (sic: drop = True, fill = False)<jupyter_code>from fun_dependencies import *

#load data
df_interacao = load_data('dataset/Detail_Interaction.csv', sep=';')
df_incidente = load_data('dataset/Detail_Incident.csv', sep=';')
df_atividades_incidente = load_data('dataset/Detail_Incident_Activity.csv', sep=';')
df_mudancas = load_data('dataset/Detail_Change.csv', sep=';')<jupyter_output><empty_output><jupyter_text>Tabela Interacao<jupyter_code>%%capture cap --no-stderr
print("---------------------------------------Table: Interacao---------------------------------------\n")
df_interacao = missing_treatment(df_interacao, drop=False, fill=False, threshold=0.3)
with open('output/output_pt1.txt', 'w') as f:
    f.write(cap.stdout)<jupyter_output><empty_output><jupyter_text>Tabela Incidente<jupyter_code>%%capture cap --no-stderr
print("---------------------------------------Table: Incidente---------------------------------------\n")
df_incidente = missing_treatment(df_incidente, drop=False, fill=False, threshold=0.3)
with open('output/output_pt1.txt', 'a') as f:
    f.write(cap.stdout)<jupyter_output><empty_output><jupyter_text>Tabela Atividades Incidente<jupyter_code>%%capture cap --no-stderr
print("---------------------------------------Table: Atividades Incidente---------------------------------------\n")
df_atividades_incidente = missing_treatment(df_atividades_incidente, drop=False, fill=False, threshold=0.3)
with open('output/output_pt1.txt', 'a') as f:
    f.write(cap.stdout)<jupyter_output><empty_output><jupyter_text>Tabela Mudanças<jupyter_code>%%capture cap --no-stderr
print("---------------------------------------Table: Mudancas---------------------------------------\n")
df_mudancas = missing_treatment(df_mudancas, drop=False, fill=False, threshold=0.3)
with open('output/output_pt1.txt', 'a') as f:
    f.write(cap.stdout)
df_interacao.to_csv('cleaning_dataset/pt1/Detail_Interaction_pt1.csv', sep=';', encoding='utf-8', index=False)
df_incidente.to_csv('cleaning_dataset/pt1/Detail_Incident_pt1.csv', sep=';', encoding='utf-8', index=False)
df_atividades_incidente.to_csv('cleaning_dataset/pt1/Detail_Incident_Activity_pt1.csv', sep=';', encoding='utf-8', index=False)
df_mudancas.to_csv('cleaning_dataset/pt1/Detail_Change_pt1.csv', sep=';', encoding='utf-8', index=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1466851925367209, 'fraction_numerical': 0.006748709805478364, 'mean_word_length': 4.27092050209205, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 23, 'https://': 1, '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': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '217543', 'license': 'MIT', 'n_tokens_mistral': 1658, 'n_tokens_neox': 1617, 'n_words': 502, 'path': 'parte1_valores_ausentes.ipynb', 'repo_name': 'marqueslarissa/data-mining-2021', 'size': '5038'}