히비스서커스의 블로그

[Pandas] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa7 in position 7: invalid start byte (feat.apply) 본문

Programming/Python

[Pandas] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa7 in position 7: invalid start byte (feat.apply)

HibisCircus 2022. 2. 23. 10:58
728x90

상황

pandas를 이용하여 데이터프레임(DataFrame)을 csv파일로 저장한 후 불러오는 중 다음과 같은 에러가 발생하였다.

 

에러메시지

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa7 in position 7: invalid start byte

 

원인

데이터프레임 안에 한글이나 특수문자가 있기 때문

 

해결방법

데이터프레임 안에 csv파일로 저장할 시 encoding을 cp949로 해준거나 한글이나 특수문자를 영어로 바꿔준다.

 

 

csv파일로 저장할 시 encoding을 cp949로 해주기

import pandas as pd

# df는 이미 만들어놓은 데이터 프레임
df.to_csv('cm_column', encoding='cp494')

 

한글이 없는데도 이러한 문제가 나왔는데 데이터프레임의 컬럼의 값중 cm이 아닌 ㎝과 같은 특수 문자로 저장된 값이 존재했기 때문이다. 정확히 그 부분만 찍어서 바꿔주기 보다는 apply를 적용하여 전체 컬럼에 적용해주는 방법을 시도해보았다.

 

한글이나 특수문자를 영어로 바꾸기

import pandas as pd

# apply를 적용시킬 함수
def cm_change(x)
	return x.replace('㎝','cm')

# df는 이미 만들어놓은 데이터 프레임이며 cm_coulmn은 cm이 포함된 컬럼을 의미
df['cm_column'] = df['cm_column'].apply(cm_change)

 

-히비스서커스-

728x90