📝 26번
데이터셋(basic1.csv)의 앞에서 순서대로 70% 데이터만 활용해서, 'f1'컬럼 결측치를 중앙값으로 채우기 전후의 표준편차를 구하고 두 표준편차 차이 계산하시오.
💻 풀이
import pandas as pd
basic = pd.read_csv('data/basic1.csv')
basic = basic.iloc[:70]
basic.isnull().sum()
before_sd = basic['f1'].std()
f1_med = basic_70['f1'].median()
basic['f1'] = basic['f1'].fillna(f1_med)
after_sd = basic['f1'].std()
result = abs(before_sd - after_sd)
print(result)
3.2965018033960725
📝 27번
데이터셋(basic1.csv)의 'age'컬럼의 이상치를 더하시오. (단, 평균으로부터 '표준편차x1.5'를 벗어나는 영역을 이상치라고 판단함)
💻 풀이
import pandas as pd
basic = pd.read_csv('data/basic1.csv')
basic.head()
age_mean = basic['age'].mean()
age_sd = basic['age'].std()
outlier = basic[(age_mean - age_sd * 1.5 > basic['age']) | (basic['age'] > age_mean + age_sd * 1.5)]
result = outlier['age'].sum()
print(result)
473.5
📝 28번
자동차 데이터 셋에서 qsec 컬럼을 Min-Max Scale로 변환 후 0.5보다 큰 값을 가지는 레코드(row) 수를 구하시오.
💻 풀이
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
mtcars = pd.read_csv('data/mtcars.csv')
mtcars.head()
scaler = MinMaxScaler()
mtcars['qsec'] = scaler.fit_transform(mtcars[['qsec']])
result = sum(mtcars['qsec'] > 0.5)
print(result)
9
📝 29번
첫번째 데이터 부터 순서대로 50:50으로 데이터를 나누고,
앞에서 부터 50%의 데이터(이하, A그룹)는'f1'컬럼을 A그룹의 중앙값으로 채우고, 뒤에서부터 50% 데이터(이하, B그룹)는 'f1'컬럼을 B그룹의 최대값으로 채운 후, A그룹과 B그룹의 표준편차 합을 구하시오. (단, 소수점 첫째자리까지 구하시오 (둘째자리에서 반올림))
💻 풀이
import pandas as pd
basic = pd.read_csv('data/basic1.csv')
pd.set_option('mode.chained_assignment', None)
A = basic.iloc[:50]
B = basic.iloc[50:]
basic.isnull().sum()
A['f1'] = A['f1'].fillna(A['f1'].median())
B['f1'] = B['f1'].fillna(B['f1'].max())
A = A['f1'].std()
B = B['f1'].std()
result = round(A + B, 1)
print(result)
42.0
📝 30번
'f4'컬럼을 기준 내림차순 정렬과 'f5'컬럼기준 오름차순 정렬을 순서대로 다중 조건 정렬하고나서 앞에서부터 10개의 데이터 중 'f5'컬럼의 최소값 찾고, 이 최소값으로 앞에서 부터 10개의 'f5'컬럼 데이터를 변경함. 그리고 'f5'컬럼의 평균값을 계산하시오. 단 소수점 둘째자리까지 출력(셋째자리에서 반올림)
💻 풀이
import pandas as pd
basic = pd.read_csv('data/basic1.csv')
basic = basic.sort_values(['f4', 'f5'], ascending=[False, True]).reset_index(drop=True)
basic.iloc[:10, 7] = basic['f5'][:10].min()
result = round(basic['f5'].mean(), 2)
print(result)
53.63
📝 31번
'age' 컬럼의 IQR방식을 이용한 이상치 수와 표준편차x1.5 방식을 이용한 이상치 수 합을 구하시오.
💻 풀이
import pandas as pd
basic = pd.read_csv('data/basic1.csv')
Q1 = basic['age'].quantile(0.25)
Q3 = basic['age'].quantile(0.75)
IQR = Q3 - Q1
outlier1 = (Q1 - 1.5 * IQR > basic['age']) | (basic['age'] > Q3 + 1.5 * IQR)
result1 = sum(outlier) # 0
age_mean = basic['age'].mean()
age_sd = basic['age'].std()
outlier2 = (age_mean - age_sd * 1.5 > basic['age']) | (basic['age'] > age_mean + age_sd * 1.5)
result2 = sum(outlier2) # 14
result = result1 + result2
print(result)
14