본문으로 바로가기

연령대별 확진자

지난 포스팅에서 파싱한 JSON 데이터를 사용합니다.

각 Key별 7월 15일 까지의 누적된 수치입니다.

더보기
{
	"0-9": {
		"confcase": "222",
		"confcaserate": "1.64",
		"createdt": "2020-07-15 10:40:12.153",
		"criticalrate": "0",
		"death": "0",
		"deathrate": "0.00",
		"seq": "2026",
		"updatedt": "null"
	},
	"10-19": {
		"confcase": "753",
		"confcaserate": "5.56",
		"createdt": "2020-07-15 10:40:12.153",
		"criticalrate": "0",
		"death": "0",
		"deathrate": "0.00",
		"seq": "2025",
		"updatedt": "null"
	},
	"20-29": {
		"confcase": "3495",
		"confcaserate": "25.79",
		"createdt": "2020-07-15 10:40:12.153",
		"criticalrate": "0",
		"death": "0",
		"deathrate": "0.00",
		"seq": "2024",
		"updatedt": "null"
	},
	"30-39": {
		"confcase": "1640",
		"confcaserate": "12.1",
		"createdt": "2020-07-15 10:40:12.152",
		"criticalrate": "0.12",
		"death": "2",
		"deathrate": "0.69",
		"seq": "2023",
		"updatedt": "null"
	},
	"40-49": {
		"confcase": "1782",
		"confcaserate": "13.15",
		"createdt": "2020-07-15 10:40:12.152",
		"criticalrate": "0.17",
		"death": "3",
		"deathrate": "1.04",
		"seq": "2022",
		"updatedt": "null"
	},
	"50-59": {
		"confcase": "2411",
		"confcaserate": "17.79",
		"createdt": "2020-07-15 10:40:12.152",
		"criticalrate": "0.62",
		"death": "15",
		"deathrate": "5.19",
		"seq": "2021",
		"updatedt": "null"
	},
	"60-69": {
		"confcase": "1769",
		"confcaserate": "13.05",
		"createdt": "2020-07-15 10:40:12.152",
		"criticalrate": "2.32",
		"death": "41",
		"deathrate": "14.19",
		"seq": "2020",
		"updatedt": "null"
	},
	"70-79": {
		"confcase": "902",
		"confcaserate": "6.66",
		"createdt": "2020-07-15 10:40:12.152",
		"criticalrate": "9.31",
		"death": "84",
		"deathrate": "29.07",
		"seq": "2019",
		"updatedt": "null"
	},
	"80 이상": {
		"confcase": "577",
		"confcaserate": "4.26",
		"createdt": "2020-07-15 10:40:12.152",
		"criticalrate": "24.96",
		"death": "144",
		"deathrate": "49.83",
		"seq": "2018",
		"updatedt": "null"
	},
	"여성": {
		"confcase": "7607",
		"confcaserate": "56.14",
		"createdt": "2020-07-15 10:40:12.152",
		"criticalrate": "1.79",
		"death": "136",
		"deathrate": "47.06",
		"seq": "2017",
		"updatedt": "null"
	},
	"남성": {
		"confcase": "5944",
		"confcaserate": "43.86",
		"createdt": "2020-07-15 10:40:12.152",
		"criticalrate": "2.57",
		"death": "153",
		"deathrate": "52.94",
		"seq": "2016",
		"updatedt": "null"
	}
}

 

키(연령대, 성별)를 추출해서 그 키를 이용하여 값(사망, 확진자수 등)에 접근합니다.

연령대와 성별은 도메인이 다르기 때문에 분류합니다.

# Tip
# 한글 폰트 사용
fonts = [(f.name, f.fname) for f in fm.fontManager.ttflist if 'Nanum' in f.name]
plt.rcParams['font.family'] = fonts[0][0]
'''
보건복지부_코로나19 연령별·성별감염_현황
'''
import json
import matplotlib as mpl
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
fonts = [(f.name, f.fname) for f in fm.fontManager.ttflist if 'Nanum' in f.name]
plt.rcParams['font.family'] = fonts[0][0]

with open('result2.json', 'r', encoding='utf-8') as f:
    json_data = json.load(f)

bar_keys = [k for k, v in json_data.items() if k != '여성' if k != '남성']
pie_keys = ['여성', '남성']

confcase_data = {}
for k in bar_keys:
    confcase_data.setdefault(k, int(json_data[k]['confcase']))

plt.bar(confcase_data.keys(), confcase_data.values())
plt.show()

 

활발한 20대의 확진자가 가장 많았습니다.

 

여성 남성 치사율

'''
보건복지부_코로나19 연령별·성별감염_현황
'''
import json
import matplotlib as mpl
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt

fonts = [(f.name, f.fname) for f in fm.fontManager.ttflist if 'Nanum' in f.name]
plt.rcParams['font.family'] = fonts[0][0]
plt.rcParams['font.size'] = '20'

with open('result2.json', 'r', encoding='utf-8') as f:
    json_data = json.load(f)

bar_keys = [k for k, v in json_data.items() if k != '여성' if k != '남성']
pie_keys = ['여성', '남성']

# confcase_data = {}
# for k in bar_keys:
#     confcase_data.setdefault(k, int(json_data[k]['confcase']))

# plt.bar(confcase_data.keys(), confcase_data.values())
# plt.show()

deathrate_data = {}
for k in pie_keys:
    deathrate_data.setdefault(k, json_data[k]['deathrate'])

plt.pie(deathrate_data.values(), labels=sex_data.keys(), shadow=True, startangle=90, autopct='%0.1f%%')
plt.show()