Oi, Paulo, tudo bem?
O método .copy()
é utilizado para criar uma cópia independente de um DataFrame ou Series. No seu caso, você está certo ao dizer que a linha de código dados_sem_vazio = dados_normalizados[dados_normalizados['Churn'] != '']
já está criando um novo DataFrame. Então, por que usar o .copy()
?
A resposta é que, em alguns casos, o pandas pode retornar uma visualização de um DataFrame em vez de um novo DataFrame. Isso significa que, se você alterar o DataFrame "novo", também poderá alterar o DataFrame original. Isso é conhecido como SettingWithCopyWarning no pandas.
Vou te dar um exemplo prático. Imagine que temos o seguinte DataFrame:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': ['p', 'q', 'r']
})
Se fizermos:
df1 = df[df['A'] > 1]
E depois:
df1['B'] = [10, 20]
Podemos receber um SettingWithCopyWarning, porque o pandas não tem certeza se df1
é uma visualização ou uma cópia de df
.
Se usarmos .copy()
, o pandas sabe que df1
é uma cópia independente de df
, então podemos fazer:
df1 = df[df['A'] > 1].copy()
df1['B'] = [10, 20]
E não receberemos nenhum aviso.
Então, mesmo que pareça redundante, usar .copy()
pode evitar problemas inesperados e é uma boa prática quando queremos ter certeza de que estamos trabalhando com um novo DataFrame independente.
Espero ter ajudado. Caso tenha dúvidas, conte com o fórum.
Abraços!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!