• 카테고리

    질문 & 답변
  • 세부 분야

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

  • 해결 여부

    해결됨

선쉥님 df[~cond]말고 drop으로 데이터 삭제하는 법 있을까요?

23.11.04 22:17 작성 23.11.04 22:29 수정 조회수 207

0

작업형 1 모의고사 2에서

 

질문 1

0이하의 이상치 나이를 제거하기 위해서

df=df.drop(cond1) 이렇게 하면 안되는 건가요ㅠㅠ...

오류가 나더라구요 판린이 이상 질문 드립니다

 

수업시간엔 아래처럼 사용하셨씁니다!

cond1=df['age']<=0

df=df[~cond] 이렇게 사용하셧었는데요!!

 

제가 drop함수만 기억이 나더라구요!!ㅠㅠ

 

질문 2.

df['age'] == round( df['age'], 0) 이 0의자리? 일의자리인가요?? 이 부분을 제가 모르는 것 같은데 설명 부탁 드립니다!!

 

round가 반올림함수라고 알려주셨는데요. 그런데 36.3은 어떻게 거르나 싶더라구요.

36.3의 경우에

df['age'] == round( df['age'], 0) 이면...

소수 첫째짜리에서 정수까지만 나오도록 돼있는데

그러면 36.3은 못 거르는 게 아닌가 싶은데 걸러져있더라구용... 이게 어찌된 것인지 설명 부탁 드립니다!!

 

-판린이 드림-

답변 2

·

답변을 작성해보세요.

0

아아 두번째는 ㅏ착각하였씁니다. drop말고도 ~을 이용해서 필터링하는 방법 더 배우겠습니다. 답변 감사합니다!!

0

  1. 조건식을 통한 필터링은 반드시 사용할 수 있어야 합니다. drop만으론 작업형1문제를 풀기 어려워요. 더 복잡한 코드가 됩니다.

     

cond = df['age'] <= 0
indices_to_drop = df[cond].index
df = df.drop(indices_to_drop)
  1. round(36.3, 0)의 결과는 36.0이 됩니다.

    36.3 == 36.0False가 됩니다.

즉, df['age'] == round(df['age'], 0) 조건은 df['age']에 있는 값이 정수가 아닌 경우 False를 반환하고, 정수인 경우에는 True를 반환합니다. 그러므로 36.3은 이 조건에서 False가 되어 "거르는" 목적으로 사용될 수 있습니다.