segunda-feira, 19 de abril de 2021

Python - Diferença entre Pandas.copy() e cópia por meio de variáveis

O método copy() (pandas.DataFrame.copy(), pandas.Series.copy()) do pandas é usado para criar uma cópia de um objeto pandas (Dataframe, serie). As variáveis também são usadas para gerar a cópia de um objeto, mas as variáveis são apenas um ponteiro para um objeto e qualquer alteração em novos dados também alterará os dados anteriores.

Os exemplos a seguir mostram a diferença entre copiar por meio de variáveis e com o método DataFrame/Series.copy().

Exemplo #1: Copiando por meio de variáveis

Neste exemplo, uma amostra da Series Pandas é feita e copiada em uma nova variável. Depois disso, algumas alterações são feitas nos novos dados e comparadas com os dados antigos.

# Importando o pacote pandas
import pandas as pd

# Criando uma Series
data = pd.Series(['a', 'b', 'c', 'd'])

# Criando uma copia da Series?
new = data

# Atribuindo novo valor
new[1]='Valor alterado'

# imprimindo a serie e a sua cópia
print(new)
print(data)

Conforme mostrado na saída abaixo, as alterações feitas nos novos dados também são refletidas nos dados antigos, pois a nova variável era apenas um ponteiro para a antiga.

Saída:

0                 a
1    Valor alterado
2                 c
3                 d
dtype: object
0                 a
1    Valor alterado
2                 c
3                 d
dtype: object

Exemplo #2: Usando o método pandas.Series.copy()

Neste exemplo, o método Series.copy() é usado para copiar os dados e algumas alterações são feitas nos novos dados. As alterações são então comparadas com dados antigos.

# Importando o pacote pandas
import pandas as pd

# Criando uma Series
data = pd.Series(['a', 'b', 'c', 'd'])

# Criando uma copia da Series
new = data.copy()

# Atribuindo novo valor
new[1]='Valor alterado'

# imprimindo a serie e a sua cópia
print(new)
print(data)

Conforme mostrado abaixo, as mudanças nos novos dados são independentes e não mudaram nada nos antigos.

Saída:

0                 a
1    Valor alterado
2                 c
3                 d
dtype: object      
0    a
1    b
2    c
3    d
dtype: object

Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Difference between Pandas.copy() and copying through variables.

Licença

0 comentários:

Postar um comentário