-
월별 코로나 확진자 12월 데이터 추가, 분석 python pandas 그래프카테고리 없음 2020. 12. 31. 10:50반응형
2020/12/31 벌써 이번년도의
마지막 날이 찾아왔네요....
코로나 때문인지 유독 더
빨리 지나간듯한 느낌이 듭니다..
그래서 이번에는 2020년도
코로나 결산을 해보려고 합니다
기간 : 2020/03/06 ~ 2020/12/31
단위 : 일, 월
소스 코드 설명은 이전 글을 참고해주세요 ~~
주피터 노트북으로 작성된 코드를 단순히 옮겨서 조금 지저분 합니다...
from urllib.request import urlopen from urllib.parse import urlencode, unquote, quote_plus import urllib import requests import json import pandas as pd from datetime import datetime,timedelta yester = datetime.today() - timedelta(300) yseter = yester.strftime("%Y%m%d") now_today = datetime.today() - timedelta(0) now_today = now_today.strftime("%Y%m%d") print("오늘과 어제 날짜 확인") print(yseter) print(now_today) my_api_key = '__자신의api-key입력__' url = 'http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson' queryParams = '?' + \ 'ServiceKey=' + '{}'.format(my_api_key) + \ '&pageNo='+ '1' + \ '&numOfRows='+ '999' + \ '&startCreateDt={}&endCreateDt={}'.format(yseter,now_today) import xmltodict result = requests.get(url + queryParams) print(result) result = result.content jsonString = json.dumps(xmltodict.parse(result), indent = 4) jsonString = jsonString.replace('resultCode', '결과코드').replace('resultMsg', '결과메세지').replace('numOfRows', '한 페이지 결과 수').replace('pageNo', '페이지 수').replace('totalCount', '전체 결과 수').replace('seq', '게시글번호(감염현황 고유값)').replace('stateDt', '기준일').replace('stateTime', '기준시간').replace('decideCnt', '누적 확진자 수').replace('clearCnt', '격리해제 수').replace('examCnt', '검사진행 수').replace('deathCnt', '사망자 수').replace('careCnt', '치료중 환자 수').replace('resutlNegCnt', '결과 음성 수').replace('accExamCnt', '누적 검사 수').replace('accExamCompCnt', '누적 검사 완료 수').replace('accDefRate', '누적 확진률').replace('createDt', '등록일시분초').replace('updateDt', '수정일시분초') js = json.loads(jsonString) print(js) js_check_count = js["response"]['body']['items']['item'][0]['검사진행 수'] js = js["response"]['body']['items']['item'] pdata = pd.DataFrame(js) pdata.sort_values(by = '기준일', inplace=True, ascending = True) pdata = pdata.reset_index(drop = True) daily_crn_cnt = [] daily_check_cnt = [] for row in range(0,len(pdata['치료중 환자 수'])-1): daily_crn_cnt.append(int(pdata.loc[row+1][7])- int(pdata.loc[row][7])) print(int(pdata.loc[row+1][7]) ,'-', int(pdata.loc[row][7]) ,'=', int(pdata.loc[row+1][7])- int(pdata.loc[row][7] )) daily_check_cnt.append(int(pdata.loc[row+1][1])- int(pdata.loc[row][1]) ) pdata = pdata.drop(1) pdata['일일 확진자 수'] = daily_crn_cnt pdata['일일 검사 수'] = daily_check_cnt data6 = pdata[['기준일','일일 확진자 수','일일 검사 수','누적 확진률','누적 검사 수','사망자 수']] data6['기준일'] = pd.to_datetime(data6['기준일']) data6 = data6.groupby(data6['기준일'].dt.strftime("%D")).sum() data6 = data6.reset_index() import matplotlib.pyplot as plt import numpy as np plt.style.use('seaborn-whitegrid') plt.figure(figsize=(29,9)) data6['일일 확진자 수'] = pd.to_numeric(data6['일일 확진자 수']) data6['일일 검사 수'] = pd.to_numeric(data6['일일 검사 수']) # data6['사망자 수'] = pd.to_numeric(data6['사망자 수']) data6['기준일'] = pd.to_datetime(data6['기준일']) plt.plot(data6['기준일'],data6['일일 확진자 수'])
month_data = data6.groupby(data6['기준일'].dt.strftime("%m")).sum() print(month_data.keys()) month_data['기준일'] = ['3','4','5','6','7','8','9','10','11','12'] month_data[['일일 확진자 수', '일일 검사 수']]
일일 검사수, 확진자수가 12월에 엄청 늘어났네요....
import matplotlib.pyplot as plt import numpy as np plt.style.use('seaborn-whitegrid') plt.figure(figsize=(29,9)) # month_data['기준일'] = pd.to_datetime(month_data['기준일']) print(month_data['기준일']) plt.plot(month_data['기준일'],month_data['일일 확진자 수']) # plt.plot(data6['기준일'],data6['일일 검사 수'])
월별 확진자 통계 입니다.
12월에는 2만5천명을 돌파했네요 ㅜㅠㅠㅜㅜㅠ
전체 소스코드는 ipynb 확장자로 작성되었습니다.
혹시 소스코드가 필요하신 분은 댓글로 이메일 남겨주세요~~~
반응형