강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

한경주님의 프로필 이미지
한경주

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

7회 기출유형(작업형1)

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를 계산했을 때 차이가 발생할 수 있는 이유는 다음과 같습니다:

  1. 계산의 정밀도: pandas와 numpy는 데이터의 정밀도 및 소수점 이하 계산 범위에서 조금씩 차이가 날 수 있습니다. sklearn은 모든 변수를 numpy array로 변환하고, numpy의 기능을 통해 변환합니다.

  2. 결측치 처리: 만약 데이터셋에 일부 결측치가 있는데 제거하지 않고 계산하거나, 처리 과정에서 미세한 차이가 있을 경우 최종 결과에 영향이 있을 수 있습니다. 이 부분은 코드상에서 dropna()를 통해 해결을 잘 하신 듯 보입니다.

  3. 데이터 정규화 방식의 차이점: StandardScaler와 수작업 이용 둘 다 기초적인 Z-score를 계산하지만, 동작 배경이나 데이터 타입의 처리 방식에 따라 차이가 발생할 수 있습니다.

관련하여, 유사 방식의 코드 예시와 차이점에 대한 유사 사례를 확인할 수 있는 링크를 제시해 드리겠습니다:

결론적으로, 직접 계산과 sklearn을 통한 계산 모두 같은 공식을 근본으로 하지만 내부적인 컴퓨터 연산 특성과 라이브러리의 차이에 의해 미세한 차이가 발생할 수 있습니다. 어떤 방식이든 데이터 분석 시 일관되게 사용하셔야 데이터 비교나 분석에 오류가 없을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

한경주님의 프로필 이미지
한경주

작성한 질문수

질문하기