[Python] 18. pandas 데이터프레임 복사하는 방법

pandas에서 데이터프레임을 복사하는 방법에 대해 예제와 함께 상세히 설명하겠습니다.

예제 데이터 생성

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'London', 'Paris']
}

df = pd.DataFrame(data)
print(df)

출력 결과

      Name  Age      City
0    Alice   25  New York
1      Bob   30    London
2  Charlie   35     Paris

얕은 복사(Shallow Copy)

얕은 복사는 = 연산자를 사용하여 데이터프레임을 다른 변수에 할당하는 방법입니다.
얕은 복사를 하게 되면 새로운 변수는 원본 데이터프레임을 참조하게 됩니다.
따라서 한 쪽의 데이터를 수정하면 다른 쪽도 영향을 받게 됩니다.

# 얕은 복사
df_copy = df

# 데이터프레임 수정
df_copy.loc[0, 'Age'] = 26

# 원본과 복사본 모두 변경됨
print(df)

출력 결과

      Name  Age      City
0    Alice   26  New York
1      Bob   30    London
2  Charlie   35     Paris

깊은 복사(Deep Copy)

깊은 복사는 copy() 메서드를 사용하여 데이터프레임을 복사하는 방법입니다.
깊은 복사를 하게 되면 새로운 변수는 원본 데이터프레임과 완전히 독립적인 복사본이 됩니다.
따라서 복사본을 수정하더라도 원본에는 영향을 주지 않습니다.

# 깊은 복사
df_copy = df.copy()

# 데이터프레임 수정
df_copy.loc[0, 'Age'] = 27

# 원본은 변경되지 않음
print(df)

출력 결과

      Name  Age      City
0    Alice   26  New York
1      Bob   30    London
2  Charlie   35     Paris

복사본에서 데이터 수정이 원본에 영향을 주는 경우

복사본을 생성한 후에 해당 복사본에서 데이터를 수정하면 원본에도 영향을 줍니다.
이는 데이터프레임의 일부 데이터만 변경하는 경우에는 깊은 복사가 이루어지지만, 새로운 열을 추가하는 경우에는 얕은 복사가 이루어집니다.

# 복사본 수정이 원본에 영향을 주는 경우
df_copy = df.copy()

# 새로운 열 추가
df_copy['Country'] = ['USA', 'UK', 'France']

# 원본과 복사본 모두 변경됨
print(df)

출력 결과

      Name  Age      City Country
0    Alice   26  New York     USA
1      Bob   30    London      UK
2  Charlie   35     Paris  France

복사본에서 데이터 수정이 원본에 영향을 주지 않도록 복사

copy() 메서드의 deep=True 옵션을 사용하면 복사본에서 데이터를 수정해도 원본에 영향을 주지 않도록 깊은 복사가 이루어집니다.

# 복사본 수정이 원본에 영향을 주지 않도록 복사
df_copy = df.copy(deep=True)

# 새로운 열 추가
df_copy['Country'] = ['USA', 'UK', 'France']

# 원본은 변경되지 않음
print(df)

출력 결과

      Name  Age      City
0    Alice   26  New York
1      Bob   30    London
2  Charlie   35     Paris

이렇게 pandas의 데이터프레임을 복사하는 방법에 대해 얕은 복사와 깊은 복사, 그리고 어떤 경우에 원본에 영향을 주는지, 그리고 원본에 영향을 주지 않도록 복사하는 방법을 예제와 함께 상세히 설명드렸습니다.
데이터프레임을 다룰 때에는 데이터를 복사하는 방법에 유의하여 원본 데이터의 무결성을 유지하는 것이 중요합니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤