Photo by Brett Jordan on Unsplash |
A primeira linguagem de programação que vem a mente, quando o assunto é analise de dados, é a linguagem python. Isso por que python fornece um ecossistema de pacotes para a análise de dados. pandas é um desses pacotes. Com ele podemos importar dados de um dataset e realizar algumas analises facilmente.
Um problema comum, quando importamos dados de um dataset, é elementos com valores NaN (sem valor). Esse valor pode causar problemas e erros na analise de dados, por isso pode ser interessante colocar um valor para esses elementos.
Nesse tutorial, vamos aprender a substituir valores NaN dos dataframes pandas utilizando o método fillna()
. O método fillna()
pode preencher todos os elementos vazios com um valor definido.
Para começar, vamos precisar de um dataframe com elementos vazios.
>>> import pandas as pd >>> import numpy as np >>> dados = { ... 'A':[np.nan, 4, 8, np.nan], ... 'B':[9, np.nan, 6, np.nan], ... 'C':[np.nan, 1, np.nan, 9], ... 'D':[np.nan, np.nan, 8, 3] ... } >>> df = pd.DataFrame(dados) >>> df A B C D 0 NaN 9.0 NaN NaN 1 4.0 NaN 1.0 NaN 2 8.0 6.0 NaN 8.0 3 NaN NaN 9.0 3.0
O funcionamento do método fillna()
é bem simples, só precisamos passar para o método qual é o valor que vai substituir o valor NaN. Assim o método vai procurar por todo o dataframe, e onde encontrar um elemento vazio, ele vai preencher esse elemento com o valor que recebeu.
>>> df.fillna(2) A B C D 0 2.0 9.0 2.0 2.0 1 4.0 2.0 1.0 2.0 2 8.0 6.0 2.0 8.0 3 2.0 2.0 9.0 3.0
Também podemos utilizar os valores do próprio dataframe para preencher os elementos vazios. Por exemplo, se quiséssemos preencher o elemento vazio com o último valor não vazio, passaríamos o valor 'ffill
' (forward fill) para o parâmetro method
. Outra meio de preencher é com o próximo valor não vazio da sequência, nesse caso passamos o valor 'bfill
' (back fill) para o parâmetro method
.
>>> dados = [ ... [None, 2, 6], ... [1, None, None], ... [None, 3, None] ... ] >>> df = pd.DataFrame(dados) >>> df 0 1 2 0 NaN 2.0 6.0 1 1.0 NaN NaN 2 NaN 3.0 NaN >>> df.fillna(method='ffill') 0 1 2 0 NaN 2.0 6.0 1 1.0 2.0 6.0 2 1.0 3.0 6.0 >>> df.fillna(method='bfill') 0 1 2 0 1.0 2.0 6.0 1 1.0 3.0 NaN 2 NaN 3.0 NaN
Também podemos definir o valor que será usado para preencher cada coluna. Por exemplo, você pode definir que os elementos vazios da coluna A serão preenchidos com o valor 'um
' e da coluna D com o valor 'dois
'.
>>> replace = {'A':'um', 'D':'dois'} >>> df.fillna(value=replace) A B C D 0 1 NaN 5.0 dois 1 um 2.0 NaN 6 2 3 NaN 8.0 dois 3 um 4.0 NaN 9
Um parâmetro, que pode ser útil, é o limit
. Com ele podemos definir quantos elementos vazios serão substituídos. Por exemplo, se você quiser que apenas um elementos de cada coluna seja substituído passe o valor 1 para o parâmetro limit
.
>>> df.fillna(value=replace, limit=1) A B C D 0 1 NaN 5.0 dois 1 um 2.0 NaN 6 2 3 NaN 8.0 NaN 3 NaN 4.0 NaN 9
Repare que apenas um elemento vazio de cada coluna foi substituído.
Quer aprender mais sobre a biblioteca pandas? Comece com nossos tutoriais pandas.
Referência:
Função fillna()
0 comentários:
Postar um comentário