Pandas Remover Linhas com NaN
-
Pandas soltam linhas com NaN usando o método
DataFrame.notna() -
Pandas Soltar linhas apenas com valores
NaNpara todas as colunas usando o métodoDataFrame.dropna() -
Pandas Soltar linhas apenas com valores
NaNpara uma coluna particular usando o métodoDataFrame.dropna() -
Linhas de Pandas com valores
NaNpara qualquer coluna utilizandoDataFrame.dropna()Método
Este tutorial explica como podemos largar todas as linhas com valores NaN utilizando os métodos DataFrame.notna() e DataFrame.dropna().
Utilizaremos o DataFrame no código de exemplo abaixo.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print(data)
Resultado:
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
2 Neesham 18.0 NaN 2500.0
3 Chris 21.0 3500.0 25000.0
4 Alice NaN NaN NaN
Pandas soltam linhas com NaN usando o método DataFrame.notna()
O método DataFrame.notna() devolve um objecto booleano com o mesmo número de linhas e colunas que o DataFrame do autor da chamada. Se um elemento não é NaN, é mapeado para o valor True no objecto booleano, e se um elemento é um NaN, é mapeado para o valor False.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data[data["Income($)"].notna()]
print("DataFrame after removing rows with NaN value in Income Field:")
print(data)
Resultado:
Initial DataFrame:
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
2 Neesham 18.0 NaN 2500.0
3 Chris 21.0 3500.0 25000.0
4 Alice NaN NaN NaN
DataFrame after removing rows with NaN value in Income Field:
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
3 Chris 21.0 3500.0 25000.0
Aqui, aplicamos o método notna() à coluna Income($), que retorna um objecto em série com valores True ou False, dependendo dos valores da coluna. Quando passamos o objecto booleano como índice à DataFrame original, só obtemos linhas sem valores NaN para a coluna Income($).
Pandas Soltar linhas apenas com valores NaN para todas as colunas usando o método DataFrame.dropna()
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna(how="all")
print("DataFrame after removing rows with NaN value in All Columns:")
print(data)
Resultado:
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in All Columns:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
Remove apenas as linhas com valores NaN para todos os campos da DataFrame. Definimos how='all' em dropna() método para deixar cair a linha do método apenas se todos os valores da coluna para a linha forem NaN.
Pandas Soltar linhas apenas com valores NaN para uma coluna particular usando o método DataFrame.dropna()
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna(subset=["Id"])
print("DataFrame after removing rows with NaN value in Id Column:")
print(data)
Resultado:
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in Id Column:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
Deixa cair todas as colunas da DataFrame, que têm valor NaN apenas na Coluna Id.
Linhas de Pandas com valores NaN para qualquer coluna utilizando DataFrame.dropna() Método
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna()
print("DataFrame after removing rows with NaN value in any column:")
print(data)
Resultado:
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in any column:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
3 345.0 21.0 3500.0 25000.0
Por defeito, o método dropna() removerá toda a linha que tenha pelo menos um valor NaN.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArtigo relacionado - Pandas DataFrame Row
- Como obter a contagem de filas de um Pandas DataFrame
- Como embaralhar aleatoriamente linhas DataFrame em Pandas
- Como filtrar linhas de dados com base nos valores das colunas em Pandas
- Como Iterar Através de Linhas de um DataFrame em Pandas
- Como obter índice de todas as linhas cuja coluna específica satisfaz dada a condição em Pandas
- Obter a Primeira Fila de Pandas de Dataframe
