• 카테고리

    질문 & 답변
  • 세부 분야

    자격증 (데이터 사이언스)

  • 해결 여부

    해결됨

작업형1 모의문제2 강의에서 문제4

23.06.03 17:44 작성 조회수 199

0

문제 4번 마지막에 데이터수를 구하기위해 sum을 할때 이런 오류가 뜹니다 ㅠㅠ

정수형이랑 수치형은 연산이 불가하다는(?) 오류인거같은데

수치형으로 바꿔보고자 int(df) int(df.sum()) 등 다양한 시도를 해봤는데 이런 식은 통하지않더라구요 ㅠㅠ

질문1) 풀이 과정에서 뭔가 잘못건드렸을까요? 왜 이런 오류가뜰까요 ㅠㅠ

질문2) 이런 오류가 떴을때 df를 수치형으로 바꾸는방법?

 

<작성한 코드>

# your code
import pandas as pd
df = pd.read_csv('members.csv')
cols = df.select_dtypes('object').columns
cols
df = df[cols]
df.head()
df = df.fillna(0)
df = df.T
df.head()
print(sum(df.sum() > 3000))   <--------이 과정에서 발생되는 오류입니다 

<오류메세지>

/usr/local/lib/python3.10/dist-packages/pandas/_libs/ops.pyx in pandas._libs.ops.scalar_compare()

TypeError: '>' not supported between instances of 'str' and 'int'

답변 1

답변을 작성해보세요.

0

이렇게 오류가 발생할 경우
1. df.head()를 살펴 봅니다.
image

  1. 수치형만 있는 것이 아니라 범주형 변수까지 포함하고 있네요! 그렇다면 수치형 컬럼만 선택이 되지 않았네요

  2. 수치형 변수를 선택하는 cols = df.select_dtypes('object').columns 코드를 살펴 봅니다.

  3. 여기서 에러를 찾을 수 있다면 exclude='object'를 잘못 입력해 모든 컬럼이 선택되었다는 것을 확인할 수 있네요

     

  4. 만약 cols = df.select_dtypes('object').columns를 보고도 에러가 뭔지 도저히 찾지 못할 때가 있어요

  5. 그때는 cols=['컬럼명','컬럼명'] 형태로 직접 입력하는 것이 빠르게 해결 가능할 것 같아요!

합격 응원하겠습니다 :)