fillna() 질문
안녕하세요.
fillna() 으로 null값 처리할 때 단순한 의문이 생겨서 질문드립니다.
fillna에서 inplace=True 하면 기본 데이터세트가 업데이트되는 것은 이해하였는데요!
아래그림처럼 기존의 ['Age'] 컬럼에 fillna를 적용한 식을 넣어준다는 식으로 표현하면
그 다음에 ['Age'] 컬럼을 확인해보면 none값으로 나오네요..
무슨 차이가 있나요??
답변 1
3
안녕하십니까,
판다스 API중에 데이터를 Drop하거나 값을 채우는 API 들은 inplace라는 인자를 가지는 경우가 많습니다. 그런데 이 inplace를 사용할 때는 유의할 필요가 있습니다. 바로 return 값입니다.
inplace는 호출하는 DataFrame에 변경값을 그대로 적용할 것인지를 나타내는데, False를 적용하면 호출하는 DataFrame에 적용하지 않고 반환값에 적용을 합니다. True를 하게 되면 호출하는 DataFrame에 바로 적용을 하되 return값은 None을 return합니다. 여기에 유의해야 합니다.
예를 들어 titanic_df['Age'].fillna(titanic_df['Age'].mean, inplace=True)를 하게 되면 titanic_df['Age']에 바로 age 평균값으로 Null을 채우고 return은 None을 하게 됩니다. 그런데 만일 아래와 같이 return 값을 다시 titanic_df['Age']로 받아버리게 되면, 결국은 titanic_df에 바로 age 평균값으로 Null을 채우고 None return값을 titanic_df['Age']로 업데이트 하므로 결국은 None이 됩니다.
titanic_df['Age'] = titanic_df['Age'].fillna(titanic_df['Age'].mean, inplace=True)
따라서 inplace를 True로 할때는 반드시 return값으로 DataFrame을 할당하지 않아야 합니다.
즉 titanic_df['Age'].fillna(titanic_df['Age'].mean, inplace=True) 만 호출이 되어야 합니다.
반대로 inplace를 False로 할때는 반드시 return값으로 DataFrame을 할당해야 합니다.
즉 titanic_df['Age'] = titanic_df['Age'].fillna(titanic_df['Age'].mean, inplace=False)
inplace를 사용하는 API는 이 규칙을 기계적으로 암기하시는게 좋습니다.
감사합니다.
안녕하세요 열심히 수강중인 학생입니다
0
61
2
정수 인덱싱
0
68
2
넘파이 오류
0
85
2
11강 numpy의 axis 축 질문 드립니다.
0
85
2
Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.
0
79
2
Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.
0
70
2
타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.
0
75
2
타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.
0
64
2
5강 강의 오류가 있어요.
0
84
1
실무에서 LTV 관련 모델 선택 질문입니다!
0
72
2
14강 강의 듣는중에 궁금한게 있어서 질문합니다~
0
69
3
파이썬 다운그레이 후 사이킷런 재설치
0
117
2
좋은 강의 감사합니다.
0
72
2
scoring 함수 음수값
0
67
2
6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?
0
100
2
분류 평가 정확도 예측
0
76
2
안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.
0
98
1
카카오톡 채널 있나요
0
107
1
혹시 강의에서 사용하시는 ppt 받을 수 있는건가요
0
189
2
pca 스케일링 관련하여 질문드립니다.
0
100
2
주피터 대신 구글 코랩
0
172
2
강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?
0
147
2
실루엣 스코어..
0
85
2
float64 null 값 처리 방법
0
102
2





