-
일별 코로나 확진자수 그래프 추세 보기 및 데이터 다운로드, 시각화, 크롤링 분석카테고리 없음 2020. 12. 10. 17:42반응형
이전 글 python 크롤링을 사용하여 일별 확진자 알아내기
Selenium, Scraping, BeautifulSoup 사용하기
https://blog.naver.com/szwlemona/222167682091
먼저 파이썬 코드를 이용해서
1. 코로나 확진자 데이터 수집(크롤링)
2. 데이터 저장(csv)
3. 시각화
4. 예측 및 분석
하는 방법을 알아보겠습니다.
1. 코로나 확진자 데이터 수집(크롤링)
from selenium import webdriver from bs4 import BeautifulSoup chrome_options = webdriver.ChromeOptions() # chrome_options.add_argument('--headless') #내부 창을 띄우지 않고 실행가능 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument("lang=ko_KR") chrome_options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome('D:\development\crawler\chromedriver.exe',chrome_options=chrome_options) # driver = webdriver.Chrome('chromedriver') search_key = '코로나 확진자' url = 'https://www.google.com/search?q={}'.format(search_key) driver.get(url) html = driver.page_source soup = BeautifulSoup(html,'html.parser') soup = soup.findAll("ol") # print(soup) html = driver.page_source #BeautifulSoup을 이용해서 html형식으로 파싱한다. #아래의 soup을 출력하면 페이지의 모든 소스를 출력하게 된다. soup = BeautifulSoup(html,'html.parser') # 페이지의 소스중 ol 태그를 가진 모든 소스만 soup에 저장한다. soup = soup.findAll("ol") # ol태그만 파싱한 소스는 10개의 리스트로 이루어저 있다. #print(len(soup)) 를 통해 알 수 있다. # 그중 우리가 필요한 정보는 코로나 확진자 수와 날짜에 대한 정보이기 때문에 # 그에 해당하는 2번째 리스트 soup[1] 을 선택하고 # 이 정보는 <li></li>태그로 감싸저 있기 때문에 .text를 이용해서 텍스트 정보만 파싱한다. all_count = soup[1].text # 위의 all_count를 출력하면 일열로 쭉 ~~~ 늘어진 확진자 수와 날짜를 볼 수 있다. # 조금더 깔끔하게 출력하고자 replace 함수를 사용하여 줄을 띄었다. all_count = all_count.replace("일","일,").replace('1,0','10').replace('회','').replace('월 ','-'). replace('일','') all_count = all_count.strip() all_count = all_count.split(",") ## 데이터 변환 저장 import pandas as pd count_list = [] small_list = [] for i , data in enumerate(all_count) : data = data.strip() # print(data) if i%2 == 1 and i !=0 : month,day = data.split('-') print(month, day) data = pd.Timestamp(2020,int(month),int(day)) small_list.append(data) if i%2 == 1 and i !=0 : count_list.append(small_list) small_list = [] pdata = pd.DataFrame(count_list) pdata.columns = ['count','date'] ###### 데이터 저장 pdata.to_csv("daily_corona_conut.csv") ###### 데이터 시각화 import matplotlib.pyplot as plt import numpy as np plt.style.use('seaborn-whitegrid') plt.figure(figsize=(29,9)) pdata['count'] = pd.to_numeric(pdata['count']) # pdata['date'] = pd.Timestamp(2020,pdata['date'].split('-')) plt.plot(pdata['date'],pdata['count']) # plt.show()
소스를 실행하여 그래프로 그려봤습니다.
코로나 확진자 추세를 확인 할 수 있습니다.
위 코드로 저장한 일자별 코로나 확진자 수 입니다.(데이터 기준은 구글 2020/12/10일 기준입니다.)
3월 초에 어마무시했을때는 금방 잠잠해 졌는데 12월 10일 현재는 계속해서 증가추세가 계속 이어지고 있네요 ㅠㅜㅠㅜㅠ
ㅜㅠㅠㅜㅠㅜㅜㅠㅠㅜ
2/20~ 12/08일까지 데이터가 있습니다.
첨부파일
daily_corona_conut.csv
데이터를 pandas 형태로 바꿔서 csv 형태로 저장했습니다.
다음시간에는 이렇게 저장한 데이터를 가지고
앞으로 확진세가 어떻게 될지 예측하는 간단한 방법들을 나눠보겠습니다 !
반응형