• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

inplace=True와 변수 할당의 차이점

21.03.02 16:17 작성 조회수 162

0

3장 피마인디언 당뇨병 예측에서 0값을 평균값으로 바꿔주는 부분에서 

책에는 mean_zero_features= diabetes_data[zero_features].mean()
diabetes_data
[zero_features]=diabetes_data[zero_features].replace(0, mean_zero_features)처럼
변수를 할당해서 값이 대체되는데

diabetes_data[zero_features].replace(0, mean_zero_features, inplace=True)로
변수 할당 대신 inplace=True를 옵션으로 추가해서
코드를 변경하니 값이 대체되지 않는데 혹시 이유가 있을까요?

답변 1

답변을 작성해보세요.

0

안녕하십니까,

이건 정확히 저도 원인을 모르겠습니다.

pandas Dataframe에서 여러개의 feature들을 한꺼번에 replace(,,,, inplace=True)를 부여하면  아래와 같이 warning 이 발생하면서 제대로 적용이 안되는 것 같습니다.

A value is trying to be set on a copy of a slice from a DataFrame

아마도 replace할 mean_zero_features가 diabetes_data[zero_features]의 mean()값으로 서로 참조하는 객체가 같아서 적용이 안되는 것 같은데, 추측일 뿐입니다.

diabetes_data[zero_features].replace(0, mean_zero_features, inplace=True)로