본문 바로가기

Information/통계강의

2.1 분포 (예제 풀이)

반응형

예제에 사용되는 데이터 파일:

heart.csv
0.01MB

 

 

 

예제 풀이인 ipynb 파일:

2.1 분포.ipynb
0.13MB

 

 

 

 

예제 2.1

heart 데이터를 읽어낸 후, 수치형 데이터 칼럼 {'age', 'trestbps', 'chol', 'thalach', 'oldpeak'}에 대해서 분포 곡선을 그렸을 때, 평균 주변에서의 곡선 모양이 가장 뾰족한(평균 주변에 가장 데이터가 많은) 칼럼 이름을 적으시오.

 

df = pd.read_csv('heart.csv')
df

df1 = df[[ 'age', 'trestbps', 'chol', 'thalach', 'oldpeak']]
df1.kurtosis()


예제 2.2

heart 데이터를 읽어낸 후, 수치형 데이터 칼럼 {'age', 'trestbps', 'chol', 'thalach', 'oldpeak'}에 대해서 정규화를 해서 [0,1]까지의 데이터로 변환하고, 변환된 칼럼 중 (평균 - 중앙값)이 가장 큰 칼럼명을 적으시오. 변에 가장 데이터가 많은) 칼럼 이름을 적으시오.

 

df = pd.read_csv('heart.csv')
df1 = df[[ 'age', 'trestbps', 'chol', 'thalach', 'oldpeak']]
df1.skew()

# 문제에서 주어진 순서대로 정직하게 풀어도 된다.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(df1)
arr = scaler.transform(df1)
df2 = pd.DataFrame(arr, columns=df1.columns)
df2.skew()

답은 oldpeak

 

# 실제로 평균과 중앙값의 차이를 구해서 답을 구해도 된다.
def diff(s):
    return s.mean() - s.median()

dic = {}
for col in df2.columns:
    dic[col] = diff(df2[col])
dic

답은 oldpeak

 

참조로, 그래프를 그려서 실제 skewness를 확인해보자.

 

원래의 자료를 가지고 분포 곡선을 그려보면, 왜도를 파악하기 힘들다.

 

import seaborn as sns
sns.histplot(df1['oldpeak'], kde=True, color='red')
sns.histplot(df1['thalach'], kde=True, color='blue')

 

정규화를 한 데이터에 대해서 그려보면, 왜도의 차이를 알 수 있다.

import seaborn as sns
sns.histplot(df2['oldpeak'], kde=True, color='red')
sns.histplot(df2['thalach'], kde=True, color='blue')

-끝-

 

다음 글: 2.2 가설 검정

반응형

'Information > 통계강의' 카테고리의 다른 글

2.3 평균에 대한 검정  (0) 2021.02.17
2.2 가설 검정  (0) 2021.02.17
2.1 분포 (이론)  (0) 2021.02.14
2. 분포 및 가설검정  (0) 2021.02.14
1.3 데이터 스케일링 (예제 풀이)  (0) 2021.02.13