[SyntaxError: Unexpected token 'N', ..."erCount": NaN, ""... is not valid JSON] 웹 페이지에 NaN 에러 발생시 python으로 해결하는 방법

YunSu4·2024년 8월 1일

O-D Matrix Project

목록 보기
1/3

웹 페이지 개발자 도구 -> 콘솔 에서 확인한 NaN error

error log: SyntaxError: Unexpected token 'N', ..."erCount": NaN, ""... is not valid JSON



해결 방법:

	 result = result.fillna('null')

이처럼 데이터 프레임 자체의 NaN 값을 null로 바꿔서 표기하면 json에서 null을 인식하여 null로 표기한다.

참고 자료
python 결측값 None, NaN에 관하여




이전에 시도했던 방법들:

  • 일단 제공된 데이터 자체가 결측값인지 혹은 연산 과정에서 오류가 결측값이 된 것인지 확인하였다.

jupyter notebook으로 raw data를 추출한 결과 제공된 데이터 자체가 결측값임을 알 수 있었다.

참고 사항
NaN인 이유는 내가 사용한 SK open API의 시간대별 지하철역 출구 통행자수의 경우 5명 이하의 인원은 개인정보 보호를 위해 NaN 값으로 표기하고, 실제 0명인 경우만 0으로 표기한다고 한다.



방법 1.



Json을 python 객체로 변환하고 null, None, NaN을 N/A로 변환해봐도 오류는 동일하였다.



방법 2.


데이터의 NaN값을 None 으로 변경해봐도 오류는 동일하였다.



방법 3.


사실 NaN 자체가 문제가 아니라 한글이 포함되어 있어서 그럴 수도 있다는 생각에 한글이 깨지지 않도록 코드를 작성해보았지만 오류는 동일하였다.



방법 4.


데이터의 NaN값을 None 으로 변경해봐도 오류는 동일하였다.



방법 5.


데이터의 NaN값을 None 으로 변경해봐도 오류는 동일하였다.



<잘못된 방식으로 접근하게 된 계기>

3번을 제외한 모든 방법의 공통점은 NaN을 None으로 변경하려고 했다는 점이다. pandas에서는 결측값을 NaN 혹은 None으로 인식한다고 알고 있어 null로 변경하면 인식이 안 될 것이라고 생각하였다. 또한 현재는 NaN 값이 인식되지 않는 상황이니 None으로 변경하는 것이 당연하다고 생각하였다.

-> 그러나 데이터프레임의 데이터를 json 형태로 변환하고 웹 페이지에서는 json을 받게 되는데 json에서는 NaN 값을 처리할 수 없어서 발생한 오류였다. 따라서 데이터프레임의 데이터 중 결측값을 모두 null로 표기하도록 변경하니 오류가 해결되었다.



<고찰>

null 값은 어떤 데이터에서나 존재할 수 있지만 이를 처리하는 방식은 모두 다양하다. 이를 정확히 알고 처리할 줄 아는 것이 중요하다는 것을 알게 되었다.

profile
에러수집가

0개의 댓글