[Pandas] inplace 옵션

김유상·2023년 2월 2일
0
post-custom-banner

pandas는 다들 알다시피 컬럼을 가지는 정형 데이터들을 다룰 때 많이들 사용하는 라이브러리이다.

그런데 inplace라는 옵션이 parameter로 자주 넘어가는데 무슨 뜻인지 전혀 몰라서 알아보게 되었다. 일단 fillna()라는 메서드를 사용하면서 알게 되었다. inplace가 True or False일 때에 대해 메서드 오버로딩을 이용해서 처리하고 있었다.

(method)
fillna(value: Scalar | NAType | dict | Series | DataFrame | None = ..., *, method: FillnaOptions | None = ..., axis: SeriesAxisType = ..., limit: int | None = ..., downcast: dict | None = ..., inplace: Literal[True]) -> None

fillna(value: Scalar | NAType | dict | Series | DataFrame | None = ..., *, method: FillnaOptions | None = ..., axis: SeriesAxisType = ..., limit: int | None = ..., downcast: dict | None = ..., inplace: Literal[False] = ...) -> Series

잘 보면 inplace가 True일 때는 return None이고 inplace가 False일 때는 return Series인 것을 확인할 수 있다. 굳이 오버로딩을 사용한 이유도 여기에 있다. 메서드를 새로 정의하지 않고 return 값의 유무를 결정하는 것은 매우 불안정하기 때문이다.

inplace : bool, default False
If True, fill in-place. Note: this will modify any other views on this object (e.g., a no-copy slice for a column in a DataFrame).

docstring에서도 inplace에 대한 설명을 읽을 수 있었는데 default 값이 False로 일반적으로는 Series를 반환한다는 것이다.

그 이유는 값을 반환하지 않으면 기존 변수를 직접 변경해야 하고 이렇게 되면 원본을 잃어버릴 수 있기 때문에 가급적 False를 권장하는 듯 하다.

만약 로드하는 데에만 1시간이 걸리는 방대한 데이터라면 원본을 날려먹고 싶은 사람은 아무도 없을 테니까...

profile
continuous programming
post-custom-banner

0개의 댓글