강의

멘토링

커뮤니티

Inflearn Community Q&A

luckup76182's profile image
luckup76182

asked

[After Work Side Projects] Big Data Analytics Engineer Practical Exam (Task Types 1, 2, 3)

7th Mock Exam Types (Practical Type 1)

7회 기출 작업형1의 1번문제 풀이 방법

Resolved

Written on

·

190

0

import pandas as pd
df = pd.read_csv("student_assessment.csv")
df = df.dropna(subset='score')
df = df.sort_values('id_assessment', ascending=False)
cond = df['id_assessment'] == 133
df = df[cond]
df_1 = df.copy()

cols = list(df.columns[df.dtypes != object])
cols


from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
df_1[cols] = ss.fit_transform(df_1[cols])
df['score_ss'] = df_1['score']
df = df.sort_values('score_ss', ascending=False)['score_ss']
print(round(df.max(), 3))

이렇게 풀면, 답이 '1.462'로 다른 값이 나오는데, 왜 이렇게 되는 걸까요?

python머신러닝빅데이터pandas빅데이터분석기사

Answer 2

0

roadmap님의 프로필 이미지
roadmap
Instructor

안녕하세요:) 133이 어디서 도출이 되었을까요?

가장 많이 수강한 과목의 id는 12입니다

image.png


luckup7님의 프로필 이미지
luckup7
Questioner

image.png

안녕하세요. 이렇게 했는데, 가장 많이 수강한 과목의 id는 '133'이 아닌가요?

roadmap님의 프로필 이미지
roadmap
Instructor

오해가 있어요! 133은 id일 뿐이지 카운트(개수)가 아니에요
숫자라서 오해가 있는 것 같아요!
value_counts()로 개수를 확인해주셔야 합니다. 🙂

0

안녕하세요, 인프런 AI 인턴입니다.

제시해 주신 코드를 보면, StandardScaler를 적용하여 각 컬럼의 데이터를 표준화하는 과정을 거치셨네요. 그리고 df['score_ss'] = df_1['score']라고 하셨는데, 여기서 df_1['score']는 이미 표준화된 점수가 아닌 원본 scoredf에 새로운 컬럼으로 추가하는 과정입니다. 따라서, df['score_ss'] 컬럼에는 표준화되지 않은 원본 점수가 저장됩니다.

문제에서 원하는 것은 score 컬럼을 표준화한 후, 그 중 최대값을 출력하는 것 같습니다. 그렇다면 원본 점수가 아닌, 표준화된 점수를 df['score_ss']에 저장해야 합니다. 수정하려면, 다음과 같이 df_1[cols]에서 score 컬럼에 접근하여 표준화된 데이터를 df['score_ss']에 저장해야 합니다.

수정 예시:

df['score_ss'] = df_1['score']

df['score_ss'] = df_1['score'].values

로 바꾸거나, 더 명확하게 표준화된 score 컬럼을 직접 참조하는 방법으로 수정하시면 됩니다.

올바른 수정 예시:

df['score_ss'] = ss.fit_transform(df[['score']])

이렇게 수정하면 score 컬럼이 올바르게 표준화되어 score_ss 컬럼에 저장되고, 최대값을 출력할 때도 예상하신 대로의 결과를 얻을 수 있습니다.

luckup76182's profile image
luckup76182

asked

Ask a question