Разница между мелкой копией и глубокой копией в фреймах данных 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 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 datframe # and original dataframe print ( '
Before Operation:
' , copydf = = df) # assignmnet operation copydf[ 'index' ] = [ 0 , 0 , 0 , 0 ] # comparing shallow copied datframe # and original dataframe print ( '
After Operation:
' , copydf = = df) print ( '
Original Dataframe after operation:
' , df) |
Выход:
Как видно из выходных данных вышеуказанной программы, изменения, примененные к неглубоко скопированному фрейму данных, автоматически применяются к исходному фрейму данных.
Глубокая копия
Глубокая копия DataFrame или объекта Series имеет собственную копию индекса и данных. Это процесс, в котором процесс копирования происходит рекурсивно. Это означает сначала создание нового объекта коллекции, а затем рекурсивное заполнение его копиями дочерних объектов, найденных в оригинале. В случае глубокой копии копия объекта копируется в другой объект. Это означает, что любые изменения, внесенные в копию объекта, не отражаются в исходном объекте.
Пример:
Python3
# porgam 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 datframe # and original dataframe print ( "
Before Operation:
" , copydf = = df) # assignmnet operation copydf[ "index" ] = [ 0 , 0 , 0 , 0 ] # comparing shallow copied datframe # and original dataframe print ( "
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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.