[Python] 빅데이터분석기사 - 유형1 ②

순동·2022년 2월 3일
0

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

0개의 댓글