본문 바로가기

데이터 분석 학습

9장 데이터 분석 프로젝트 - 한국인의 삶을 파악하라! (8)

반응형

9-8 종교 유무에 따른 이혼율 - 종교가 있으면 이혼을 덜 할까?

분석 절차

1단계 변수 검토 및 전처리

  • 종교
  • 혼인 상태

2단계 변수 간 관계 분석

  • 종교 유무에 따른 이혼율 표 만들기
  • 그래프 만들기

종교 변수 검토 및 전처리하기

1. 변수 검토하기

2. 전처리

welfare['religion'].dtypes  # 변수 타입 출력

##출력: dtype('float64')
welfare['religion'].value_counts()  # 빈도 구하기

"""
2.0    7815
1.0    6603
Name: religion, dtype: int64
"""
# 종교 유무 이름 부여
welfare['religion'] = np.where(welfare['religion'] == 1, 'yes', 'no')

# 빈도 구하기
welfare['religion'].value_counts()

"""
no     7815
yes    6603
Name: religion, dtype: int64
"""
# 막대 그래프 만들기
sns.countplot(data = welfare, x = 'religion')

혼인 상태 변수 검토 및 전처리하기

1. 변수 검토하기

2. 파생변수 만들기 - 이혼 여부

welfare['marriage_type'].dtypes  # 변수 타입 출력

##출력: dtype('float64')
welfare['marriage_type'].value_counts()  # 빈도 구하기

"""
1.0    7190
5.0    2357
0.0    2121
2.0    1954
3.0     689
4.0      78
6.0      29
Name: marriage_type, dtype: int64
"""
# 이혼 여부 변수 만들기
welfare['marriage'] = np.where(welfare['marriage_type'] == 1, 'marriage',
                      np.where(welfare['marriage_type'] == 3, 'divorce', 'etc'))
                      
## 이혼 여부별 빈도
# marriage별 분리
# marriage별 빈도 구하기
n_divorce = welfare.groupby('marriage', as_index = False) \
                   .agg(n = ('marriage', 'count'))
n_divorce

# 막대 그래프 만들기
sns.barplot(data = n_divorce, x = 'marriage', y = 'n')

종교 유무에 따른 이혼율 분석하기

1. 종교 유무에 따른 이혼율표 만들기

2. 그래프 만들기

# etc 제외
# religion별 분리
# marriage 추출
# 비율 구하기
rel_div = welfare.query('marriage != "etc"') \
                 .groupby('religion', as_index = False) \
                 ['marriage'] \
                 .value_counts(normalize = True)
rel_div

# divorce 추출
# 백분율로 바꾸기
# 반올림
rel_div = rel_div.query('marriage == "divorce"') \
                 .assign(proportion = rel_div['proportion'] * 100) \
                 .round(1)
rel_div

# 막대 그래프 만들기
sns.barplot(data = rel_div, x = 'religion', y = 'proportion')

연령대 및 종교 유무에 따른 이혼율 분석하기

1. 연령대별 이혼율표 만들기

2. 연령대별 이혼율 그래프 만들기

3. 연령대 및 종교 유무에 따른 이혼율표 만들기

4. 연령대 및 종교 유무에 따른 이혼율 그래프 만들기

# etc 제외
# ageg별 분리
# marriage 추출
# 비율 구하기
age_div = welfare.query('marriage != "etc"') \
                 .groupby('ageg', as_index = False) \
                 ['marriage'] \
                 .value_counts(normalize = True)
age_div

## 연령대 및 이혼 여부별 빈도

# etc 제외
# ageg별 분리
# marriage 추출
# 빈도 구하기
welfare.query('marriage != "etc"') \
       .groupby('ageg', as_index = False) \
       ['marriage'] \
       .value_counts()

# 초년층 제외, 이혼 추출
# 백분율로 바꾸기
# 반올림
age_div = age_div.query('ageg != "young" & marriage == "divorce"') \
                 .assign(proportion = age_div['proportion'] * 100) \
                 .round(1)
age_div

# 막대 그래프 만들기
sns.barplot(data = age_div, x = 'ageg', y = 'proportion')

# etc 제외, 초년층 제외
# ageg, religion별 분리
# marriage 추출
# 비율 구하기
age_rel_div = welfare.query('marriage != "etc" & ageg != "young"') \
                     .groupby(['ageg', 'religion'], as_index = False) \
                     ['marriage'] \
                     .value_counts(normalize = True)
           
age_rel_div

# divorce 추출
# 백분율로 바꾸기
# 반올림
age_rel_div = age_rel_div.query('marriage == "divorce"') \
                         .assign(proportion = age_rel_div['proportion'] * 100) \
                         .round(1)
                         
age_rel_div

# 막대 그래프 만들기
sns.barplot(data = age_rel_div, x = 'ageg', y = 'proportion', hue = 'religion')

 

 

 

 

 

※ 해당 내용은 <Do it! 파이썬 데이터 분석>의 내용을 토대로 학습하며 정리한 내용입니다.

반응형