Неглубокая копия против глубокой копии в серии Pandas

Опубликовано: 1 Декабря, 2021

Библиотека pandas имеет в основном две структуры данных: DataFrames и Series. Эти структуры данных внутренне представлены индексными массивами, которые маркируют данные, и массивами данных, которые содержат фактические данные. Теперь, когда мы пытаемся скопировать эти структуры данных (DataFrames и Series), мы по сути копируем индексы и данные объекта, и есть два способа сделать это, а именно Shallow Copy и Deep Copy.

Эти операции выполняются с помощью библиотечных функций pandas.Series.copy (deep = False) для поверхностного копирования и pandas.Series.copy (deep = True) для глубокого копирования в Series.

Теперь давайте разберемся, что такое поверхностное копирование.

Мелкая копия

Когда создается неглубокая копия объекта Series или Series, она не копирует индексы и данные исходного объекта, а просто копирует ссылки на его индексы и данные. В результате изменения, внесенные в один, отражаются в другом.

Это относится к созданию нового объекта коллекции и последующему заполнению его ссылками на дочерние объекты, найденные в оригинале. Процесс копирования не повторяется и, следовательно, не создает копии самих дочерних объектов.
Пример:

Python3

# porgam 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 ( ' Before Operation: ' , copyser = = ser)
# assignmnet operation
copyser[ 2 ] = 'Geeks'
# comparing shallow copied series
# and original series
print ( ' After Operation: ' , copyser = = ser)
print ( ' Original Dataframe after operation: ' , ser)

Выход:

Как видно из выходных данных вышеуказанной программы, изменения, примененные к неглубоко скопированному фрейму данных, автоматически применяются к исходной серии.

Глубокая копия

Глубокая копия объекта Series или Series имеет собственную копию индекса и данных. Это процесс, в котором процесс копирования происходит рекурсивно. Это означает сначала создание нового объекта коллекции, а затем рекурсивное заполнение его копиями дочерних объектов, найденных в оригинале. В случае глубокой копии копия объекта копируется в другой объект. Это означает, что любые изменения, внесенные в копию объекта, не отражаются в исходном объекте.

Пример:

Python3

# porgam 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 ( ' Before Operation: ' , copyser = = ser)
# assignmnet operation
copyser[ 2 ] = 'Geeks'
# comparing deep copied series
# and original series
print ( ' After Operation: ' , copyser = = ser)
print ( ' Original Dataframe after operation: ' , ser)

Выход:

Здесь данные внутри исходных объектов не копируются рекурсивно. То есть данные внутри данных исходных объектов по-прежнему указывают на тот же блок памяти. Например, если данные в объекте Series содержат какие-либо изменяемые данные, они будут совместно использоваться им и его глубокой копией, и любое изменение одного будет отражено в другом.

Таблица различий между Shallow Copy V / S Deep Copy

Sr нет. Мелкая копия Глубокая копия
1 Это копия структуры коллекции, а не элементы. Это копия коллекций, в которой дублируются все элементы исходной коллекции.
2 Влияет на исходную серию. Не влияет на исходную серию.
3 Неглубокая копия не реплицирует дочерние объекты. Глубокая копия рекурсивно реплицирует дочерние объекты.
4 Создание неглубокой копии происходит быстрее по сравнению с глубокой копией. Создание глубокой копии происходит медленно по сравнению с мелкой копией.
5 Копия зависит от оригинала Копия не полностью зависит от оригинала.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.