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

캠사 Camping sapiens님의 프로필 이미지

작성한 질문수

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

4-2 type1 작업형1 6번 문제 문의드립니다.

해결된 질문

작성

·

166

1

안녕하세요, 수강생입니다.

학습 중에 궁금한 사항이 있어 문의글 남깁니다.

 

문제6 (데이터는 members.csv)

  • 'age' 컬럼의 이상치(소수점 나이와 음수나이, 0포함)를 제거하고

  • 제거 전 후의 views 컬럼 표준편차를 더하시오 (최종 결과 값은 소수 둘째자리까지 출력, 셋째자리에서 반올림)

 

[ 풀이 코드 ]

# 풀이
import pandas as pd
df = pd.read_csv("members.csv")

r1 = df['views'].std()

cond = df['age'] <= 0
# print(df.shape)
df = df[~cond]
# print(df.shape)

# print(df.shape)
cond = df['age'] == round(df['age'],0)
df = df[cond]
# print(df.shape)

r2 = df['views'].std()

print(round(r1 + r2, 2))

답은 : 8420.69 가 나왔고,

 

[ 저의 코드 ]

import pandas as pd
df = pd.read_csv('members.csv')
# print(df.head())
# print(df['age'])
r1 = df['views'].std()
df['age'] = df['age'] > 0
df['age'] = df['age'] == round(df['age'],0)
r2 = df['views'].std()
print(round(r1+r2, 2))

저의 답은 8341.72 가 나왔는데....

 

저의 질문은 'age' 컬럼의 이상치를 제거하면 제거한 값을 'age' 컬럼에 그대로 덮어쓰고 코드를 작성하는게 맞을 것 같은데 풀이는 cond 라는 변수로 받고 전체 df 데이터에 이상치 제거 값을 덮어쓰셨더라구요.

어떠한 차이가 있는지 궁금합니다..

답변 1

1

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

  1. df['age'] = df['age'] > 0: 'age' 컬럼 자체를 나이가 0보다 큰지의 여부를 나타내는 불리언 값으로 바꿉니다.

     

  2. df['age'] = df['age'] == round(df['age'],0): 이전 단계에서 이미 'age' 컬럼을 불리언 값으로 바꾼 후에 이 조건을 적용하므로, 이 코드는 아무런 의미가 없습니다. 이미 'age' 컬럼은 True/False 값으로만 이루어져 있기 때문이에요.

답변 감사합니다.

곰곰이 생각해보니 이해가 되었습니다~