범주형 두개의 데이터를 분석하는 방법을 알아보는 방법을 알아보자~
예를들어, 성별에따른 퇴사 여부 , 혈액형별 mbti i형인지 e 형인지 등...
첫번째 교차표로 집계하기
교차표 시각화 코드
#첫번째가 행, 두번째가 열
pd.crosstab(data[target], data[feature])
#normalize = columns 로 하면 컬럼별 퍼센트를 구해준다
pd.crosstab(data[target], data[feature], normalize = 'columns')
이런식으로 출력된다.
교차표로 부터 모자이크 플롯으로 시각화 하기
모자이크 플롯은 범주별로 양과 비율을 나타낸다.
mosaic(titanic, [ 'Pclass','Survived'])
plt.axhline(1- titanic['Survived'].mean(),
color = 'r')
plt.show()
이런식으로 표현된다.
해석방법은 빨간선은 전체 평균을 나타내고, x축은 Pclass의 비율을 나타내고
y축은 Survived 비율을 나타낸다.
코드에서
평균을 나타내는 선인 빨간 선을표시하기 위해 1- titanic['Survived'].mean() 이 부분에 1을 빼는 이유는
1이 생존, 0 이 사망을 나타내는 데이터에서 생존에 대한 평균을 구했는데, 모자이크 플롯 y 축을 보면 사망인 0 이 밑에 있다. 그래서 사망률을 기준으로 표시해야하기 때문에 전체 (1) 에서 뺀 것이다.
카이제곱검정으로 수치화 하기
# 1) 먼저 교차표 집계
table = pd.crosstab(titanic['Survived’],
titanic['Pclass'])
print(table)
print('-' * 50)
# 2) 카이제곱검정
spst.chi2_contingency(table)