다음은 10개의 설명 중 틀린 것을 모두 고르고 옳은 말이 되도록 고치시오.
틀린 선지: 6, 7
중복된 데이터값을 삭제하는 함수는 df.drop_duplicated() 이다. (O)
특정 column에서의 None값을 바꾸기 위해 .fillna(0) 함수를 사용하면, 해당 None값은 0으로 나타난다. (O)
값을 drop하거나 변경해야 하는 코드 작성 시에, inplace = True 옵션은 기존 데이터의 손실이 생길 위험이 있다. (O)
apply 메서드는 DataFrame에서 행 또는 열 또는 전체의 셀(=원소)에 원하는 연산을 지원하는 메서드이다. (O)
unique()함수는 중복 없이, 해당 컬럼의 모든 값들을 확인할 수 있다. (O)

<6,7번 문제>의 데이터프레임 df
(첨부 데이터 참조) groupby() 함수를 활용하여 major 기준으로 그룹화된 데이터를, size()함수를 활용하여 출력하면, 해당 major 그룹 당 갯수가 오름차순으로 출력이 된다. (X) → 인덱스 순서에 맞춰 출력된다.
(첨부 데이터 참조) print(df.major.value_counts()) 를 활용하면 major 칼럼에 있는 값 중에 각 유니크한 값 별로 몇 개의 데이터가 속하는 지를 출력할 수 있고, 그것의 순서는 데이터 갯수의 오름차순이 된다. (X) → 내림차순이다.
데이터 프레임을 합칠 수 있는 함수에는 concat, append 등이 있다. (O)
데이터 프레임을 합치는 함수를 사용할 때, axis=0 옵션은 기본값이다. (O)
데이터 프레임을 합치는 함수를 사용할 때, ignore_index=True 옵션을 사용하면 index값이 순차적으로 나온다. (O)
🔽풀이
import pandas as pd
import numpy as np
exam = pd.read_csv('./data/exam.csv')
# 과학 과목에 대한 평균을 구하세요.
science_mean_first = exam.science.mean()
# 인덱스 값이 3, 7, 12인 행의 과학 점수만 NaN 값으로 대체하세요.
exam.loc[[3, 7, 12], 'science'] = np.nan
# NaN에 해당되는 값을 0으로 대체하고, 과학 과목의 평균을 구하세요.
exam.fillna(0, inplace = True)
science_mean_second = exam.science.mean()
# 다시 인덱스 값이 3, 7, 12인 행의 과학 점수만 NaN 값으로 대체하세요.
# (밑줄 부분의 코드를 완성하세요)
exam.loc[[3, 7, 12], 'science'] = np.nan
# nan 값이 삽입되기 전 상태에서 구한 과학 점수의 평균을
# 소수점 1의 자리에서 반올림한 수치를 구하고
# 해당 수치로 NaN 값을 대체하세요.
exam['science'] = exam.science.fillna(round(science_mean_first, 0))
# 다시 과학 과목의 평균을 구하세요.
science_mean_third = exam.science.mean()
print(science_mean_first) # 원래의 점수
print(science_mean_second) # 3, 7, 12 행의 과학 점수 0
print(science_mean_third) # 3, 7, 12 행의 과학 점수 평균
# NaN 값을 0으로 대체하는 것보다 평균값으로 대체하는 것이 원래의 값과의 오차가 적어진다.