A função DataFrame.dropna() da Bi­bli­o­teca Python Pandas é utilizada para eliminar todas as linhas ou colunas de um DataFrame que contenham valores em falta (NaN). É, portanto, uma das prin­ci­pais fer­ra­men­tas para a pre­pa­ra­ção e limpeza de dados.

Sintaxe de dropna() em Pandas

A função dropna() do Pandas aceita até cinco pa­râ­me­tros e a sua sintaxe básica é bastante simples:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)
python

Pa­râ­me­tros re­le­van­tes

O com­por­ta­mento da função DataFrame.dropna() pode ser in­flu­en­ci­ado pelos pa­râ­me­tros que lhe são passados. Os pa­râ­me­tros mais im­por­tan­tes estão resumidos na tabela seguinte:

Parâmetro Descrição Valor padrão
axis Determina se as linhas (0 ou index) e colunas (1 ou columns) são eli­mi­na­das 0
how Indica se todos os valores devem ser incluídos (all) ou apenas alguns valores NaN (any) any
tresh Indica o número mínimo de valores não NaN que uma linha ou coluna deve ter para não ser eliminada. Não pode ser combinado com o parâmetro how opcional
subset Determina quais linhas ou colunas devem ser con­si­de­ra­das opcional
inplace Decide se a operação é realizada no DataFrame original False
ignore_index Se for ver­da­deiro ou True, os eixos restantes serão rotulados de 0 a n-1 False

Como utilizar DataFrame.dropna()

O método Pandas é ne­ces­sá­rio para limpar os dados antes da análise, pois elimina linhas ou colunas com valores em falta. Isso ajuda a evitar en­vi­e­sa­men­tos ao realizar ava­li­a­ções es­ta­tís­ti­cas. Além disso, facilita a criação de gráficos e re­la­tó­rios, uma vez que a presença de valores em falta pode causar re­pre­sen­ta­ções in­cor­re­tas em alguns casos.

Eliminar linhas com valores em falta

No código a seguir, ana­li­sa­mos um DataFrame que contém valores NaN:

import pandas as pd
import numpy as np
# Creación de un DataFrame con datos de ejemplo
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
print(df)
python

O DataFrame tem a seguinte aparência:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
2  NaN  NaN  11
3  4.0  8.0  12

Na etapa seguinte, utiliza-se o método dropna() do Pandas:

## Eliminación de todas las filas que contienen al menos un valor NaN
df_cleaned = df.dropna()
print(df_cleaned)
python

Ao executar o código, obtém-se o seguinte resultado:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Apenas a linha zero e a linha três do DataFrame per­ma­ne­cem, uma vez que as restantes linhas continham valores NaN.

Eli­mi­na­ção de colunas com valores em falta

A eli­mi­na­ção de colunas com valores em falta funciona de forma análoga ao primeiro exemplo. Neste caso, basta definir o parâmetro axis da função como 1:

## Eliminación de todas las columnas que contienen al menos un valor NaN
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
python

No resultado seguinte, podemos observar que apenas resta a coluna «C», porque é a única que não contém nenhum valor NaN:

C
0   9
1  10
2  11
3  12

Uti­li­za­ção do parâmetro thresh

Se desejar eliminar apenas as linhas com menos de dois valores não NaN, pode utilizar o parâmetro thresh:

## Eliminación de todas las filas con menos de dos valores no NaN
df_thresh = df.dropna(thresh=2)
print(df_thresh)
python

Depois de exe­cu­tar­mos este código, a primeira linha também permanece, pois contém dois valores não NaN:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12

Uti­li­za­ção do parâmetro subset

O parâmetro subset é utilizado para es­pe­ci­fi­car em quais colunas serão pro­cu­ra­dos valores em falta. Apenas serão eli­mi­na­das as linhas que tiverem valores em falta nas colunas indicadas.

## Eliminación de todas las filas que contienen un valor NaN en la columna “A”:
df_subset = df.dropna(subset=['A'])
print(df_subset)
python

Neste caso, apenas a segunda linha foi eliminada. O valor NaN na primeira linha foi ignorado, seguindo o parâmetro definido, porque a coluna «B» não estava incluída:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Ir para o menu principal