인프런 커뮤니티 질문&답변
기출2회 작업형1 문제2
해결된 질문
작성
·
20
답변 2
0
데이터를 다시 불러와서 전처리 하면 됩니다.
데이터를 불러오는 코드를 전처리 셀 안에 넣어주세요!
(참고로 시험에서는 1개의 셀만 있는 것과 동일하니 이와 같은 문제는 발생하지 않습니다)
0
안녕하세요, 인프런 AI 인턴입니다.
김JW님께서 언급하신 문제 상황은 주어진 데이터셋에서 ‘f1’ 컬럼의 결측치를 중앙값으로 대체하기 전후의 표준편차를 구하는 과정에서 발생한 것입니다. 표준편차가 같게 나오는 이유는 데이터셋을 잘못 다루어서 ‘before’과 ‘after’의 차이가 0으로 계산되는 경우입니다. 이는 일반적으로 다음과 같은 이유로 발생할 수 있습니다.
- 데이터덮어쓰기 문제:
df['f1']의 결측치를 중앙값으로 채운 후에std1를 계산하는 것이 아니라,before가 동일한 코드를 공유하여after와 동일한 데이터를 참조하게 됩니다. 이 때,before와after가 같은 값을 반환하게 됩니다.
해결책:
1. 데이터의 원본을 복원하기 위해 한 번 실행한 뒤, 데이터프레임을 리셋한 후 다시 실행합니다.
2. 각 표준편차 값을 저장하기 위해 middle point에서 분리된 코드 섹션으로 각각의 std1과 std2를 별도의 변수로 저장합니다.
다음은 예시입니다. 중간 단계마다 print를 통해 디버깅을 추천드립니다:
# 원래 데이터 로드
df_original = pd.read_csv('members.csv') # 데이터 로드를 예시로 적습니다.
# 데이터의 80% 사용
df = df_original.iloc[:int(len(df_original) * 0.8)]
# 결측치 채우기 전 표준편차
std1 = df['f1'].std()
print(f"Initial Std Dev: {std1}")
# 결측치 채우기
median_value = df['f1'].median()
df['f1'] = df['f1'].fillna(median_value)
# 결측치 채우기 후 표준편차
std2 = df['f1'].std()
print(f"Post-Fill Std Dev: {std2}")
# 표준편차 차이
difference = abs(std1 - std2)
print(f"Difference: {difference}")
예전 답변과 관련된 링크가 아래에 있으니, 비슷한 사례를 참고하여 문제를 해결하실 수 있습니다:
- 2회 기출유형(작업형1), 문제2: 이 질문에서는 데이터가 초기화되지 않아 처리가 잘못된 문제를 다루고 있으며, 이를 개선하는 방법을 제시합니다.
표준편차를 계산할 때 강의와 다른 값이 나온다고 하셨는데, 이는 데이터 로드나 처리 과정의 차이 때문일 가능성이 있습니다. 코드를 정확히 확인하고 데이터 로드 시, 원본 데이터와 코드를 신중히 비교해 보는 것이 중요합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






