인프런 커뮤니티 질문&답변

greyy님의 프로필 이미지
greyy

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

2회 기출유형(작업형1)

warning 관련

해결된 질문

작성

·

322

·

수정됨

0

안녕하세요! 답이 나오기는 하는데 이 copy warning은 뭘까요? 어떻게 해결할까요?

# print(df.shape)
line = int(len(df) * 0.8)
df = df[:line]
# df.shape
# print(df.isnull().sum())
r1 = df['f1'].std()
med = df['f1'].median()
df['f1'] = df['f1'].fillna(med)
# df.isnull().sum()
r2 = df['f1'].std()

abs(r1 - r2)
<ipython-input-47-f10e742b8062>:10: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df['f1'] = df['f1'].fillna(med)
3.564064430008667

답변 1

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

코랩이 판다스 버전이 높아 시험환경보다 워닝(에러 아님)을 더 잘 출력하고 있어요!

 

  1. 방법

    데이터 잘라낼때 아래와 같이 사용하거나

df = df.iloc[:line]

 

  1. 방법

df = df[:line]

이렇게 사용하고 싶다면 copy()를 붙여주세요

df = df[:line].copy()

 

loc/iloc로 해결하기에는 어려울 수도 있으니 시험에서 혹시나 SettingWithCopyWarning 에러나면 해결이 우선이니 새로운 변수에 넣거나 잘라낸게 있다면 copy()를 붙여주세요

greyy님의 프로필 이미지
greyy

작성한 질문수

질문하기