본문 바로가기

데이터 분석 학습

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

반응형

9-9 지역별 연령대 비율 - 어느 지역에 노년층이 많을까?

1단계 변수 검토 및 전처리

  • 지역
  • 연령대

2단계 변수 간 관계 분석

  • 지역별 연령대 비율표 만들기
  • 그래프 만들기

지역 변수 검토 및 전처리하기

1. 변수 검토하기

2. 전처리하기

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

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

"""
2.0    3246
7.0    2466
3.0    2448
1.0    2002
4.0    1728
5.0    1391
6.0    1137
Name: code_region, dtype: int64
"""
# 지역 코드 목록 만들기
list_region = pd.DataFrame({'code_region' : [1, 2, 3, 4, 5, 6, 7],
                            'region'      : ['서울',
                                             '수도권(인천/경기)',
                                             '부산/경남/울산',
                                             '대구/경북',
                                             '대전/충남',
                                             '강원/충북',
                                             '광주/전남/전북/제주도']})
list_region

# 지역명 변수 추가
welfare = welfare.merge(list_region, how = 'left', on = 'code_region')
welfare[['code_region', 'region']].head()

지역별 연령대 비율 분석하기

1. 지역별 연령대 비율 분석하기

2. 그래프 만들기

3. 누적 비율 막대 그래프 만들기

  • 피벗하기
  • 그래프 만들기
  • 막대 정렬하기
# region별 분리
# ageg 추출
# 비율 구하기
region_ageg = welfare.groupby('region', as_index = False) \
                     ['ageg'] \
                     .value_counts(normalize = True)
region_ageg

# 백분율로 바꾸기
# 반올림
region_ageg = region_ageg.assign(proportion = region_ageg['proportion'] * 100) \
                         .round(1)
region_ageg

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

# 피벗
pivot_df = region_ageg[['region', 'ageg', 'proportion']].pivot(index   = 'region',
                                                               columns = 'ageg',
                                                               values  = 'proportion')
pivot_df

# 가로 막대 그래프 만들기
pivot_df.plot.barh(stacked = True)

# 노년층 비율 기준 정렬, 변수 순서 바꾸기
reorder_df = pivot_df.sort_values('old')[['young', 'middle', 'old']]
reorder_df

# 누적 가로 막대 그래프 만들기
reorder_df.plot.barh(stacked = True)

 

 

 

 

 

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

반응형