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?
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?
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:
nome | idade | |
---|---|---|
0 | João | NaN |
1 | NaN | 20.0 |
2 | Maria | 30.0 |
Agora, vamos utilizar o dropna()
sem o subset
e sem o inplace
:
dados.dropna()
Saída:
nome | idade | |
---|---|---|
2 | Maria | 30.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:
nome | idade | |
---|---|---|
1 | NaN | 20.0 |
2 | Maria | 30.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:
nome | idade | |
---|---|---|
0 | João | NaN |
2 | Maria | 30.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:
nome | idade | |
---|---|---|
0 | João | NaN |
1 | NaN | 20.0 |
2 | Maria | 30.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:
nome | idade | |
---|---|---|
0 | João | NaN |
2 | Maria | 30.0 |
Agora ele foi realmente modificado.
Espero ter ajudado, Guilherme. Se tiver mais alguma dúvida, estou à disposição. Bons estudos =)