Coluna Pandas fillna

  1. DataFrame.fillna() Método
  2. Preencher todo o DataFrame com o valor especificado utilizando o DataFrame.fillna() Método
  3. Preencha os valores NaN da coluna especificada com um valor especificado

Este tutorial explica como podemos preencher valores NaN com valores especificados, utilizando o método DataFrame.fillna().

Neste artigo, utilizaremos o DataFrame abaixo.

import numpy as np
import pandas as pd

roll_no = [501, 502, 503, 504, 505]

student_df = pd.DataFrame({
    "Roll No": [501, 502, np.nan, 504, 505, 506],
    'Name': ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
    'Income(in $)': [200, 400, np.nan, 30, np.nan, np.nan],
    'Age': [17, 18, np.nan, 16, 18, np.nan]
})

print(student_df)

Resultado:

   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob           NaN   NaN
3    504.0      Emma          30.0  16.0
4    505.0      Luna           NaN  18.0
5    506.0     Anish           NaN   NaN

DataFrame.fillna() Método

Sintaxe

DataFrame.fillna(value=None, 
                 method=None, 
                 axis=None, 
                 inplace=False, 
                 limit=None, 
                 downcast=None)

O método DataFrame.fillna() permite-nos preencher os valores NaN no DataFrame com o valor ou método especificado.

Preencher todo o DataFrame com o valor especificado utilizando o DataFrame.fillna() Método

import numpy as np
import pandas as pd

roll_no = [501, 502, 503, 504, 505]

student_df = pd.DataFrame({
    "Roll No": [501, 502, np.nan, 504, 505, 506],
    'Name': ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
    'Income(in $)': [200, 400, np.nan, 30, np.nan, np.nan],
    'Age': [17, 18, np.nan, 16, 18, np.nan]
})
filled_df = student_df.fillna(0)

print("DataFrame with NaN values")
print(student_df, "\n")

print("After applying fillna() to the DataFrame:")
print(filled_df, "\n")

Resultado:

DataFrame with NaN values
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob           NaN   NaN
3    504.0      Emma          30.0  16.0
4    505.0      Luna           NaN  18.0
5    506.0     Anish           NaN   NaN 

After applying fillna() to the DataFrame:
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      0.0       Bob           0.0   0.0
3    504.0      Emma          30.0  16.0
4    505.0      Luna           0.0  18.0
5    506.0     Anish           0.0   0.0 

Substitui todos os valores NaN no DataFrame student_df por 0 que é passado como argumento ao método DataFrame.fillna().

import numpy as np
import pandas as pd

roll_no = [501, 502, 503, 504, 505]

student_df = pd.DataFrame({
    "Roll No": [501, 502, np.nan, 504, 505, 506],
    'Name': ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
    'Income(in $)': [200, 400, np.nan, 30, np.nan, np.nan],
    'Age': [17, 18, np.nan, 16, 18, np.nan]
})
filled_df = student_df.fillna(method='ffill')

print("DataFrame with NaN values")
print(student_df, "\n")

print("After applying fillna() to the DataFrame:")
print(filled_df, "\n")

Resultado:

DataFrame with NaN values
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob           NaN   NaN
3    504.0      Emma          30.0  16.0
4    505.0      Luna           NaN  18.0
5    506.0     Anish           NaN   NaN 

After applying fillna() to the DataFrame:
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2    502.0       Bob         400.0  18.0
3    504.0      Emma          30.0  16.0
4    505.0      Luna          30.0  18.0
5    506.0     Anish          30.0  18.0 

Preenche todos os valores NaN no student_df pelo valor que vem antes do valor NaN na mesma coluna do valor NaN.

Preencha os valores NaN da coluna especificada com um valor especificado

Para preencher valores particulares com valores especificados, passamos um dicionário ao método fillna() com nome de coluna como chave e valor a ser utilizado para valores NaN dessa coluna como um valor.

import numpy as np
import pandas as pd

roll_no = [501, 502, 503, 504, 505]

student_df = pd.DataFrame({
    "Roll No": [501, 502, np.nan, 504, 505, 506],
    'Name': ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
    'Income(in $)': [200, 400, np.nan, 300, np.nan, np.nan],
    'Age': [17, 18, np.nan, 16, 18, np.nan]
})
filled_df = student_df.fillna({'Age': 17, 'Income(in $)': 300})

print("DataFrame with NaN values")
print(student_df, "\n")

print("After applying fillna() to the DataFrame:")
print(filled_df, "\n")

Resultado:

DataFrame with NaN values
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob           NaN   NaN
3    504.0      Emma         300.0  16.0
4    505.0      Luna           NaN  18.0
5    506.0     Anish           NaN   NaN 

After applying fillna() to the DataFrame:
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob         300.0  17.0
3    504.0      Emma         300.0  16.0
4    505.0      Luna         300.0  18.0
5    506.0     Anish         300.0  17.0 

Preenche todos os valores NaN da coluna Age com o valor 17 e todos os valores NaN da coluna Income(in $) com 300. Os valores de NaN na coluna Roll No são deixados como estão.

Artigo relacionado - Pandas NaN

  • Como Verificar se o NaN Existe em Pandas DataFrame
  • Como substituir todos os valores de NaN por zeros em uma coluna de dados de PandasFrame