Разница между мелкой копией и глубокой копией в фреймах данных Pandas
Библиотека pandas имеет в основном две структуры данных: DataFrames и Series. Эти структуры данных внутренне представлены индексными массивами, которые маркируют данные, и массивами данных, которые содержат фактические данные. Теперь, когда мы пытаемся скопировать эти структуры данных (DataFrames и Series), мы по сути копируем индексы и данные объекта, и есть два способа сделать это, а именно Shallow Copy и Deep Copy.
Эти операции выполняются с помощью библиотечных функций pandas.DataFrame.copy (deep = False) для поверхностного копирования и pandas.DataFrame.copy (deep = True) для глубокого копирования в DataFrames и Series.
Теперь давайте разберемся, что такое поверхностное копирование.
Мелкая копия
Когда создается неглубокая копия объекта DataFrame или Series, она не копирует индексы и данные исходного объекта, а просто копирует ссылки на его индексы и данные. В результате изменения, внесенные в один, отражаются в другом.
Это относится к созданию нового объекта коллекции и последующему заполнению его ссылками на дочерние объекты, найденные в оригинале. Процесс копирования не повторяется и, следовательно, не создает копии самих дочерних объектов.
Пример:

Python3
# porgam to depict shallow copy# in pandas dataframe # import moduleimport pandas as pd # assign dataframedf = pd.DataFrame({ 'index' : [ 1 , 2 , 3 , 4 ], 'GFG' : [ 'Mandy' , 'Ron' , 'Jacob' , 'Bayek' ]}) # shallow copycopydf = df.copy(deep = False ) # comparing shallow copied datframe# and original dataframeprint ( '
Before Operation:
' , copydf = = df) # assignmnet operationcopydf[ 'index' ] = [ 0 , 0 , 0 , 0 ] # comparing shallow copied datframe# and original dataframeprint ( '
After Operation:
' , copydf = = df) print ( '
Original Dataframe after operation:
' , df) |
Выход:

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

Python3
# porgam to depict deep copy# in pandas dataframe # import moduleimport pandas as pd # assign dataframedf = pd.DataFrame({"index": [1, 2, 3, 4], "GFG": ["Mandy", "Ron", "Jacob", "Bayek"]}) # deep copycopydf = df.copy(deep=True) # comparing shallow copied datframe# and original dataframeprint("
Before Operation:
", copydf == df) # assignmnet operationcopydf["index"] = [0, 0, 0, 0] # comparing shallow copied datframe# and original dataframeprint("
After Operation:
", copydf == df) print("
Original Dataframe after operation:
", df) |
Выход:

Здесь данные внутри исходных объектов не копируются рекурсивно. То есть данные внутри данных исходных объектов по-прежнему указывают на тот же блок памяти. Например, если данные в объекте Dataframe или Series содержат какие-либо изменяемые данные, тогда они будут совместно использоваться между ним и его глубокой копией, и любое изменение одного будет отражено в другом.
Таблица различий между Shallow Copy V / S Deep Copy
| Sr нет. | Мелкая копия | Глубокая копия |
|---|---|---|
| 1 | Это копия структуры коллекции, а не элементы. | Это копия коллекций, в которой дублируются все элементы исходной коллекции. |
| 2 | Влияет на исходный фрейм данных. | Не влияет на исходный фрейм данных. |
| 3 | Неглубокая копия не реплицирует дочерние объекты. | Глубокая копия рекурсивно реплицирует дочерние объекты. |
| 4 | Создание неглубокой копии происходит быстрее по сравнению с глубокой копией. | Создание глубокой копии происходит медленно по сравнению с мелкой копией. |
| 5 | Копия зависит от оригинала | Копия не полностью зависит от оригинала. |
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.