데이터 전처리중 invalid literal for int() with base 10: '' 에러 문제

해결됨
Jason Chung 프로필

안녕하세요. 강사님 

표제 관련하여 현장 업무 적용해 보려고 하는데, 제목과 같은 에러가 떠서요. 

기본 Data set은 아래와 같고요. 

입금 부분을 아래와 같이 천단위 없이 변경하려고 하였는데, 제목과 같은 에러가 떠서요.

df type은  object입니다.  

df['입금'] = df['입금'].str.replace(',','').fillna(0).astype('int64')

인터넷을 찾아보니, Blank로 되어 있어서 그렇다고 하는데 , Fillna(0)이 있으면 

해당 칼럼을 전부 0으로 바꾸어 주는 것이 아닌지요. 

강의 들을 때와 다르게 실제 파일 적용하려니 상황이 달라서 그런지 시각화 하기도 전부터

막힙니다. 도와주세요.   

박조은 프로필
박조은 2달 전

안녕하세요.

각 과정을 나누어서 처리 하시는걸 권장드려요.

메소드 체이닝을 사용하면 코드 한 줄에 처리가 되어 깔끔하긴 하지만 중간 과정을 보기 어렵습니다.

df['입금'] = df['입금'].str.replace(',','')

df['입금'] = df['입금'].fillna(0) # 이 처리 후에 값이 잘 들어갔는지 확인해 보세요.

df['입금'] = df['입금'].astype('int64')

아마도 결측치 때문에 데이터 타입이 float 형태로 되어 있을 수도 있습니다.

pd.to_numeric 으로 변환해 보시는 방법을 사용해 보세요.

pd.to_numeric 으로 변환하시면 fillna  과정 없이도 수치 데이터로 변경될거에요.

또, 금액이 없는데 0을 일괄적으로 넣어주게 되면 평균이나 중앙값 등의 계산을 할 때 제대로 계산이 안 됩니다.

결측치는 결측치 그대로 남겨두시는게 나중에 계산을 위해 더 나은 방법입니다.

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스