본문 바로가기

Programming Language/Data & A.I. (데이터 & 인공지능 관련)

pandas 데이터 전처리 시각화 ylim, 한 그래프에 같이 그리기: 감기/독감/코로나 검색과 코로나 검사량에는 상관관계가 있을까 ? (상관관계 데이터 시각화) - [캐글 코로나 데이터 셋/ Kaggle coronaviru..

반응형

collocationvoca.tistory.com/7

 

'누적 확진자' 수 데이터에서 '일별 확진자 수'로 데이터 편집 (캐글 코로나 데이터 셋/ Kaggle corona

www.kaggle.com/kimjihoo/coronavirusdataset 데이터 셋을 받을 수 있는 캐글 사이트. 2020년 코로나 south korea 데이터를 이용하여 연습을 해봤다. 데이터는 11개의 칼럼으로 이루어져있고 다음과 같았다.  일..

collocationvoca.tistory.com

위 블로그 글은 일별 확진자 수 데이터 편집 방법이었습니다.

 이제 저 일별 확진자수 데이터를 바탕으로 다른 데이터와의 연관관계를 보고싶었습니다. 그러던 와중에 눈에 들어왔던게 Search Trend 데이터였습니다. 

 문득, 연관 검색량과 코로나 검사횟수는 상관관계가 있을까? 라는 생각이 들었고 즉시 시각화 해보고자 했습니다.

 데이터가 2월 3월 4월이기 때문에 코로나 초기 데이터였고, 사람들이 막 코로나라는 바이러스가 처음 나오고 이제 막 퍼져나가고 있다는 불안감에 증상을 검색해 봤을 것이고 그 불안감에 코로나 증상을 검색해보고 검사를 하러 갔을 확률이 높지 않을까 했습니다.

예를 들어, 제가 3월 쯤에 감기 증상이 있었고 저는 혹시

'코로나 아니야?!???!?'

라는 생각을 하고 코로나 증상을 확인해봤었습니다. 그리고 코로나 검사를 받으려고까지 생각하고 검사소를 알아보던 중 단순 감기약을 먹고 잤는데 증상이 싹 사라졌던 경험이 있었습니다.

 즉, 감염병 초기 데이터를 바탕으로,

코로나에 대한 불안감 -> 코로나 증상 검색 -> 코로나 검사 로 이어지는지를 확인해보고자 합니다. 

기존의 데이터는 11개의 칼럼으로 이루어져 있습니다.

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.dates as mdates

코로나 'SearchTrend' 데이터 확인

SearchTrend_df = pd.read_csv('data/coronavirusdataset/SearchTrend.csv')
SearchTrend_df.head(5)

 

우리는 서치트렌드 데이터를 살펴보면 날짜(date)가 2016년부터여서 2020년 1월 20일 이전 데이터를 다 지워야합니다. 

뿐만 아니라, cold(감기) flu(독감) pneumonia(폐렴) coronavirus(코로나바이러스)관련 데이터를 한 곳에 집중시켜 표현할 필요가 있습니다.

 

코로나 'SearchTrend' 데이터 전처리

#필요없는 데이터 지우기 
for i in range (0,1481): #2020 01 20 date 이전 값들 다 제거
    SearchTrend_df.drop(i, axis = 'index', inplace=True) 
    #inplace=True를 입력하면 데이터 변경한 것을 원래 데이터에도 저장
SearchTrend_df.set_index('date', inplace=True) 
#칼럼 date가 계산에 방해되니깐 살짝 인덱스에 넣어주기 
SearchTrend_df['Total_Search'] = SearchTrend_df.sum(axis=1)
#나머지 칼럼들을 더해주어 하나의 검색 트렌드로 합쳐주기
SearchTrend_df.reset_index(inplace=True)
#인덱스에 넣어준 칼럼 date 다시 원위치 
SearchTrend_df.head(5)

코딩 순서는 저 순서대로 해주었구요 그 합산한 값을 가장 오른쪽의 'Total_Search' 칼럼(열)에 추가해줬습니다.

우리가 구하고자 했던 그래프는 검색량의 절대치였기에, 코로나 관련 그래프를 그릴만한 조건은 Total_Search로 충분히 구현할 준비를 마쳤습니다. 그래서 상관관계 그래프 그리고자 했습니다.

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()

line1 = ax1.plot(SearchTrend_df['date'] , SearchTrend_df['Total_Search'] , 
                 'r--', label = "Total Search")
line2 = ax2.plot(Time_daily_df['date'] , Time_daily_df['test'] , 
                 'b-', label = "Coronavirus Test")


ax1.set_xlabel('date')
ax1.set_ylabel('Search')
ax2.set_ylabel('Coronavirus Test')

ax1.set_ylim(0, 120)
ax2.set_ylim(0, 20000)

ax1.set_xticks(['2020-01-21', '2020-01-31', '2020-02-11', '2020-02-21',
                '2020-03-01', '2020-03-11', '2020-03-21', '2020-03-31',
                '2020-04-11', '2020-04-21', '2020-04-30'])
fig.autofmt_xdate(rotation=30)

# 범례 표시
lines = line1 + line2
labels = [l.get_label() for l in lines]
ax1.legend(lines, labels, loc='upper right')


plt.title('Search & Test', fontsize = 15)
plt.rcParams["figure.figsize"] = (10, 5)
plt.grid(True)
plt.show()

 

우리가 보고자 했던 모습의 그래프를 완성할 수 있었습니다. 그래프 모습은 검사량과 코로나 검사 테스트를 그려낸 모습입니다. 각 그래프의 기준 값이 너무 달라, ylim(y의 범주 값)을 각각 주어 한 그래프로 그려 비교 했습니다.

여러분이 보시기엔 어떠신가요? 검색 트랜드와 검사량 추이가 유사하다고 보시나요?

저는 감염병 초기그 이후로 나눠 생각했습니다.

감염병 초기는 아무래도 감염병의 증상에 대한 생소함과 전염력에 대한 무서움 때문에 검색량과 코로나 검사량이 일정한 비율로 증가했다고 보여집니다. 특히 2월 중순부터 집단 감염이 본격화 되기 시작하면서 아무래도 더 증상이 뭔지 찾아보고, 그 이후에 코로나 검사를 받으러 생각해봤습니다.

또한, 감염병 초기가 그 이후 사람들의 인식 속에 감기 증상이 있어도 코로나와 연결 짓지 않게 적응되었고, 의료 체계와 방문 기록의 여부가 분명화 되면서 사람들의 불안 심리가 점점 감소한 것으로 예상해봤습니다.

 

 

부족하지만 오늘도 여러분의 코딩에 도움이 되었으면 좋을 것 같아서, 티끌 코딩 글 작성해봅니다.
제 글이 방문자 님께 힘이 되었으면 좋겠습니다. 항상 건강 챙기시고 오늘도 행복한 하루 되세요.
-티끌 리뷰 드림-


글 하단 '좋아요' 마우스 클릭 한번은 작성자에게 너무 큰 힘이 됩니다. 감사합니다.

반응형