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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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 =)