Неглубокая копия против глубокой копии в серии Pandas
Библиотека 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.