이번 포스팅에서도 타이타닉 데이터로 진행
#타이타닉 데이터 불러오기!
titanic = sns.load_dataset(('titanic'))
titanic.head()
범주 → 범주
1) 교차표( pd.crosstab() )
# 두 범주별 빈도수를 교차표 생성
pd.crosstab(titanic['survived'], titanic['sex'])
- normalize : 비율로 변환
pd.crosstab(titanic['survived'], titanic['embarked'], normalize = 'all')
2) 시각화
# 모자익플롯 라이브러리
from statsmodels.graphics.mosaicplot import mosaic
# 모자익 플롯 그리기
mosaic(titanic,['embarked','survived'])
# 생존평균선
plt.axhline(1-titanic['survived'].mean(), color='r', linestyle='--')
plt.show()
=> 탑승한 비율은 S > C > Q이고, 하얀선이 구분선으로 생존자와 사망자의 비율을 면적으로 나타낸다.
=> 생존평균선과 가까운 embarked는 Q와 S이다. embarked C는 평균과 멀리 떨어져 있다.
=>:C에서 탑승한 생존자 비율이 가장 크다.
3) 카이제곱검정
import scipy.stats as spst
# 1) 교차표 생성
table = pd.crosstab(titanic['survived'], titanic['embarked'])
print(table)
print()
print('*'*40)
# 2) 카이제곱검정
spst.chi2_contingency(table)
=> chi2_contingency(교차표)를 사용하여 카이제곱검정통계량, p-value, 자유도, 기대빈도 순서로 출력함
=> p-value는 1.77e-06으로 0.05보다 작기 때문에 유의하다. 즉. survived와 embarked는 상관이 있다고 할 수 있다.
=> 이외에도 카이제곱검정통계량으로 확인할 수 있다. 카이제곱검정통계표를 확인하면 정확하지만, 확인할 수 없을 경우 카이제곱검정통계량이 자유도의 2~3배보다 크면 상관이 있다고 할 수 있다.
==> emakred에 따라 생존은 차이가 난다.
숫자 → 범주
1) 시각화 ( kdeplot() )
# common_norm = True 면 두 그래프 면적합이 1
# common_norm = False 면 두 그래프 각 면적이 1
sns.kdeplot(x='age', data = titanic, hue ='survived', common_norm=False)
plt.show()
=> 각 그래프 면적의 합은 1임.
=> 사망자 중 20~30대에 빈도가 몰려있고, 생존자는 30~40대에 몰려있다고 보여짐
- 하나의 그래프로 보여주기
# multiple = 'fill'
sns.kdeplot(x='age', data = titanic, hue ='survived', multiple = 'fill')
plt.axhline(titanic['survived'].mean(), color = 'r')
plt.show()
=> 연령대별 생존자 비율을 확인할 수 있음.
=> 빨간선은 생존자 평균(비율)
=> 어린이와 80대 이상 노인은 생존 비율이 높음.
'Python 파이썬' 카테고리의 다른 글
파이썬 오픈 API 활용(파파고 번역) (0) | 2023.04.01 |
---|---|
파이썬 웹크롤링(1) - 정적페이지 (0) | 2023.03.27 |
파이썬 이변량 분석(2) - (범주형->숫자형) (0) | 2023.03.14 |
파이썬 이변량 분석(1) - (숫자형->숫자형) (0) | 2023.03.10 |
파이썬 단변량 분석(EDA) (0) | 2023.03.07 |