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

안녕하세요 이번 글에서는 pandas 라이브러리의 .copy() 메소드를 사용한 경우와 '=' 대입연산자를 사용한 경우를 비교해보도록 하겠습니다.
먼저 필요한 라이브러리를 불러오도록 하겠습니다.
import pandas as pd
import seaborn as sns
라이브러리를 불러온 후 seaborn 라이브러리의 load_dataset 메소드를 사용하여 'diamonds' 데이터셋을 불러온 후 출력해보겠습니다. 출력 결과 53940개의 행과 10개의 열로 구성된 데이터임을 알 수 있습니다.
1. copy()
- DataFrame이나 Series의 깊은 복사(deep 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