본문 바로가기
Python notes/Python Errors

Python errors) TypeError: No loop matching the specified signature and casting was found for ufunc add 해결

by 성실한 나무 2022. 8. 25.

1. 클러스터 별로 어떤 특징을 가지는지 확인 하는 와중에 TypeError를 만났다.

TypeError: No loop matching the specified signature and casting was found for ufunc add

 정확한 해석이 되지는 않는 에러긴 하지만, 데이터 타입에 문제가 있는 듯 했고, 데이터가 사용하려는 함수와 매칭이 되지 않는 것으로 보였다. Type error 화면은 아래와 같았다. pairplot이 그려지다가 말았다.

TypeError: No loop matching the specified signature and casting was found for ufunc add

 

 

2. 알고보니, 역시나 데이터 타입에 문제가 있었다. dsr이라는 데이터프레임에서 work_year는 데이터의 연도인데 category로 지정을 안했더니 seaborn에서 수치형 데이터로 인식하고 pairplot안에 포함을 시킨 것이었다. 그런데 정작 work_year는 숫자로 된 데이터이긴 했지만 수치형 데이터 타입이 아니고 'object' 타입이었기 때문에 plotting이 되지 않은 것이다.

 이건 수치형인 것도, 아닌 것도 아닌 상황...

 나머지 object 데이터들은 string으로 된 'object' 타입 데이터라서 filtering이 된 것 같은데 work_year는 숫자로 된 'object'타입 데이터라서 plotting 하려다가 안 된 것 같다.  

 

 

3. 그래서 해결 방안은?

 work_year를 아예 category형 타입으로 변경시켜주었더니 pairplot에서 제외된 채로 plotting할 수 있었다. 만약 int64와 같은 수치형 타입으로 변경시켰다면 pairplot에 포함된 채로 에러 없이 plotting 되었을 것이다.

 hue에 cluster를 입력하였더니 각 데이터가 클러스터 별로  구분된 산점도가 그려졌다.

 seaborn의 pairplot은 자동으로 수치형 데이터를 인식해서 각 feature별 산점도를 그려주지만, 수치형 데이터 인식 시 데이터 타입을 잘 설정해야 에러를 만나지 않을 수 있다는 것을 확인했다.

 

Seaborn, pairplot with hue

 

댓글