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

naegahaenaeem님의 프로필 이미지
naegahaenaeem

작성한 질문수

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

캐글 T1-23 추가질문

해결된 질문

작성

·

85

·

수정됨

0

캐글에 올려주신 자료 중 T1-23 문제를 다시 풀어보고 있는데 선생님 답과 다른 답이 나와서 질문 드립니다.

선생님 풀이와 다른 부분은 10번째 값을 찾는 부분만 다른 코드로 했는데요

10번째 값은 88으로 같은데 중복값 제거 후 f1 중앙값이 75로 선생님 풀이의 값 77과는 다르게 나옵니다.

이유가 뭔지 알 수 있을까요?

 

# f1 결측치를 f1을 내림차순으로 소팅했을 때 10번째 인덱스에 위치한 값으로 채움
df=df.sort_values('f1', ascending=False)
df=df.reset_index()
# print(df.head(10))
a=df.loc[9,'f1']
print(a)
# print(df.isnull().sum())
df['f1']=df['f1'].fillna(a)
# print(df.isnull().sum())
# age컬럼의 중복 제거 전 f1중앙값
m1=df['f1'].median()
print(m1)
# age컬럼의 중복 제거 후 f1중앙값
print(df.shape)
df=df.drop_duplicates(subset=['age'])
print(df.shape)
m2=df['f1'].median()
print(m2)
print(abs(m1-m2))

답변 1

1

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

df.sort_values('f1', ascending=False)로 정렬하고 나서 중복을 제거하면, 제거되는 데이터의 순서가 변경될 수 있습니다.
중복 데이터 발생시 뒤에 나오는 데이터를 삭제는데 소팅된 이후에 삭제를 해서 달라진것이에요!

풀이의 문제는 없고 문제 수정이 필요하네요! 고민해보고 수정할게요 감사합니다.

naegahaenaeem님의 프로필 이미지
naegahaenaeem
질문자

답변 감사합니다!

정렬 후 중복제거한 순서는 선생님과 같은데 코드만 아래와 같이 달라요!

혹시 소팅할 때 작성한 코드로 인해서 값이 달라진 것일까요..?

df.sort_values('f1', ascending=False)

 

# f1데이터에서 10번째 큰 값으로 결측치를 채움
top10 = df['f1'].sort_values(ascending=False).iloc[9]
print(top10)
df['f1'] = df['f1'].fillna(top10)
퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

네 맞습니다.

naegahaenaeem님의 프로필 이미지
naegahaenaeem
질문자

감사합니다! 선생님께서 쓰신 방식대로 고쳐서 써야겠네요!

naegahaenaeem님의 프로필 이미지
naegahaenaeem

작성한 질문수

질문하기