Data Analystics/pandas

[Pandas] '.copy()' vs '=': 깊은 복사(Deep Copy) vs 얕은 복사(Shallow copy)

묭동이 2024. 1. 15. 22:52

안녕하세요 이번 글에서는 pandas 라이브러리의 .copy() 메소드를 사용한 경우와 '=' 대입연산자를 사용한 경우를 비교해보도록 하겠습니다.

 

먼저 필요한 라이브러리를 불러오도록 하겠습니다.

import pandas as pd
import seaborn as sns

 

라이브러리를 불러온 후 seaborn 라이브러리의 load_dataset 메소드를 사용하여 'diamonds' 데이터셋을 불러온 후 출력해보겠습니다. 출력 결과 53940개의 행과 10개의 열로 구성된 데이터임을 알 수 있습니다.

데이터셋 불러온 후 출력해보기

 

 

1. copy()

  • DataFrame이나 Series의 깊은 복사(deep copy)를 생성하는 데 사용합니다. 
  • 깊은 복사를 하게 되면, 원본 객체의 데이터와 구조를 완벽하게 복제하여 새로운 객체를 만들게 되며 이 새로운 객체는 메모리상에서 독립적인 위치에 저장되므로, 복제된 객체를 수정해도 원본 객체에는 아무런 영향을 미치지 않습니다.

copy() : 깊은 복사 예시


2. '=' 대입연산자

  • = 연산자를 사용하여 DataFrame을 다른 변수에 할당할 경우, 할당된 변수는 원본 DataFrame과 메모리상에서 같은 위치를 참조합니다.
  • 즉, '얕은 복사(shallow copy)' 방식
    • 원본 DataFrame을 수정하면 할당된 변수의 데이터도 변경되며, 반대로 할당된 변수를 수정하면 원본 DataFrame의 데이터도 변경됩니다.

'=' : 얕은 복사 예시



 

 

 

 

 

틀린 부분 댓글로 작성해주시면 감사하겠습니다 😊

 

 

Reference

 

copy — Shallow and deep copy operations

Source code: Lib/copy.py Assignment statements in Python do not copy objects, they create bindings between a target and an object. For collections that are mutable or contain mutable items, a copy ...

docs.python.org

 

pandas.DataFrame.copy — pandas 2.1.4 documentation

previous pandas.DataFrame.convert_dtypes

pandas.pydata.org

 

python Pandas DataFrame copy(deep=False) vs copy(deep=True) vs '='

Could somebody explain to me a difference between df2 = df1 df2 = df1.copy() df3 = df1.copy(deep=False) I have tried all options and did as follows: df1 = pd.DataFrame([1,2,3,4,5]) df2 = df1 d...

stackoverflow.com