Como fazer ajustes em dados usando Python?
Ajustes em dados no âmbito da limpeza e tratamento de dados permitem que o conjunto de dados possa contribuir para um modelo de aprendizagem de máquina, por exemplo, ou para uma interpretação mais assertiva sobre seu arquivo e as tomadas de decisão estratégicas que podem ser aplicadas. Para aplicarmos esses ajustes, vamos usar o Python.
PYTHONANÁLISE DE DADOSLIMPEZA E TRATAMENTO DOS DADOS
Soraia Felício
4/18/20243 min read
Ao realizar a análise de dados, é fundamental realizar ajustes nos dados no âmbito da limpeza e tratamento de dados. Cada dado do seu arquivo deve receber uma atenção especial nesse processo, a fim de garantir que ele possa trabalhar em conjunto com os demais dados ao aplicar técnicas de aprendizagem de máquina, por exemplo. Lembre-se, o Python não é a única ferramenta que podemos usar para efetuarmos esses ajustes. Dependendo do tamanho do seu arquivo, podemos usar o Excel ou mesmo outra linguagem de programação, como o R.
É muito importante que você realize a exploração do seu arquivo de dados. Você pode entender um pouco mais como fazer essa exploração de dados usando o Python através de https://magictechworld.com.br/explorar-dados-com-python-aprenda-usar-graficos-adequados-para-interpretar-os-dados. Se o seu arquivo for muito grande, com muitas linhas, é necessário usar gráficos que mostram os ajustes que serão necessários aplicar. Vamos utilizar um arquivo com poucas linhas e fácil de analisar apenas ao visualizá-lo como tabela. É o mesmo exemplo que já vimos no link anterior.
Quais são os ajustes necessários em nosso arquivo de dados de exemplo?
A figura a seguir mostra o nosso arquivo de dados visualizado pelo Python usando o Jupyter-lab. Caso você tenha caído de paraquedas nesse post, considere voltar algumas postagens anteriores que explico um pouco mais como abrir um arquivo em Python. Apresento também o link para a documentação do Jupyter-lab em https://jupyter.org/install.
Nesse exemplo, observamos que inicialmente precisamos retirar as duplicidades, as linhas 3 e 12 são exatamente iguais, vamos considerar apenas a linha 3. Em seguida, vamos olhar para cada coluna: é necessário retirar os valores nulos (NaN) das colunas Gênero, Idade, Filhos e Pets; padronizar a coluna Gênero com "F" ou "M", pois tem algumas pessoas que estão como "Feminino" ou "Masculino".; resolver a discrepância na coluna Idade, consideramos que não trataremos idades acima de 100 anos, por isso, vamos resolver a idade com 200 e 333 anos relacionados à pessoa 3 e 10, considerando que vamos eliminar a linha 12, pois contém as mesmas informações da linha 3.
Como iremos resolver cada ajuste identificado anteriormente usando o Python?
Os passos descritos a seguir são apenas exemplos de como podemos identificar e efetivar os ajustes em cada tipo de dado. Além de saber pelo que podemos substituir. Para isso, vamos usar um pouco de estatística, como o valores da moda e da mediana, dependendo do tipo de dado.
Passo 1) Verificamos as linhas duplicadas no arquivo através do comando a seguir. Observe que temos que tratar a duplicidade pelo conjunto das colunas Gênero, Idade , Filhos , Pets, pois não temos o ID (identificador de cada linha):
dataset[dataset.duplicated(['Gênero', 'Idade','Filhos','Pets'],keep=False)]
Passo2) Apagamos as linhas em duplicidade, mantendo a primeira linha:
dataset.drop_duplicates(subset=['Gênero', 'Idade','Filhos','Pets'], keep='first',inplace=True)
Passo 3) Contamos os valores nulos (NaNs), usando o comando:
dataset.isnull().sum()
3.1) Podemos avaliar a quantidade de NaNs em cada coluna, como mostra o comando a seguir:
dataset['Gênero'].isnull().sum()
Substituímos os NaNs usando a moda ou mediana. Para os dados categóricos como o Gênero usamos a moda, em nosso exemplo, é o Masculino, que aparece com maior frequência. Moda em estatística é o dado que aparece com maior frequência. Para os dados numéricos podemos usar a moda ou mediana.
3.2) Substituir pela moda na coluna Gênero, Filhos e Pets:
dataset['Gênero'].fillna('Masculino', inplace=True)
dataset['Filhos'].fillna(0.0,inplace=True)
dataset['Pets'].fillna(1.0,inplace=True)
3.3) Verifique a mediana para a coluna Idade usando o comando abaixo. Para isso, é necessário importar a biblioteca "statistics" do Python:
import statistics as sts
mediana = sts.median(dataset['Idade'])
3.4) Substitua na coluna Idade os valores NaNs pela mediana através do comando a seguir:
dataset['Idade'].fillna(mediana,inplace=True)
4) Localize e substitua as idades discrepantes (outliers) através do comando a seguir:
dataset.loc[(dataset['Idade'] < 0 ) | ( dataset['Idade'] > 100), 'Idade'] = mediana
Em alguns casos, como salário, que não temos em nosso arquivo de exemplo, para localizar valores discrepantes (outliers) a serem substituídos, podemos usar 2 vezes o desvio padrão, por exemplo. Em seguida, substituímos pela mediana. Lembre-se de calcular a mediana com o dado correto para evitar usar a mediana de outro dado. Aplique os comandos a seguir para esses casos:
desv = sts.stdev(dataset['Sálario'])
dataset.loc[dataset['Sálario'] >= 2 * desv, 'Salario'] = mediana