해결된 질문
작성
·
235
·
수정됨
0
안녕하세요.
캐글 T1-23 풀이 중 궁금한 것이 있어 질문드립니다.
저는 아래와 같이 풀이하였는데 정답은 2.5가 나오더라구요ㅠㅠ
import pandas as pd
df = pd.read_csv("/kaggle/input/bigdatacertificationkr/basic1.csv")
# f1 결측치 채우기
# print(df['f1'].isnull().sum()) # 31개
df = df.sort_values('f1', ascending=False)
# print(df.iloc[9][3]) # 88.0
df['f1'] = df['f1'].fillna(df.iloc[9][3])
# print(df['f1'].isnull().sum()) # 0개
# age 중복 제거 전 f1 중앙값
med1 = df['f1'].median() # 77.5
# age 중복 제거
# print(df.shape) # 100개
df = df.drop_duplicates(subset=['age'])
# print(df.shape) # 71개됨.
# age 중복 제거 후 f1 중앙값
med2 = df['f1'].median() # 75.0
# 절대값으로
print(abs(med1-med2))
왜 답이 0.5가 나오지 않는지 해결되지 않아 문의드립니다. ㅠㅠ
답변 1
1
아래 코드로 인해 중복 제거가 다르게 진행되었어요
df = df.sort_values('f1', ascending=False)
작성한 코드는 정렬 후에 drop_duplicates
을 적용하면서
처음 발견된 데이터를 유지하고 나머지 중복을 제거하는 동작에서 다른 값이 제거 되었어요
문제에서 이 부분에 대한 오해의 소지가 있네요!
알려주셔서 감사합니다.
정렬이란 말은 빼고 결측치는 f1의 데이터 중 10번째로 큰 값으로 채움 으로 변경하겠습니다.