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]})
dadosSaí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:
dadosSaí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:
dadosSaí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 =)