코로나 일일 확진자수 엑셀 보고서 만들기

Song Chae Won·2023년 3월 11일
0
post-thumbnail

그래프, 데이터, 시각화, 통계 업무 보고서 만들기 프로그램

➕ 라이브러리 설치

파이썬에서 엑셀을 사용하기 위한 라이브러리

pip install openxyl

📍 공공데이터 포탈 가입 및 API 신청하기

공공데이터 포탈 사이트에서 [보건복지부 코로나 현황]을 검색하여 활용신청을 하면, 신청된 API는 1~2시간 후 호출이 가능합니다.

📍 파이썬으로 확진자수 출력하는 코드 만들기

import requests
import re

url = "https://apis.data.go.kr/1352000/ODMS_COVID_04/callCovid04Api?serviceKey=xdF4c2%2FejrJEYFVOOsmUXo4ueNyAunC75B52bGYD%2FO4%2F7GigXR8FTq5hVkarOLnLoNnFZKMS4e8ndavGalT1wA%3D%3D&pageNo=1&numOfRows=500&apiType=xml&std_day=2023-03-02&gubun=%EA%B2%BD%EA%B8%B0" # 공공데이터에 나의 API KEY를 이용하여 페이지에 접속합니다.
response = requests.get(url)

gubun = re.findall(r'<gubun>(.+?)</gubun>', response.text)
incDec = re.findall(r'<incDec>(.+?)</incDec>', response.text)
# 지역, 확진자수를 찾아 출력합니다.

print("지역:", gubun)
print("확진자수:", incDec)

출력된 결과물

https://apis.data.go.kr/1352000/ODMS_COVID_04/callCovid04Api?serviceKey=xdF4c2%2FejrJEYFVOOsmUXo4ueNyAunC75B52bGYD%2FO4%2F7GigXR8FTq5hVkarOLnLoNnFZKMS4e8ndavGalT1wA%3D%3D&pageNo=1&numOfRows=500&apiType=xml&std_day=2023-03-07

📍 오늘 날짜를 자동으로 입력하여 확진자수 출력하는 코드 만들기

import requests
import re
import datetime

url = "https://apis.data.go.kr/1352000/ODMS_COVID_04/callCovid04Api?serviceKey="
api_key = "xdF4c2%2FejrJEYFVOOsmUXo4ueNyAunC75B52bGYD%2FO4%2F7GigXR8FTq5hVkarOLnLoNnFZKMS4e8ndavGalT1wA%3D%3D"
# 공공데이터포털에서 받은 일반 인증키 API KEY를 입력합니다.

# 오늘의 코로나19 현황을 가져오는 함수를 정의합니다. 날짜, 지역, 확진자수를 반환합니다.
def get_today_covid19(url, api_key):
    now = datetime.datetime.now()
    yyyymmdd = now.strftime('%Y%m%d')

    page_no = "&pageNo=1&numOfRows=10&"
    today = "startCreateDt=" + yyyymmdd + "&endCreateDt=" + yyyymmdd

    response = requests.get(url + api_key + page_no + today)

    gubun = re.findall(r'<gubun>(.+?)</gubun>', response.text)
    incDec = re.findall(r'<incDec>(.+?)</incDec>', response.text)

    return yyyymmdd, gubun, incDec


날짜, 지역, 확진자수 = get_today_covid19(url, api_key)
# 날짜, 지역, 확진자수의 정보를 get_today_covid19 함수를 이용하여 가져옵니다. 함수의 입력값은 url과 api키를 입력합니다.

print("날짜:", 날짜)
print("지역:", 지역)
print("확진자수:", 확진자수)

import datetime 라이브러리를 통하여 오늘 날짜를 자동으로 입력하여 확진자수를 출력하는 코드

📍 코로나 현황을 엑셀 보고서로 만들기

from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.styles import Alignment
import requests
import re
import datetime

import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))


url = "https://apis.data.go.kr/1352000/ODMS_COVID_04/callCovid04Api?serviceKey=xdF4c2%2FejrJEYFVOOsmUXo4ueNyAunC75B52bGYD%2FO4%2F7GigXR8FTq5hVkarOLnLoNnFZKMS4e8ndavGalT1wA%3D%3D&pageNo=1&numOfRows=500&apiType=xml"
api_key = "xdF4c2%2FejrJEYFVOOsmUXo4ueNyAunC75B52bGYD%2FO4%2F7GigXR8FTq5hVkarOLnLoNnFZKMS4e8ndavGalT1wA%3D%3D"


def get_today_covid19(url, api_key):
    now = datetime.datetime.now()
    yyyymmdd = now.strftime('%Y%m%d')

    page_no = "&pageNo=1&numOfRows=30&"
    today = "startCreateDt=" + yyyymmdd + "&endCreateDt=" + yyyymmdd

    response = requests.get(url + api_key + page_no + today)

    gubun = re.findall(r'<gubun>(.+?)</gubun>', response.text)
    incDec = re.findall(r'<incDec>(.+?)</incDec>', response.text)

    return yyyymmdd, gubun, incDec


날짜, 지역, 확진자수 = get_today_covid19(url, api_key)

try:
    wb = load_workbook("코로나확진자보고서.xlsx", data_only=True)
    ws = wb.active
except:
    wb = Workbook()
    ws = wb.active


ws.cell(row=1, column=1).value = 날짜 + "일 코로나 현황"
ws.merge_cells(start_row=1, end_row=1, start_column=1, end_column=len(확진자수))
ws.cell(row=1, column=1).alignment = Alignment(
    horizontal="center", vertical="center")

for i in range(len(확진자수)):
    ws.cell(row=2, column=i+1).value = 지역[i]
    ws.cell(row=3, column=i+1).value = int(확진자수[i])


wb.save("코로나확진자보고서.xlsx")

profile
@chhaewxn

0개의 댓글