본문 바로가기

DB엔지니어가 공부하는 python

제주도에 정말 여자가 많을까? 2편, 파이썬 인구 데이터 분석

제주도에 정말 여자가 많을까? 2편, 파이썬 인구 데이터 분석

 

안녕하세요.

 

지난번에 제주도에 정말 여자가 많을까?라는 궁금증에서 출발한 데이터 분석을 해봤었습니다.

 

1편에서는 단순하게 제주도의 여성 인구가 제주도 남성 인구와 비교해서 많은지는 확인은 해봤었습니다.

 

하지만, 그건 <제주도에는 여자가 많을까?> 라는 궁금증을 해소 하기에는 조금  부족하지 않았나 하는 생각이 들어서 이번엔 우리나라 전국 데이터와 제주도 데이터를 비교하는 분석을 해보았습니다.

 

데이터 분석 개요는 아래와 같습니다.

 

  1. 1세 ~ 100세 이상 구간으로 1세 단위로 나뉘어 있는 전국 및 제주도 남녀 인구 데이터를 가지고 옵니다.

  2. 각 나이별 데이터에서 "여자/남자*100" 수식을 적용해서 남성 대비 여성 인구 비율을 구하여 새로운 칼럼을 생성합니다.

  3. 위 수식이 적용된 칼럼을 전국, 제주도 각각 생성합니다.

  4. 각각 비율을 꺾은선그래프로 나타 내어 시각화합니다.

 

<여자가 많다> 하는 건 그저 여자 볼륨이 많다는 의미는 아니라고 생각합니다. 해당 지역 즉, 제주도에는 남자 대비 여자가 많다는 뜻으로 이해가 되므로, 위와 같이 데이터를 분석해보았습니다.

 

그럼 바로 시작해보겠습니다!

 

1. 라이브러리 import

우선 필요한 라이브러리를 가지고 옵니다.

import pandas as pd
import matplotlib.pyplot as plt 
%matplotlib inline 
import seaborn as sns 
sns.set()

 

2. 한글 글꼴 설정

그래프 내에서 한글이 깨지지 않게끔 한글 글꼴을 나눔 고딕으로 설정해줍니다.

plt.rc('font', family='NanumGothic')
print(plt.rcParams['font.family'])

 

3. 인구 데이터 csv 파일 가져오기

전국, 제주도 인구 데이터가 들어가 있는 csv 파일을 가지고 옵니다.

jeju_pop = pd.read_csv('C:/Users/whiki/pop_total_jeju.csv', encoding='euc-kr') 
jeju_pop

데이터를 확인해 봅니다.

전국 및 제주도 인구 데이터 csv

#필요하신분은 데이터를 다운로드 해 가시기 바랍니다.

pop_total_jeju.csv
0.00MB

4. 전국 여자 인구 데이터 그래프 그리기

우선, 전국 여자 인구에 대한 데이터를 이용해서 일반 막대그래프를 그려 봅니다.

plt.figure(figsize=(20,8))  #size 조절
plt.xticks(rotation = 50)  #x축 조절

sns.barplot(
data = jeju_pop.sort_values(by='나이구분', ascending=False),
x = "나이구분",
y = "전국_여자"
)
plt.show()

그래프가 잘 그려지네요!!

나이별 전국 여자 인구

 

5. 제주도 여자 인구 데이터 그래프 그리기

제주도 여자에 대한 인구 그래프도 그려 봅니다.

plt.figure(figsize=(20,8))  #size 조절
plt.xticks(rotation = 50)  #x축 조절

sns.barplot(
data = jeju_pop.sort_values(by='나이구분', ascending=False),
x = "나이구분",
y = "제주도_여자"
)
plt.show()

그래프가 잘 나왔습니다!!

나이별 제주도 여자 인구

그냥 눈으로만 두 그래프를 보았을 때 수치는 물론 차이가 많이 나지만 그래프의 형태가 어떤가요? 제가 볼 땐 몇몇 군데 높고 낮음의 차이가 약간 있지만 전체적으로 비슷해 보입니다.

 

이렇게 봐서는 잘 모르겠으니, 전국 인구와 제주도 인구 남, 녀 인구 데이터를 이용해서 남성 대비 여성 인구 비율을 구해서 데이터 프레임에 칼럼을 추가 하도록 하겠습니다.

 

6. 남성 대비 여성 인구 비율 구하여 컬럼 추가 하기

전국, 제주도 남녀 인구 데이터를 이용해서 "여성인구/남성 인구*100"을 하여 각각 남성 대비 여성 인구 비율을 구하여

데이터 프레임에 칼럼을 추가 해 보겠습니다.

jeju_pop['전국_여자_비율']=jeju_pop['전국_여자']/jeju_pop['전국_남자']*100
jeju_pop['제주도_여자_비율']=jeju_pop['제주도_여자']/jeju_pop['제주도_남자']*100
jeju_pop

데이터를 확인해 보겠습니다.

남성 대비 여성 성비가 구해져서 컬럼 추가되어 있는 것을 확인했습니다.

 

7. 전국, 제주도 남성 대비 여성 성비 데이터를 이용해서 꺾은선그래프로 시각화 하기

위에서 추가한 두 칼럼을 이용해서 눈으로 잘 비교가 되게끔 한 그래프에 꺾은선을 전국 여성 성비, 제주도 여성 성비 각각 하나씩 그려보도록 하겠습니다.

plt.figure(figsize=(20,8))  #size 조절
plt.xticks(rotation = 50)  #x축 조절

# Line Graph by matplotlib with wide-form DataFrame
plt.plot(jeju_pop.index, jeju_pop.전국_여자_비율, marker='+', color='r',label = '전국여성비율')
plt.plot(jeju_pop.index, jeju_pop.제주도_여자_비율, marker='+', color='g',label = '제주도여성비율')

plt.title('전국/제주도 여성 비율', fontsize=20) 
plt.ylabel('남성 대비 여성비율', fontsize=14)
plt.xlabel('나이', fontsize=14)
plt.legend(fontsize=12, loc='best')
plt.show()

그래프를 확인해 보겠습니다!!

전국 및 제주도 남성 대비 여성 성비 그래프

 

빨간색 선이 전국 여성 비율, 녹색 선이 제주도 여성 비율을 나타내는 그래프입니다.

 

이렇게 두 눈으로 봤을 때 80세쯤 까지는 전국 및 제주도의 여성 성비가 거의 같은 것을 확인할 수 있습니다.

 

하지만 그 이후를 보면 두 집단의 차이가 많이 나는 것이 나타납니다.

 

확연하게 제주도의 80세 이상 고령의 여성분이 남성 대비해서 많이 계시는 군요.

 

제주도라는 지역적, 환경적 특수성 때문인지 남성들이 여성에 비해 수명이 짧은 것으로 보입니다.

 

사실 <제주도에 여자가 많다>라는 말이 나오기 시작한 것은 오래되었는데요, 뱃일을 많이 하는 제주도의 지리적, 환경적 특성 때문에 바다에서 돌아오지 못한 남성 어부들이 많아서 라고 합니다.

 

그분들의 데이터가 지금 와서 80세 이상에서 보이는 것 일수도 있겠네요.

 

이렇게 <제주도에는 정말 여자가 많을까?> 데이터 분석을 마치겠습니다.

 

어떠셨는지 궁금합니다 ㅎㅎ

 

오늘도 좋은 하루 보내시길 바랍니다.

 

감사합니다!!!

 

 

by.sTricky