1
resposta

[Dúvida] Nao faz muito sentido o subset e o inplace pra mim

consegue me dar um exemplo do pq usar o "subset" depois de "dropna"

verifiquei com ALT+TAB e deduzi que é fazer referencia a tabela que vamos extrair, seria isso mesmo?

1 resposta

Olá, Guilherme. Tudo bem?

O subset é utilizado para especificar uma coluna que desejamos focar.

Nesse caso da aula, queremos remover os registros (linhas) do DataFrame olhando pela coluna Valor, ou seja, é por ela que vamos nos basear na hora de remover essas linhas. Se fosse utilizada outra coluna, como a Condominio, por exemplo, o resultado seria diferente.

Vamos ver um exemplo.

Primeiro, vamos criar um DataFrame com nome e idade de três pessoas:

import pandas as pd
import numpy as np

dados = pd.DataFrame({'nome': ['João', np.nan, 'Maria'], 'idade': [np.nan, 20, 30]})
dados

Saída:

nomeidade
0JoãoNaN
1NaN20.0
2Maria30.0

Agora, vamos utilizar o dropna() sem o subset e sem o inplace:

dados.dropna()

Saída:

nomeidade
2Maria30.0

Como podemos ver, eles removeu todas as linhas que tinham algum valor nulo, que no caso eram as linhas de índice 0 e 1.

Agora, vamos utilizar o subset para a coluna idade e sem o inplace:

dados.dropna(subset=['idade'])

Saída:

nomeidade
1NaN20.0
2Maria30.0

Dessa vez, ele removeu apenas o índice 0, que tinha o João. Isso aconteceu pois, com o subset, definimos que queríamos remover os valores nulos apenas referente à coluna idade, então, ele não liga se tiver algum valor nulo na coluna nome. Por isso, apenas a linha que continua o João foi removida, porque ele tinha idade nula.

Agora, vamos utilizar a coluna nome no subset:

dados.dropna(subset=['nome'])

Saída:

nomeidade
0JoãoNaN
2Maria30.0

Dessa vez, o João não foi removido, e por quê? Porque ele não tem nome nulo, assim como a Maria. Apenas a linha de índice 1 tinha nome nulo, e por isso ela foi removida.

Sobre o inplace, vamos fazer um teste. Após tudo isso que foi demonstrado, podemos simplesmente exibir nosso DataFrame novamente, que não terá nenhuma alteração nele:

dados

Saída:

nomeidade
0JoãoNaN
1NaN20.0
2Maria30.0

Para que essas alterações fossem aplicadas, teríamos que usar o inplace.

Por exemplo, vamos remover os nulos utilizando a coluna nome novamente, mas dessa vez com o inplace:

dados.dropna(subset=['nome'], inplace=True)

Agora, vamos exibir o DataFrame em outra célula:

dados

Saída:

nomeidade
0JoãoNaN
2Maria30.0

Agora ele foi realmente modificado.

 

Espero ter ajudado, Guilherme. Se tiver mais alguma dúvida, estou à disposição. Bons estudos =)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!