[파이썬] ⭐SettingWithCopyWarning

YUNA AN·2024년 8월 26일

Chat GPT로 공부하기

목록 보기
4/14

SettingWithCopyWarning은 Pandas에서 발생하는 경고로, DataFrame의 슬라이스에서 값을 설정할 때 의도하지 않은 부작용이 발생할 수 있음을 경고합니다. 이 경고는 주로 다음과 같은 상황에서 발생합니다.

1. 슬라이스된 DataFrame에 직접 값을 할당할 때:

  • 슬라이스된 DataFrame이 원본 DataFrame의 복사본인지, 또는 원본 DataFrame의 뷰(View)인지 불분명할 때 이 경고가 발생합니다.
  • 원본 데이터에 대한 참조를 의미하고, 복사별도의 메모리에 저장된 독립적인 데이터입니다.
  • 일 경우, 슬라이스된 DataFrame에 값을 할당하면 원본 DataFrame에도 영향을 미칠 수 있고, 복사일 경우 원본 DataFrame에 영향을 주지 않습니다.

2. 예시 코드:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

df_slice = df[df['A'] > 1] 
#슬라이스를 통해 데이터프레임 일부를 추출

df_slice['B'] = 10 
# 슬라이스에 값 할당 (경고 발생 가능)

위 코드에서 df_slice는 df의 일부 행을 슬라이스한 것입니다. 이때 df_slice['B'] = 10과 같이 값을 할당할 때 SettingWithCopyWarning이 발생할 수 있습니다. 이 경고는 df_slice가 df의 뷰인지 복사본인지 Pandas가 확신할 수 없기 때문에 발생합니다.

3. 경고를 피하는 방법:

이 경고를 피하려면 .loc를 사용하여 명확하게 데이터프레임의 특정 부분에 값을 할당해야 합니다.

df.loc[df['A'] > 1, 'B'] = 10

이 코드는 원본 DataFrame에서 조건에 맞는 부분만 선택하여 직접 값을 할당하므로 경고가 발생하지 않습니다.

4. 요약:

SettingWithCopyWarning은 데이터 할당이 의도한 대로 이루어지지 않을 수 있음을 경고하는 메시지입니다. 이 경고는 .loc를 사용하여 특정 행과 열을 명확하게 지정함으로써 피할 수 있습니다.

profile
Supply Chain Planning Specialist in Medical/Healthcare

0개의 댓글