본문 바로가기

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

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

반응형

 

 

www.kaggle.com/kimjihoo/coronavirusdataset 데이터 셋을 받을 수 있는 캐글 사이트.

2020년 코로나 south korea 데이터를 이용하여 연습을 해봤다.

데이터는 11개의 칼럼으로 이루어져있고 다음과 같았다.

 일별 확진자 횟수 추이

우선 무언가를 도출해내려면 Time 데이터가 시간에 따른 확진자를 나타내는 것인데, 우리가 받은 데이터가...

일별 확진자가 아닌 누적 확진자였다.

물론 일별 확진자 데이터를 가져올 수도 있었지만, 즉,가장 먼저 해줘야할 것은 '일별 확진자'로 데이터를 바꾸는 것이었다.

 

Time_df로 불러와서 봤더니 누적 확진자 데이터였다.... 'confirmed'가 누적 확진자 데이터.

#기본 'Time' 데이터 복사1,2
Time_df1 = Time_df.copy()
Time_df2 = Time_df.copy()

# 난관1 : 날짜가 str이라 못 뺴준다고 해서.....
# 'date' 인덱스 값을 하나씩 미뤄서 저장해주고, 모양 맞추기
Time_df1['save'] = Time_df1['date']
Time_df1.drop(0, axis = 'index', inplace=True)
Time_df2.drop(101, axis = 'index', inplace=True)
Time_df2.set_index(Time_df1['save'], inplace=True)
Time_df1.set_index('date', inplace=True)

 

'date' 값을 기준으로 바로 빼주면 되지만, 'str' 성질을 갖고 있기 때문에 바로 빼주지 못한다. 그래서 date 값 빼고는 다 수치값이기에 'date'를 기준으로 날짜를 다 미루어 맞춰주고, 그 후 빼주는 방식으로 진행하려고 했다.

 물론, 'yy-mm-dd' 등 더 나은 방식이 분명 있겠지만, 적당한 파이썬 문법이 떠오르지 않기에 ( == 구글링해도 정확히 알 수 없기에) '하노이의 탑'을 응용하는 방식으로 date 값을 임시 저장해서 옆으로 넘겨주고 없애주고,

다시 되돌리는 방식으로 date 값을 정리 및 계산했다.

#일별 데이터프레임으로 따로 저장
Time_daily_df = Time_df1 - Time_df2

#더 이상 필요없는 칼럼 제거
Time_daily_df.drop(['date','save', 'time'],
                    axis = 'columns', inplace=True)
#그래프를 그리기 위한 작업
Time_daily_df.reset_index(inplace=True)
Time_daily_df.rename(columns={'confirmed' : 'daily_confirmed'},inplace=True)
Time_daily_df.head(5)

그리고 더 이상 나에게 필요없는 칼럼들을 제거하고 그래프를 보다 편하게 그리기 위해 나머지 값들을 부분 보완해주었다. rename한 이유도 그래프가 이미 그려져있었기에 그 이름을 맞추기 위해 daily_confirmed로 보다 편하게 칼럼명을 지정해주었다.

 

다 편집한 데이터. 데이터가 1월 초 ~ 4월 말까지 확진자 데이터를 갖고 했기에 다시 한번 일별 1000명 넘는 지금이 훨씬 심각해보인다. 물론 지금은 500명대지만 4월 30일 일일 확진자 4명을 보고있으면, 정말 감사한 시기였던걸 다시 한번 느낀다. 아무튼 이렇게 편집하고 코로나 데이터를 시각화해보았다.

#코로나 누적 확진자 그래프
fig, ax1 = plt.subplots()

ax1.plot(Time_df['date'], Time_df['confirmed'], '-')
ax1.set_xlabel('date')
ax1.set_ylabel('confirmed')

ax1.set_xticks(['2020-01-20', '2020-02-20', '2020-03-20', '2020-04-20'])
fig.autofmt_xdate(rotation=45)
plt.grid(True)
plt.title('accumulated confirmed')
plt.show()

코로나 확진자 누적 그래프

#코로나 일일 확진자 그래프
fig, daily_confirmed = plt.subplots()

daily_confirmed.plot(Time_daily_df['date'], Time_daily_df['daily_confirmed'], 'r--')
daily_confirmed.set_title('the number of Daily Confirmed', fontsize= 15)
daily_confirmed.set_xlabel('date')
daily_confirmed.set_ylabel('the number of confirmed')
daily_confirmed.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)

plt.rcParams["figure.figsize"] = (10, 5)
plt.grid(True)
plt.xticks(rotation=30)
plt.show()

일일 코로나 확진자 그래프

확실히 2월부터 시작된 코로나 확산이 심각했던걸 800명대가 넘은 그래프가 정확히 보여준다. 비록, 정확한 방법은 아니었지만, 그래도 데이터를 편집하여 원하는 정보까지 얻어냈다는 데에 큰 의의를 둔다. ( 치아가 없으면 잇몸으로라도 ,,)  

다른 글에는 이 일별 확진자 데이터를 가지고, 다른 조건과의 관계를 확인하는 식을 파악해보고자 한다.

반응형