🖥️ IT, 컴퓨터/🐍 Python

[Python] 파이썬 pandas df.copy() 써야 하는 이유

김 홍시 2025. 6. 2.
반응형

🐍 파이썬 pandas copy() 꼭 써야 할까? 안 쓰면 생기는 문제 총정리!

파이썬에서 pandas를 사용할 때, 종종 df.copy()를 붙여야 하나 고민되는 순간이 있습니다. 단순히 df2 = df로도 복사가 되는데, 왜 굳이 copy()를 써야 하는 걸까요? 이번 글에서는 copy()를 사용할 때와 사용하지 않을 때의 차이점, 그리고 실제 예제와 함께 꼭 알아야 할 팁을 정리했습니다.


✅ 핵심 요약: copy()진짜 복사, 안 쓰면 가짜 복사(얕은 복사)

  • df2 = df
    얕은 복사(shallow copy): 두 변수가 같은 데이터프레임 객체를 참조함
  • df2 = df.copy()
    깊은 복사(deep copy): 완전히 독립적인 새 객체를 생성함

🧠 왜 copy()를 써야 할까?

1. 원본 데이터프레임(df)이 바뀌면 같이 바뀐다!

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3]})
df2 = df          # 얕은 복사
df2['A'] = df2['A'] * 10

print(df)   # 원본도 바뀜

결과:

     A
0   10
1   20
2   30

원본 df까지 바뀌어버렸습니다. 왜냐하면 df2df같은 객체를 가리키고 있기 때문이죠.


2. copy()를 사용하면 안전하게 원본 보호 가능

df = pd.DataFrame({'A': [1, 2, 3]})
df2 = df.copy()   # 깊은 복사
df2['A'] = df2['A'] * 10

print(df)   # 원본은 그대로

결과:

   A
0  1
1  2
2  3

이제야 우리가 원하던 결과입니다! df2만 바뀌고 df는 그대로 유지됩니다.


⚠️ copy()를 안 쓰면 생길 수 있는 문제

  • 전처리 중에 원본 데이터가 의도치 않게 손상
  • EDA나 분석 중, 원인 모를 값 변경 발생
  • 모델 학습용 데이터가 훈련 중 변형될 수 있음
  • 팀 작업 시, 예상과 다른 결과로 협업 오류 발생

💡 언제 반드시 copy()를 써야 할까?

상황 copy() 필요 여부
단순 변수 재지정 ❌ 필요 없음
새로운 데이터프레임 만들고 수정 ✅ 필요함
특정 행/열 슬라이싱 후 수정 ✅ 필요함
함수 내부에서 원본 손상 막기 ✅ 필요함
그룹별 통계, 파생변수 생성 시 ✅ 필요함

🔍 정리: copy()는 데이터 안전벨트

파이썬 pandas에서 df.copy()데이터 손실을 방지하기 위한 필수 안전장치입니다. 잠깐 생략해도 괜찮을 것 같지만, 특히 데이터 전처리나 모델링 과정에서는 꼭 사용해야 할 필수 습관입니다.


반응형

댓글