Pandas Where: Aproveitando o Poder do Pandas para Tratar Valores Nulos
Updated on
Trabalhar com dados está no centro do que fazemos. Dados brutos, porém, costumam ser desorganizados, incompletos e cheios de valores nulos que precisam ser tratados. Sem um tratamento adequado, valores nulos podem causar problemas durante a análise de dados ou em tarefas de machine learning. Felizmente, com a biblioteca Pandas em Python, podemos gerenciar valores nulos de forma rápida e eficiente.
Neste artigo, vamos explorar a função where() do Pandas e diversas outras técnicas para lidar com valores nulos em Pandas. Vamos ver como identificar e tratar dados ausentes em um DataFrame do Pandas, estratégias para trabalhar com valores nulos, boas práticas para gerenciar valores faltantes e muito mais.
Quando usar where() vs mask()
where() mantém os valores que satisfazem uma condição e substitui o restante; mask() faz o inverso. Ambas respeitam a semântica anulável do pandas (pd.NA) no pandas 2.x.
import pandas as pd
s = pd.Series([10, None, 30, 40], dtype="Int64")
keep_under_35 = s.where(s < 35) # 40 becomes <NA>
mask_nulls = s.mask(s.isna(), 0) # fill nulls without touching valid rowsUse where() quando quiser preservar entradas válidas e anular o restante, e combine com fillna quando precisar definir valores padrão.
Quer criar visualizações de dados em Python rapidamente?
PyGWalker é um projeto Python Open Source que pode ajudar a acelerar o fluxo de análise e visualização de dados diretamente em ambientes baseados em Jupyter Notebook.
PyGWalker (opens in a new tab) transforma seu Pandas Dataframe (ou Polars Dataframe) em uma interface visual em que você pode arrastar e soltar variáveis para criar gráficos com facilidade. Basta usar o seguinte código:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)Você pode rodar o PyGWalker agora mesmo nestes notebooks online:
E não se esqueça de nos dar uma ⭐️ no GitHub!
Identificando e Tratando Dados Ausentes em um DataFrame do Pandas
Uma das tarefas mais comuns ao trabalhar com dados é verificar a existência de dados ausentes. Pandas oferece várias maneiras de identificar valores nulos, incluindo isnull() e notnull(), que retornam valores booleanos indicando se algum dos valores no DataFrame é nulo ou não. Podemos usar essas funções para descobrir rapidamente se há valores faltantes em nossos dados.
Por exemplo, suponha que temos um DataFrame com várias colunas, algumas das quais contêm valores ausentes.
import pandas as pd
import numpy as np
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, np.nan, 30],
'gender': ['F', 'M', 'M'],
'income': [50000, 60000, np.nan]}
df = pd.DataFrame(data)Para verificar valores ausentes no nosso DataFrame, podemos aplicar a função isnull() ao DataFrame inteiro.
print(df.isnull())Isso retornará um DataFrame com o mesmo formato do original, em que True representa um valor nulo e False representa um valor não nulo.
Para contar o número de valores ausentes em cada coluna do DataFrame, podemos usar o método sum() após aplicar isnull().
print(df.isnull().sum())Isso retornará um objeto Series em que o índice são os nomes das colunas e os valores são a quantidade de valores ausentes em cada coluna.
Também podemos descartar linhas ou colunas com valores nulos usando o método dropna(). Esse método remove qualquer linha ou coluna que contenha ao menos um valor nulo.
df.dropna()Alternativamente, podemos substituir valores nulos por um valor específico usando a função fillna().
df.fillna(0)Esses são apenas alguns exemplos dos métodos disponíveis no Pandas para identificar e tratar valores nulos. Para uma lista abrangente, consulte a documentação do Pandas.
Trabalhando com Valores Nulos no Pandas
Valores nulos podem ser um desafio em tarefas de análise de dados ou de machine learning. No entanto, existem muitas estratégias que podemos usar para lidar com valores nulos de forma eficaz. Aqui estão algumas delas:
Interpolação
Uma técnica comum para tratar dados ausentes é a interpolação. Interpolação é uma técnica estatística que estima valores faltantes com base em valores observados em linhas próximas. No Pandas, podemos usar o método interpolate() para realizar interpolação em nosso DataFrame.
df.interpolate()Preenchimento de Valores Ausentes
Outra estratégia é preencher os valores ausentes com uma constante ou com um valor calculado a partir dos dados restantes. Podemos usar o método fillna() para preencher valores nulos com um valor específico.
df.fillna(0)Alternativamente, podemos preencher valores nulos com a média, a moda ou a mediana dos dados restantes.
df.fillna(df.mean())Remoção de Valores Ausentes
Remover valores ausentes é uma estratégia comum para tratar valores nulos. Podemos usar o método dropna() para remover todas as linhas que contêm um ou mais valores nulos.
df.dropna()Também podemos remover colunas que contêm valores nulos.
df.dropna(axis=1)Imputação
Imputação é uma técnica para estimar valores faltantes com base nos dados observados. No Pandas, podemos usar o pacote scikit-learn para realizar imputação.
from sklearn.impute import SimpleImputer
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
df[['age', 'income']] = imp.fit_transform(df[['age', 'income']])Esses são apenas alguns exemplos das muitas estratégias disponíveis para trabalhar com valores nulos no Pandas. A estratégia adequada depende do problema específico e da natureza dos dados ausentes.
Boas Práticas para Gerenciar Valores Ausentes no Pandas
Lidar com dados ausentes pode ser desafiador, mas algumas boas práticas ajudam bastante. Aqui vão algumas dicas para gerenciar valores nulos no Pandas:
- Sempre verifique a existência de dados ausentes antes de realizar qualquer análise.
- Use estatísticas descritivas para entender a distribuição dos dados e identificar outliers.
- Considere diferentes estratégias para tratar dados ausentes, como interpolação, imputação ou remoção de valores faltantes.
- Esteja atento às possíveis consequências de cada estratégia e a como elas podem afetar a análise.
- Use ferramentas de visualização de dados para entender melhor a natureza e a distribuição dos dados.
- Documente os valores ausentes e como eles foram tratados na análise.
Seguindo essas boas práticas, conseguimos gerenciar melhor os valores nulos em nossos dados e realizar análises de dados ou tarefas de machine learning de forma mais eficaz.
Conclusão
Valores nulos podem ser um desafio ao trabalhar com dados, mas com o Pandas temos à disposição um conjunto poderoso de ferramentas para identificar e tratar dados ausentes. Neste artigo, exploramos a função where() do Pandas e várias outras técnicas e estratégias para lidar com valores nulos em Pandas. Ao aplicar essas técnicas e seguir boas práticas, podemos gerenciar melhor os valores nulos em nossos dados e conduzir análises de dados e tarefas de machine learning com mais eficiência.


