개발로그필름

[데이터 TIL] ValueError: invalid literal for int() with base 10: '54,071,677' 본문

데이터분석가/데이터 TIL

[데이터 TIL] ValueError: invalid literal for int() with base 10: '54,071,677'

yuullog 2025. 2. 11. 10:46
728x90
반응형
SMALL

데이터를 전처리 하는 과정에서 생긴 에러이다

object 타입을 int형으로 바꾸는 과정에서 문제가 생겼는데

내가 바꾸려는것이 예를 들어 '54,071,677' 였는데 이건 str로 인식되어 , 를 제거후 숫자로 변환해야하는 것이었다

 

 

정리하면,

 

 

❌ 문제 원인: 쉼표(,)가 포함된 문자열을 숫자로 변환하려고 시도함

📌 이 오류는 Video views, Likes, Dislikes 컬럼의 값이 쉼표(,)가 포함된 문자열이기 때문

➡️ 예를 들어 '54,071,677'은 숫자가 아니라 문자열(str)로 인식됨.

 


 

✅ 해결 방법: 쉼표(,) 제거 후 숫자로 변환

쉼표(,)를 먼저 제거하고 int 또는 float으로 변환해야 한다

하지만 난 int로 모두 바꾸고 싶기 때문에 astype(int)로 코드 작성

# 쉼표(,) 제거 후 숫자로 변환하는 함수
def convert_to_numeric(column):
    return pd.to_numeric(youtube_df[column].str.replace(',', ''), errors='coerce').fillna(0).astype(int)

# 숫자로 변환할 컬럼 목록
numeric_columns = ['Video views', 'Likes', 'Dislikes']

# 변환 실행
for col in numeric_columns:
    if col in youtube_df.columns:
        youtube_df[col] = convert_to_numeric(col)

# 변환 후 데이터 타입 확인
print(youtube_df.dtypes)

✔️ errors='coerce'숫자로 변환할 수 없는 값이 있을 때 오류가 발생하는 대신 NaN(결측값)으로 처리하도록 하는 옵션

반응형
LIST
Comments