6번
주어진 데이터에서 상관관계를 구하고, quality와의 상관관계가 가장 큰 값과, 가장 작은 값을 구한 다음 더하시오. (단, quality와 quality 상관관계 제외, 소수점 둘째 자리까지 출력)
import pandas as pd
wine = pd.read_csv('data/winequality-red.csv')
wine.head()
wine_corr = wine.corr()['quality'].sort_values(ascending=True)[:-1]
max_corr = abs(wine_corr).max() # 0.476166
min_corr = abs(wine_corr).min() # 0.013732
result = round(max_corr + min_corr, 2)
print(result)
0.49
❗ 주의
상관계수는 상관관계의 정도를 나타내는 값이며 -1부터 1까지의 값이 존재한다.
-1에 가까울 수록 음의 상관관계가,
+1에 가까울 수록 양의 상관관계가,
0에 가까울 수록 아무런 상관관계가 없음을 의미한다.
상관관계는 음수가 존재하기 때문에 큰 값은 1에 가장 가까운 값이 되고, 작은 값은 0에 가장 가까운 값이 된다.
alcohol 0.476166
sulphates 0.251397
citric acid 0.226373
fixed acidity 0.124052
residual sugar 0.013732
free sulfur dioxide -0.050656
pH -0.057731
chlorides -0.128907
density -0.174919
total sulfur dioxide -0.185100
volatile acidity -0.390558
7번
city와 f4를 기준으로 f5의 평균값을 구한 다음, f5를 기준으로 상위 7개 값을 모두 더해 출력하시오 (소수점 둘째자리까지 출력)
import pandas as pd
basic = pd.read_csv('data/basic1.csv')
basic = basic.groupby(['city', 'f4'])['f5'].mean()
basic = pd.DataFrame(basic).sort_values('f5', ascending=False).head(7)
result = round(basic['f5'].sum(), 2)
print(result)
643.68
8번
주어진 데이터 셋에서 age컬럼 상위 20개의 데이터를 구한 다음 f1의 결측치를 중앙값으로 채운다. f4가 ISFJ와 f5가 20 이상인 f1의 평균값을 출력하시오.
import pandas as pd
basic = pd.read_csv('data/basic1.csv')
basic = basic.sort_values('age', ascending=False).head(20)
basic['f1'] = basic['f1'].fillna(basic['f1'].median())
result = basic[(basic['f4'] == 'ISFJ') & (basic['f5'] >= 20)]['f1'].mean()
print(result)
73.875
9번
주어진 데이터 셋에서 f2가 0값인 데이터를 age를 기준으로 오름차순 정렬하고, 앞에서 부터 20개의 데이터를 추출한 후 f1 결측치(최소값)를 채우기 전과 후의 분산 차이를 계산하시오 (소수점 둘째 자리까지)
import pandas as pd
basic = pd.read_csv('data/basic1.csv')
basic = basic[basic['f2'] == 0].sort_values('age', ascending=True).head(20)
before_var = basic['f1'].var()
basic['f1'] = basic['f1'].fillna(basic['f1'].min())
after_var = basic['f1'].var()
result = round(abs(before_var - after_var), 2)
print(result)
38.44
10번
2022년 5월 sales의 중앙값을 구하시오.
📌 str.contains
import pandas as pd
basic = pd.read_csv('data/basic2.csv')
basic = basic[basic['Date'].str.contains('2022-05-')]
result = basic['Sales'].median()
print(result)
📌 datetime
import pandas as pd
basic = pd.read_csv('data/basic2.csv')
basic['Date'] = pd.to_datetime(basic['Date'])
basic['year'] = basic['Date'].dt.year
basic['month'] = basic['Date'].dt.month
basic['day'] = basic['Date'].dt.day
result = basic[(basic['year'] == 2022) & (basic['month'] == 5)]['Sales'].median()
print(result)
1477685.0