ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 월별 코로나 확진자 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 확장자로 작성되었습니다.

    혹시 소스코드가 필요하신 분은 댓글로 이메일 남겨주세요~~~

    반응형

    댓글

Designed by Tistory.