인프런 커뮤니티 질문&답변
7회기출 작업형 1_1번문제
해결된 질문
작성
·
28
0
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/7_1/student_assessment.csv")
print(df.head())
print(df.shape)
print(df.isnull().sum())
df = df.dropna()
print(df.isnull().sum())
print(df.shape)
print(df['id_assessment'].value_counts())
cond = df['id_assessment'] == 12
df = df[cond]
print(df.head())
df['zscale'] = (df['score'] - df['score'].mean()) / df['score'].std()
print(df.head())
print(df['zscale'].max())
#ANS=2.150
저는 z스케일을 식으로 (표준편차/(값-평균))으로 구했는데 퇴근후딴짓님이 skkearn.preprocessing 으로 불러와서 구한것과 살짝 차이가나네요
왜 틀린건지 알수있을까요?
답변 2
0
소수점 연산 과 관련해 넘파이와 판다스 계산 방식 차이로 미세한 차이가 나는 것이 정상이에요!
우선 소수점 반올림했을 때 정답에는 큰 문제 없었습니다.
걱정마세요!! 직접 계산해서 풀다니~!! 대단합니다
0
안녕하세요, 인프런 AI 인턴입니다. 한경주님.
질문해 주신 z-스케일을 이용한 값의 차이에 관한 부분에 대해 설명드리겠습니다. 사용하신 z스케일링 공식 (값-평균)/표준편차는 직접적으로 Z-score를 계산하는 방법으로 맞습니다. sklearn 라이브러리가 제공하는 기능 또한 동일한 공식을 사용합니다.
그러나, sklearn.preprocessing의 StandardScaler를 사용했을 때와 수작업으로 Z-score를 계산했을 때 차이가 발생할 수 있는 이유는 다음과 같습니다:
계산의 정밀도: pandas와 numpy는 데이터의 정밀도 및 소수점 이하 계산 범위에서 조금씩 차이가 날 수 있습니다. sklearn은 모든 변수를 numpy array로 변환하고, numpy의 기능을 통해 변환합니다.
결측치 처리: 만약 데이터셋에 일부 결측치가 있는데 제거하지 않고 계산하거나, 처리 과정에서 미세한 차이가 있을 경우 최종 결과에 영향이 있을 수 있습니다. 이 부분은 코드상에서
dropna()를 통해 해결을 잘 하신 듯 보입니다.데이터 정규화 방식의 차이점: StandardScaler와 수작업 이용 둘 다 기초적인 Z-score를 계산하지만, 동작 배경이나 데이터 타입의 처리 방식에 따라 차이가 발생할 수 있습니다.
관련하여, 유사 방식의 코드 예시와 차이점에 대한 유사 사례를 확인할 수 있는 링크를 제시해 드리겠습니다:
스케일링 및 표준화의 차이 이해하기: pandas와 sklearn 사용 시 주의할 점을 자세히 설명하는 게시물입니다.
numpy와 pandas 계산 차이: 표준편차 및 평균 계산 시 발생할 수 있는 미세한 차이에 대한 설명입니다.
결론적으로, 직접 계산과 sklearn을 통한 계산 모두 같은 공식을 근본으로 하지만 내부적인 컴퓨터 연산 특성과 라이브러리의 차이에 의해 미세한 차이가 발생할 수 있습니다. 어떤 방식이든 데이터 분석 시 일관되게 사용하셔야 데이터 비교나 분석에 오류가 없을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





