해결된 질문
작성
·
171
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
df['age'] = df['age'] > 0
: 'age' 컬럼 자체를 나이가 0보다 큰지의 여부를 나타내는 불리언 값으로 바꿉니다.
df['age'] = df['age'] == round(df['age'],0)
: 이전 단계에서 이미 'age' 컬럼을 불리언 값으로 바꾼 후에 이 조건을 적용하므로, 이 코드는 아무런 의미가 없습니다. 이미 'age' 컬럼은 True/False 값으로만 이루어져 있기 때문이에요.
답변 감사합니다.
곰곰이 생각해보니 이해가 되었습니다~