인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

ji_nhee님의 프로필 이미지
ji_nhee

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형1 모의문제2

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

해결된 질문

작성

·

314

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=['컬럼명','컬럼명'] 형태로 직접 입력하는 것이 빠르게 해결 가능할 것 같아요!

합격 응원하겠습니다 :)

ji_nhee님의 프로필 이미지
ji_nhee

작성한 질문수

질문하기