Preencha várias colunas no lugar em Python Pandas
Python tem uma biblioteca integrada de código aberto chamada Pandas para análise e manipulação de dados. Possui uma estrutura de dados bem definida chamada DataFrame, semelhante a uma tabela. Também pode ser usado para escrever e ler dados de vários tipos de arquivos como CSV, Excel, bancos de dados SQL, etc.
fillna() é um método usado para preencher valores ausentes (NaN/Null) em um DataFrame ou série Pandas. Os valores ausentes são preenchidos com um valor definido ou outro método especificado junto com a chamada do método.
Sintaxe
object_name.fillna(value, method, limit, axis, inplace, downcast)
O método fillna() retorna o mesmo DataFrame ou Série de entrada com os valores ausentes preenchidos.
Exemplo 1
Usamos fillna() para preencher valores ausentes em um DataFrame do pandas e em um arquivo CSV. O método fillna() com os mesmos parâmetros pode ser usado para ambos os objetos.
Nota -
Os dados importados do arquivo csv estão anexados para sua referência aqui. sampel_data.csv
Algoritmo
Etapa 1 -Identifique os valores ausentes (NaN/Null) no DataFrame ou Série especificado.
Step 2 - Com base nos argumentos passados para o método fillna() preencha os valores ausentes identificados. Se um valor inteiro for passado, ele será usado para substituir todos os valores ausentes. Se um método for passado, ele será usado para preencher os valores ausentes. Além disso, preencha os valores do eixo e downcast mencionados.
Etapa 3 - Retorne um novo DataFrame ou Série com os valores ausentes preenchidos.
import pandas as pd
# Create a sample DataFrame
df = pd.DataFrame({'C1': [5, 23, 33, np.NaN], 'C2': [26, np.NaN, 7, 18], 'C3': [11, 30, np.NaN,112]})
print(df)
#Or read a dataset from a csv or any other file
df1=pd.read_csv("sample_data.csv")
# Fill NaN values in C1 and C2 with 0, and in C3 with 1
df.fillna(value={'C1': 0, 'C2': 0, 'C3': 1}, inplace=True)
#Filling NaN values in df1 with a random integer
df1.fillna(111)
# Print the updated DataFrame to see the difference
print(df)
Saída
#Before filling missing values
C1 C2 C3
0 5.0 NaN 11.0
1 23.0 89.0 30.0
2 33.0 7.0. NaN
3 NaN 18.0 112.0
#After filling missing values
C1 C2 C3
0 5.0 0.0 11.0
1 23.0 89.0 30.0
2 33.0 7.0 1.0
3 0.0 18.0 112.0
Exemplo 2
Estaremos trabalhando com um conjunto de dados contendo informações sobre alunos da escola e usaremos o método fillna() para preencher os valores faltantes com a média dos valores da coluna. Pegamos o conjunto de dados aleatoriamente em vez de importar do arquivo CSV, como no Exemplo 1.
import numpy as np
import pandas as pd
# Create a sample DataFrame with missing values
data = {
'RollNo': [1, 2, 3, 4, 5],
'Age': [10, np.NaN, 5, 8, 12],
'Marks': [100, 200,np.NaN, 150,np.NaN]
}
data= pd.DataFrame(data)
#Original DataFrame with missing values
print(data)
# Fill missing values with mean values
data1 = data.fillna(data.mean())
print(data1)
Saída
RollNo Age Marks
0 1 10.0 100.0
1 2 NaN 200.0
2 3 5.0 NaN
3 4 8.0 150.0
4 5 12.0 NaN
RollNo Age Marks
0 1 10.00 100.0
1 2 8.75 200.0
2 3 5.00 150.0
3 4 8.00 150.0
4 5 12.00 150.0
Conclusão
Você pode usar o método fillna() no Pandas para preencher valores ausentes em uma ou várias colunas de um DataFrame, ou também pode ser usado para preencher valores ausentes em uma série. Você pode especificar o valor a ser usado para preenchimento e como preencher os valores com vários argumentos.
Pandas tem outros métodos como replace(), que substitui os valores ausentes por média, mediana, moda ou qualquer outro valor. A diferença entre os dois é que fillna() é projetado especificamente para lidar com valores ausentes, enquanto replace é mais universal e pode ser usado para preencher qualquer valor no objeto. Tornando assim o método fillna() uma escolha melhor para lidar com valores ausentes em seus dados.