주제: 도표 중첩하여 표출
작성: 2023-01-27
활용데이터: KOSIS ➡️ 인구 ➡️ 1. 연령 및 성별인구 - 시군구 (자료갱신일 :2017-08-31)
안녕하세요, WSCODE 루카스입니다.
오늘은 데이터를 시각화는 방법으로 자주 사용되면서 가장 익숙한 방법, 도표 그리기입니다.
1. 소스 코드
전체 소스코드부터 보도록 하겠습니다.
# IMPORT RELEVANT LIBRARY AND PACKAGES
import pandas as pd
import matplotlib.pyplot as plt
# THE SOLUTION FOR KOREAN COMPATIBILITY
plt.rcParams['font.family'] ='AppleGothic'
plt.rcParams['axes.unicode_minus'] = False
# READ DATA
data = pd.read_excel('./Data/연령_및_성별_인구__시군구_20230125151305.xlsx',
header =2, usecols = "B:E")
# DATA PRE_PORCESSING
df = data[:22]
df.columns = ["연령", "합계","남성","여성"]
df1 = df.astype({"남성": 'float'})
# SETTING THE GRAPH PROPERTIES
ymin = df1["합계"].min()
ymax = df1["합계"].max()*1.10
plt.xticks(rotation = 45)
plt.ylim(ymin, ymax)
plt.margins(x=0, y=0)
plt.axis('off')
# PRESENT DATA AS A GRAPH
plt.fill_between(df1['연령'], ymin, df1['합계'], alpha=0.5, color = "#F7DE43")
plt.fill_between(df1['연령'], ymin, df1['남성'], alpha=0.5, color = "#655BF5")
plt.fill_between(df1['연령'], ymin, df1['여성'], alpha=0.5, color = "#4BEB96")
2. 코드 이해
2.1. 데이터 다운로드 및 파일 읽기
우선, 그래프를 그려볼 데이터가 없으니까, KOSIS에서 통계데이터를 다운받습니다(역시 제가 원하는 데이터 형태는 아니군요...ㅎ).
- 데이터 위치 : KOSIS ➡️ 인구 ➡️ 1. 연령 및 성별인구 - 시군구 (자료갱신일 :2017-08-31)
- 데이터 링크 : https://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1IN1603&conn_path=I2
import pandas as pd
data = pd.read_excel('./Data/연령_및_성별_인구__시군구_20230125151305.xlsx',
header =2,
usecols = "B:E")
data.head()
2.2. 데이터 추출
필자는 2016년의 전체 대한민국의 인원 중 남성과 여성의 비교하고자합니다.
그렇기때문에 다운받은 데이터에서 23행 이후의 데이터는 필자에게는 필요가 없습니다. 그리고 해당 column명을 임의로 변경합니다.
df = data[:22]
df.columns = ["연령", "합계","남성","여성"]
df.info()
- .info() : 데이터의 특성을 손쉽게 표출
필자는 합계, 남성 및 여성을 그래프로 표출하려고하는데, 남성 Column은 데이터타입(Dtype)이 object로 설정되어있습니다
이런 경우에는 데이터타입을 실수(float)형으로 변경해야 그래프를 그릴 수 있습니다.
df1 = df.astype({"남성": 'float'})
df1.info()
plt.xticks(rotation = 45)
plt.plot(df1["연령"], df1['남성'])
plt.fill_between(df1['연령'], ymin, df1['합계'], alpha=0.5, color="#F7DE43")
plt.fill_between(df1['연령'], ymin, df1['남성'], alpha=0.5, color ="#655BF5")
plt.fill_between(df1['연령'], ymin, df1['여성'], alpha=0.5, color ="#4BEB96")
한글폰트 깨지는 경우, 다음와 같이 폰트속성을 적용하시면 됩니다.
plt.rcParams['font.family'] ='AppleGothic'
plt.rcParams['axes.unicode_minus'] = False
Reference
- 차트 내부 채우는 방법
- 색상 휠 : https://color.adobe.com/ko/create/color-wheel
728x90
반응형
'Python' 카테고리의 다른 글
[Python] 데이터 인덱싱_.ix/.loc/.iloc (0) | 2023.02.05 |
---|---|
[Python] 행과 열 (0) | 2023.02.02 |
[Python] 점프투파이썬(기초) 정리 (2) | 2023.01.16 |
[Python] 데이터 병합 - glob.glob() / pd.concat() (0) | 2022.02.02 |
[Google Colaboratory] 코랩으로 GPU, TPU 사용법 (0) | 2022.01.31 |