Diferencia entre copia superficial VS copia profunda en Pandas Dataframes

La biblioteca pandas tiene principalmente dos estructuras de datos DataFrames y Series . Estas estructuras de datos se representan internamente con arrays de índice, que etiquetan los datos, y arrays de datos, que contienen los datos reales. Ahora, cuando tratamos de copiar estas estructuras de datos (DataFrames y Series), esencialmente copiamos los índices y los datos del objeto y hay dos formas de hacerlo, a saber, copia superficial y copia profunda.

Estas operaciones se realizan con la ayuda de las funciones de biblioteca pandas.DataFrame.copy(deep=False) para copia superficial y pandas.DataFrame.copy(deep=True) para copia profunda en DataFrames y Series.

Ahora, comprendamos qué es la copia superficial.

Copia superficial

Cuando se crea una copia superficial de un objeto DataFrame o Series, no copia los índices y los datos del objeto original, sino que simplemente copia las referencias a sus índices y datos. Como resultado, un cambio realizado en uno se refleja en el otro.

Se refiere a construir un nuevo objeto de colección y luego llenarlo con referencias a los objetos secundarios que se encuentran en el original. El proceso de copia no se repite y, por lo tanto, no creará copias de los propios objetos secundarios. 

Ejemplo:

Python3

# program to depict shallow copy
# in pandas dataframe
 
# import module
import pandas as pd
 
# assign dataframe
df = pd.DataFrame({'index': [1, 2, 3, 4],
                   'GFG': ['Mandy', 'Ron', 'Jacob', 'Bayek']})
 
 
# shallow copy
copydf = df.copy(deep=False)
 
# comparing shallow copied dataframe
# and original dataframe
print('\nBefore Operation:\n', copydf == df)
 
# assignment operation
copydf['index'] = [0, 0, 0, 0]
 
 
# comparing shallow copied dataframe
# and original dataframe
print('\nAfter Operation:\n', copydf == df)
 
print('\nOriginal Dataframe after operation:\n', df)

Producción:

Como podemos ver en la salida del programa anterior, los cambios aplicados al marco de datos copiado superficialmente se aplican automáticamente al marco de datos original.

Copia profunda

Una copia profunda de un objeto DataFrame o Series tiene su propia copia de índice y datos. Es un proceso en el que el proceso de copia se produce de forma recursiva. Significa primero construir un nuevo objeto de colección y luego poblarlo recursivamente con copias de los objetos secundarios que se encuentran en el original. En el caso de la copia profunda, una copia de un objeto se copia en otro objeto. Significa que los cambios realizados en una copia del objeto no se reflejan en el objeto original. 

Ejemplo:

Python3

# program to depict deep copy
# in pandas dataframe
 
# import module
import pandas as pd
 
# assign dataframe
df = pd.DataFrame({'index': [1, 2, 3, 4],
                   'GFG': ['Mandy', 'Ron', 'Jacob', 'Bayek']})
 
# deep copy
copydf = df.copy(deep=True)
 
# comparing shallow copied dataframe
# and original dataframe
print('\nBefore Operation:\n', copydf == df)
 
# assignment operation
copydf['index'] = [0, 0, 0, 0]
 
 
# comparing shallow copied dataframe
# and original dataframe
print('\nAfter Operation:\n', copydf == df)
 
print('\nOriginal Dataframe after operation:\n', df)

Producción:

Aquí, los datos dentro de los objetos originales no se copian recursivamente. Es decir, los datos dentro de los datos de los objetos originales todavía apuntan a la misma unidad de memoria. Por ejemplo, si los datos en un objeto Dataframe o Series contienen datos mutables, se compartirán entre él y su copia profunda y cualquier modificación a uno se reflejará en el otro. 

Tabla de diferencia entre copia superficial V/S copia profunda

No Señor. Copia superficial Copia profunda
1 Es la copia de la estructura de la colección, no los elementos. Es la copia de las colecciones con todos los elementos de la colección original duplicados.
2 Afecta al marco de datos inicial. No afecta el marco de datos inicial.
3 La copia superficial no replica los objetos secundarios. La copia profunda replica los objetos secundarios de forma recursiva.
4 Crear una copia superficial es rápido en comparación con una copia profunda. Crear una copia profunda es lento en comparación con una copia superficial.
5 La copia depende del original. La copia no depende totalmente del original.

 

Publicación traducida automáticamente

Artículo escrito por surajupadhyay0 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *