Data Wrangling

Substituindo eficientemente valores NaN por zeros em DataFrames Pandas

Spread the love

Dados faltantes, frequentemente representados como valores NaN (Not a Number), são um problema comum na análise de dados. Pandas, uma poderosa biblioteca Python para manipulação de dados, fornece métodos eficientes para lidar com esses valores faltantes. Este artigo demonstra como substituir todos os valores NaN em uma coluna específica ou em todo o DataFrame Pandas por zeros, focando nas abordagens mais eficazes.

Sumário

Método fillna() para Substituição Direcionada de NaN

O método fillna() é a abordagem recomendada para substituir valores NaN por zeros em colunas específicas. É eficiente e aborda diretamente os dados faltantes.

Vamos ilustrar com um DataFrame de exemplo:


import pandas as pd
import numpy as np

data = {'A': [1, 2, np.nan, 4, 5], 
        'B': [6, np.nan, 8, 9, 10],
        'C': [11, 12, 13, 14, 15]}
df = pd.DataFrame(data)
print("DataFrame Original:n", df)

Isso produz:


DataFrame Original:
     A     B   C
0  1.0   6.0  11
1  2.0   NaN  12
2  NaN   8.0  13
3  4.0   9.0  14
4  5.0  10.0  15

Para substituir valores NaN na coluna ‘A’ por zeros:


df['A'] = df['A'].fillna(0)
print("nDataFrame após preencher NaN na coluna 'A' com 0:n", df)

Resultando em:


DataFrame após preencher NaN na coluna 'A' com 0:
     A     B   C
0  1.0   6.0  11
1  2.0   NaN  12
2  0.0   8.0  13
3  4.0   9.0  14
4  5.0  10.0  15

Substituir NaNs em múltiplas colunas é igualmente simples:


df[['A', 'B']] = df[['A', 'B']].fillna(0)
print("nDataFrame após preencher NaN nas colunas 'A' e 'B' com 0:n", df)

Método replace() para Substituição Geral de Valores

O método replace() oferece uma abordagem mais geral, adequada para substituir vários valores, incluindo NaN. No entanto, para substituir apenas NaN por zeros, fillna() é geralmente preferido por sua eficiência e clareza.

Para substituir todos os valores NaN no DataFrame por 0 usando replace():


df = df.replace(np.nan, 0)
print("nDataFrame após substituir todos os NaN por 0 usando replace():n", df)

Isso substitui todos os valores NaN em todo o DataFrame. replace() se destaca ao lidar com cenários mais complexos, como substituir múltiplos valores simultaneamente:


df = df.replace({np.nan: 0, -999: 0})  # Exemplo; assume que -999 existe no DataFrame
print("nDataFrame após substituir NaN e -999 por 0:n", df)

Em resumo, embora ambos os métodos alcancem o objetivo, fillna() é mais eficiente e legível para substituição direcionada de NaN em colunas específicas, enquanto replace() oferece maior flexibilidade para substituições de valores mais amplas. Escolha o método mais adequado à sua tarefa específica de manipulação de dados.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *