Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] .copy() é realmente necessário?

Já que no código abaixo já estamos atribuíndo esses dados à uma nova variável, quando alterar em "dados_sem_vazio", já não vai alterar no nosso antigo "dados_normalizados".

dados_sem_vazio = dados_normalizados[dados_normalizados['Churn'] != '']

Estou errado?

1 resposta
solução!

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!