본문 바로가기
데이터 사이언스

Pandas DataFrame에서 0과 빈 값(Empty) 구분하기: 데이터 전처리의 숨은 함정

by 빛나는존재 2024. 12. 3.

Claude로 생성한 이미지

일반적인 빈 칸 전처리

Dataframe 중 한 Column 에 아무것도 없는 빈 칸과 숫자가 섞여있는 경우, 데이터 처리 방식이 조금 복잡해진다. Pandas 는 빈 칸을 default 로 NaN 으로 처리하는데 이걸 정말로 NaN 도 아닌 빈 값으로 두고 싶다면 fillna(’’) 이런 식으로 하면 된다.

 

0과 빈 칸을 구분하지 못하는 잘못된 전처리를 조심하자

문제는 그 컬럼에 0 과 빈 칸이 섞여 있을 때 df_row[col_name] == 0 인 경우를 조심해야 한다는 것이다.

특정 column 이 numeric 이라고 판단되면 그 column 안에서의 값이 아예 없더라도 그건 자동으로 0 으로 된다. 따라서 사용자가 육안으로 보기에 분명히 cell 안에 0이라는 integer 가 들어있고 빈 칸이 섞여 있고 우리 눈에는 그 둘이 확연히 다르게 보여도, python 이 받아들이기로는 둘이 똑같이 받아들여진다는 것이다.

 

해결은? Dataframe cell 값의 길이로 0과 빈 칸을 구별

그래서 이것을 피하기 위해서는 나는 모든 value 를 string 으로 변환 한 후, len(df_row[col_name]) == 0 여부를 체크한다. 이게 0 인 것이 우리가 인지하는 정말로 아무것도 없는 값인 것이다. 0이라는 값이 들어갔다면 그것은 ‘0’ 이라는 string 으로 간주되어 len(df_row[col_name]) == 1 이 될 것이다.

반응형