해결된 질문
작성
·
155
0
기출2회를 풀고 있는데요
주어진 데이터셋(members.csv)의 앞에서부터 순서대로 80% 데이터만 활용해 'f1'컬럼 결측치를 중앙값으로 채우기 전 후의 표준편차를 구하고, 두 표준편차 차이 계산하기 (단, 표본표준편차 기준, 두 표준편차 차이는 절대값으로 계산)
이 문제를 시험환경에서 풀면
len(df)*0.8 df = df.iloc[:80] df before = df['f1'].std() median1 = df['f1'].median() # 20.574853076621935 import numpy as np df['f1'] = df['f1'].fillna(median1) after = df['f1'].std() # 17.010788646613268
이게 한 창 안에서 한번에 코딩이 되면서
before과 after 둘다에 17.010 어쩌고가 들어가서
print(before-after) 을 하면 0이 되더라고요
실행은 한 코딩창 안에서 진행해야 하는데
그럼 숫자를 따로 저장해서 20.574 - 17.010 을 출력해야 하나요?
답변 2
1
median1을 덮어쓰면서 발생한 문제 같아요
네, 각 변수에 저장이 필요해요! 하나는 a, 하나는 b에 저장해서 계산하면됩니다.
더불어
중간값을 출력하는 습관은 매우 좋습니다.
시험에서는 정답만 찾으면 되기때문에 중간에 찾을 값을 계산해도 되나, 실수 방지를 위해 변수간의 계산을 추천합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
져니님의 문제 상황은 데이터 처리과정에서 ‘f1’ 컬럼의 결측치를 중앙값으로 채우기 전과 후의 표준편차 차이를 계산하는 것과 관련이 있습니다. 이와 유사한 질문이 이전에도 올라온 적이 있어 그 답변을 참조하시면 도움이 될 것 같습니다.
이전 질문 중 하나에서도, 데이터 셋의 일부만 사용하여 결측치를 처리한 후 통계값(표준편차, 중앙값 등)을 계산하는 과정이 있었습니다. 특히, 해당 과정의 실행 순서나 코드의 사용 방법에 따라 결과값이 달라질 수 있음을 알 수 있습니다.
져니님의 경우, before
와 after
를 계산하는 과정에서 동일한 창에서 코드를 실행할 때 이미 df['f1']
의 데이터가 중앙값으로 결측치가 채워진 뒤에 before
의 표준편차가 계산되기 때문에 동일한 값이 나왔을 가능성이 높습니다.
이와 유사한 상황과 해결 방법을 제시한 예제는 다음과 같습니다:
진행하신 방법처럼 숫자를 따로 저장하는 것도 하나의 방법이 될 수 있습니다. 중요한 것은 결측치를 채우기 전의 데이터 상태를 확실히 저장해두었다가, 그 상태에서 필요한 계산을 진행하는 것입니다. 따라서, 결측치를 채우기 전의 before
값과 결측치를 채운 후의 after
값을 각각 다른 변수에 저장한 후 계산을 진행하는 것이 정확한 접근 방법입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.