Diferença entre isna () e isnull () em pandas

73

Eu tenho usado pandas por algum tempo. Mas não entendi qual é a diferença entre isna()e isnull()nos pandas. E, mais importante, qual usar para identificar valores ausentes no quadro de dados.

Qual é a diferença básica subjacente de como um valor é detectado como um naou outro null?

Vaibhav Thakur
fonte
11
As duas funções são iguais. Ambos fornecem os valores ausentes.
Ankit Seth

Respostas:

94

Pandas isna()vs isnull().

Estou assumindo que você está se referindo a pandas.DataFrame.isna()vs pandas.DataFrame.isnull(). Para não confundir pandas.isnull(), o que, ao contrário dos dois acima, não é um método da classe DataFrame.

Esses dois métodos DataFrame fazem exatamente a mesma coisa! Até seus documentos são idênticos. Você pode até confirmar isso no código dos pandas .

Mas por que dois métodos com nomes diferentes fazem a mesma coisa?

Isso ocorre porque os DataFrames dos pandas são baseados nos DataFrames de R. Em R nae nullsão duas coisas separadas. Leia este post para mais informações.

No entanto, em python, os pandas são criados em cima de numpy, que nãonanull tem nem valores. Em vez disso, numpy possui NaNvalores (que significa "Não é um número"). Consequentemente, os pandas também usam NaNvalores.

Em resumo

  • Para detectar NaNvalores que um numpy usa np.isnan().

  • Para detectar NaNvalores, o pandas usa .isna()ou .isnull().
    Os NaNvalores são herdados do fato de os pandas serem construídos sobre o numpy, enquanto os nomes das duas funções são originários dos DataFrames de R, cuja estrutura e funcionalidade os pandas tentaram imitar.

Djib2011
fonte
3
Isso explica tudo e sim, eu queria deduzir 'pandas.DataFrame.isna ()' vs 'pandas.DataFrame.isnull ()'. Obrigado por uma explicação tão detalhada.
Vaibhav Thakur