저번 네이버 증권 크롤링에 이어 두 번째 크롤링 시간이다. 이번 시간도 저번과 같이 굉장히 쉽다. 코드 몇 줄이면 우리가 원하는 데이터를 바로 가져올 수 있다. 어떤 데이터를 가져올까라고 고민하던 중 아무래도 관심을 많이 가질만한 주제가 코로나이기 때문에 코로나 상황을 파이썬으로 가져와 간단히 분석하는 코드를 작성해보고자 한다.
데이터를 가져올 소스는 바로 질병관리본부에서 운용하는 "코로나바이러스감염증-19" 사이트이다. 네이버에 코로나 검색할 경우 가장 먼저 나오는 사이트이다.(아래 첫 번째 이미지 참고) 사이트 상단 메뉴바에서 발생동향 -> 국내 발생 동향으로 들어가면 우리가 필요로 하는 다양한 국내 발생 코로나 현황이 나온다.(두 번째 이미지 참고)
1. 코로나 데이터 크롤링
파이썬에서 가장 많이 사용하는 패키지가 Pandas라고 볼 수 있는데 여기 패키지 내에는 웹 페이지에 있는 테이블 구조의 데이터를 가져올 수 있게 하는 read_html 함수가 있다. 해당 함수를 통해 코로나 현황 사이트에 있는 테이블 구조의 데이타를 가져와 보도록 하겠다.
read_html 내 파라미터를 url 링크만 넣을 경우 한글이 깨지는 이슈가 발생하여 utf-8로 인코딩을 해줘야 한다. 아래 코드를 돌리면 페이지 내에 있는 테이블을 리스트 형식으로 Table이라는 변수에 다 담기게 된다. len(table)를 돌리면 총 6개의 테이블에 담겨 있는데 여기서 우리는 사용할 table[4], table[5] 를 가져올 것이다. 출력하면 아래와 같은 결과물을 볼 수 있을 것이다.
import pandas as pd
url ='http://ncov.mohw.go.kr/bdBoardList_Real.do?brdId=1&brdGubun=11&ncvContSeq=&contSeq=&board_id=&gubun='
table=pd.read_html(url,encoding='utf-8')
2. 데이터 시각화
성별 코로나 확진자 수는 파이 차트로, 연령별 코로나 확진자 수는 바 그래프로 시각화해보겠다.
- 성별 코로나 확진자 수 파이 차트 시각화
우선 확진자 칼럼 안에 있는 퍼센트 비중만 따로 뽑아서 시각화를 해야 되는데 이는 문자열에 있는 find 함수를 사용하면 굉장히 쉬워진다. 아래 코드를 돌리면 딱 괄호 안에 있는 수치만 뽑아서 새로운 비중이라는 칼럼에 저장하게 된다.
sex_corona=table[4]
sex_corona2=sex_corona.iloc[:,:2]
sex_corona2['비중']=sex_corona2['확진자(%)'].apply(lambda x: x[x.find("(")+1:x.find(")")])
아래 matplotlib에 있는 Pie 함수로 파이 차트를 그려보겠다. 남성보다는 여성이 더 코로나에 취약한 점을 확인할 수 있다.
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
from matplotlib import style
plt.figure(figsize=(10,7))
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)
style.use('ggplot')
plt.pie(sex_corona2['비중'],labels=sex_corona2['구분'],autopct='%0.1f%%')
plt.show()
- 연령별 코로나 확진자 수 바 차트로 시각화
위 파이차트와 동일한 프로세스로 진행하면 된다. 이태원 클럽 사건 때문에 그런지 코로나 확진자 중 25%가 20대인 것으로 나타났다.
age_corona2=age_corona.iloc[:,:2]
age_corona2['비중']=age_corona2['확진자(%)'].apply(lambda x: float(x[x.find("(")+1:x.find(")")]))
plt.figure(figsize=(12,8))
style.use('ggplot')
plt.bar(age_corona2['구분'], age_corona2['비중'])
plt.show()
다음에 더 유의미한 코딩으로 찾아 뵙겠다.
'문송충의 코딩하기 > 파이썬 데이터 분석' 카테고리의 다른 글
슈카월드 유튜브 채널 파이썬으로 분석하기 (0) | 2020.08.19 |
---|---|
파이썬으로 유튜브 슈카월드 검색 결과 가져오기 (0) | 2020.08.14 |
네이버 증권 페이지에서 현대차 주요 투자 지표 가져오는 법 With Python (1) | 2020.07.25 |
공공데이터 API를 활용한 국민연금 분석하기 #1 With Python (0) | 2020.07.23 |
Dart 전자공시시스템 API를 통해 현대자동차 Data 가져오기 With Python #2 - 재무상태표 (1) | 2020.07.20 |
댓글