해결된 질문
작성
·
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)
로 정렬하고 나서 중복을 제거하면, 제거되는 데이터의 순서가 변경될 수 있습니다.
중복 데이터 발생시 뒤에 나오는 데이터를 삭제는데 소팅된 이후에 삭제를 해서 달라진것이에요!
풀이의 문제는 없고 문제 수정이 필요하네요! 고민해보고 수정할게요 감사합니다.
답변 감사합니다!
정렬 후 중복제거한 순서는 선생님과 같은데 코드만 아래와 같이 달라요!
혹시 소팅할 때 작성한 코드로 인해서 값이 달라진 것일까요..?
df.sort_values('f1', ascending=False)