Python notes/Python Errors

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

성실한 나무 2022. 8. 25. 14:39

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