1
resposta

duvida outro topico

https://cursos.alura.com.br/forum/topico-fillna-142775

Nessa discussao ai de cima, nao entendi a resposta do instrutor para um dos comandos

Sim, ambos estão corretos. Só tome cuidado, caso faça: dataset = dataset.fillna(0, inplace=True) A variável irá ficar com o valor de None. Use somente um dos casos.

Se os comandos geram os mesmos resultados, por que apenas no caso de dataset = dataset.fillna(0, inplace=True), a variável irá ficaria com o valor de None.

Outra questao...como assim a variável irá ficar com o valor de None...se o comando em questao apenas preenche com zeros os valores NaN

1 resposta

Oi Rogério,

é por causa da ordem de operações e o retorno de funções. Quando vc usa a função fillna() ela retorna o dataframe modificado tendo as células preenchidas com o valor indicado, mas se vc colocar adicionar o atributo inplace, ao invés de dar um retorno, ela resolve diretamente no dataframe, isso quer dizer que a função tem um retorno vazio nesse modo. Então, considerando a ordem das operações, o seu programa iria primeiro executar fillna(0, inplace=True) que retorna None e depois fazer a atribuição em dataset, colocando um None na sua variável dataset.

Exemplo

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

import pandas as pd
import numpy as np

a = np.arange(10)
df = pd.DataFrame(a, columns=['col'])

# coloca algumas linhas como vazio
df.loc[7:] = None

# df.fillna(0, inplace=True) # funciona
# df = df.fillna(0) # funciona
df = df.fillna(0, inplace=True) # vazio

print(df == None)