국가통계포털(KOSIS)은 다양한 통계정보를 검색, 분석, 활용할 수 있도록 데이터를 제공한다. 해당 데이터는 누구나 이용 가능하며 엑셀 파일 형태로 다운로드 받을 수 있다.
이러한 데이터는 파이썬 matplotlib 모듈을 이용하여 여러가지 형태로 시각화 할 수 있는데, 해당 방법을 간단하게 정리하고자 한다.
먼저, KOSIS에 들어가서 시각화하고 싶은 데이터를 검색한다. 해당 포스팅에서는 출생아수의 통계 데이터로 실습한다.
위와 같은 화면에서 출생아수(시도/시/군/구
)를 클릭하면 아래와 같이 통계 데이터를 볼 수 있다.
원하는 데이터만 필터하여 조회할 수 있다. 오른쪽에 조회설정
버튼을 클릭한다.
남자와 여자를 합친 출생아수를 22년도 1월부터 12월까지 조회했다.
행렬전환을 통해 월별 단위로 행을 구성하고자 했다. 행렬전환
을 클릭한다.
마우스 드래그를 통해 마음대로 행렬을 구성할 수 있다. 원하는 구성으로 배치가 되었다면 적용
버튼을 클릭한다.
행렬이 잘 바뀌었고, 다운로드
버튼을 누른다.
EXCEL(xlsx)로 다운로드 한다.
다운로드가 잘 되었다.
데이터 시각화시, 첫 번째 행이 나타낼 데이터들의 필드명이다. 두번째 줄은 모두 동일한 단위이므로, 삭제한다.
삭제하면 위와 같은 엑셀 형태가 될 것이다.
pandas 모듈을 사용하여 엑셀 파일의 DataFrame을 불러오고, 이를 matplotlib.pyplot 모듈을 통해 적절하게 가공하여 그래프 형태로 띄워줄 수 있다.
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('./출생아수_20240112221819.xlsx')
plt.rc('font', family='Gulim') # 한글 깨짐 방지
plt.title('출생아수')
plt.xticks(df.index, df['시점'])
plt.plot(df.index, df['서울특별시'], label='서울특별시(명)')
plt.plot(df.index, df['부산광역시'], label='부산광역시(명)')
plt.plot(df.index, df['경기도'], label='경기도(명)')
plt.plot(df.index, df['대구광역시'], label='대구광역시(명)')
plt.plot(df.index, df['인천광역시'], label='인천광역시(명)')
plt.plot(df.index, df['강원도'], label='강원도(명)')
plt.legend()
plt.show()
모든 지역을 나타내면 그래프가 상당히 많아지기 때문에, 임의의 지역 6개만 그래프에 나타냈다.
xticks를 이용하여 x축의 눈금을 시점별로 설정해주었다.
간단하게 시각화 성공!
위 그래프는 꺽은선 그래프이다. plt는 이 말고도 막대 그패프로도 표현할 수 있다.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('./출생아수_20240113111434.xlsx')
plt.rc('font', family='Gulim')
plt.title('출생아수')
plt.xticks(df.index, df['시점'])
bar_width = 0.2 # 각 막대의 폭
plt.bar(df.index - bar_width * 2, df['서울특별시'], width=bar_width, label='서울특별시(명)')
plt.bar(df.index - bar_width, df['부산광역시'], width=bar_width, label='부산광역시(명)')
plt.bar(df.index, df['경기도'], width=bar_width, label='경기도(명)')
plt.bar(df.index + bar_width, df['대구광역시'], width=bar_width, label='대구광역시(명)')
plt.legend()
plt.show()
막대 그래프의 경우, 별 지정 없이 하게 되면 막대가 겹치게 된다. 따라서 각 항목의 width를 지정하여 시작 위치를 지정해주는 작업이 추가 된다.
막대 그래프로 데이터가 예쁘게 시각화 된 것을 볼 수 있다.
본 포스팅에서 통계청의 데이터를 그래프로 띄우는 전체적인 방법을 정리했다. 간단한 시각화만 진행했지만, matploitlib는 더 많은 형태의 그래프로 데이터를 시각화 할 수 있다.
아래 링크에서 matploitlib 모듈에 관련된 여러 방법을 확인할 수 있다. 상황에 맞게 참고하여 잘 사용하여 데이터를 시각적으로 표현하는 능력도 향후 매우 도움이 될 것 같다!