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.Series.copy(deep=False) para copia superficial y pandas.Series.copy(deep=True) para copia profunda en Series.
Ahora, comprendamos qué es la copia superficial.
Copia superficial
Cuando se crea una copia superficial de un objeto Serie o Serie, 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 series # import module import pandas as pd # assign series ser = pd.Series(['Mandy', 'Ron', 'Jacob', 'Bayek']) # shallow copy copyser = ser.copy(deep=False) # comparing shallow copied series # and original series print('\nBefore Operation:\n', copyser == ser) # assignment operation copyser[2] = 'Geeks' # comparing shallow copied series # and original series print('\nAfter Operation:\n', copyser == ser) print('\nOriginal Dataframe after operation:\n', ser)
Producción:
Como podemos ver en la salida del programa anterior, los cambios aplicados al marco de datos copiado superficialmente se aplican automáticamente a la serie original.
Copia profunda
Una copia profunda de una Serie o un objeto Serie 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 series # import module import pandas as pd # assign series ser = pd.Series(['Mandy', 'Ron', 'Jacob', 'Bayek']) # shallow copy copyser = ser.copy(deep=True) # comparing deep copied series # and original series print('\nBefore Operation:\n', copyser == ser) # assignment operation copyser[2] = 'Geeks' # comparing deep copied series # and original series print('\nAfter Operation:\n', copyser == ser) print('\nOriginal Dataframe after operation:\n', ser)
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 el objeto Serie 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 a la serie inicial. | No afecta a la serie 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 riturajsaha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA