본문 바로가기

Theory/DataScience

신종 코로나 바이러스 COVID-19 데이터 분석

본 글은 kaggle에 공개된 신종 코로나 관련 데이터를 단순히 들여다 보는 글일 뿐, 어떤 정치적, 종교적 의도가 없습니다. 특히 데이터만 가지고 객관적으로 관찰하려 노력했으며, 글 중간에 이야기하겠지만, 글 후반부의 내용은 단지 Kaggle의 Kernel의 내용중 관심있는 부분만 정리했을 뿐입니다. 특히 Kaggle에서 가져온 데이터는 현시점 대비 정리가 다되어 있지 않아서 실시간 뉴스와 차이가 큰 경우도 있습니다. 그리고 이 글은 PC와 같은 화면 비율이 약간 큰 환경에서 읽어야합니다. 코드를 일일이 붙여넣기 힘들어서 캡쳐했기 때문입니다.

국내 아니 전세계가 신종코로나 바이러스로 인해 엄청난 긴장상태를 너무 긴 시간 유지하고 있는 것 같습니다. 예전 여러 데이터 분석관련 글처럼 이번에도 데이터를 들여다보고 싶었지만, 질병관리본부의 웹페이지를 일일이 돌아다니며 데이터를 정리할 시간이 나지 않았는데요. 이번에 Kaggle에 Corona 관련 데이터가 정리되어 올라와서 한 번 데이터를 들여다 봤습니다.

먼저 받은 데이터는 Coronavirus-Dataset입니다.

간단히 pandas로 읽고 관심있는 컬럼만 가지고 왔습니다. 위 데이터는 

patient.csv

입니다.

일단 먼저 환진자의 국적이 궁금했습니다. 아무래도 최근 SNS 부터 뉴스까지 중국인을 입국 금지했어야했는지 아닌지에 대한 논란이 있었기 때문입니다. 일단, 배포된 데이터 기준으로 외국인은 9명 뿐입니다. 이 중 중국 국적인 외국인에 대해 조금더 확인해 보도록 하겠습니다.

8명 중 Wuhan을 방문한 것이 감염 원인으로 나타난 중국인은 두 명입니다. 그리고 12번 확진자의 경우 접촉한 사람이 422명이나 되어 좀 더 관찰이 필요해 보입니다. 위 숫자는 중국인 기준으로 최근 신천지 교인들 중 Wuhan을 방문한 다수의 인원은 한국인이라 다른 이야기입니다.

먼저 12번 확진자는 3번 확진자로부터 감염되었고, 3번 확진자는 한국인입니다.ㅠㅠ. 그리고 우한에서 온 1번 22번 확인자인 중국인 두 명은 추가로 다른 사람에게 감염을 시키지 않았습니다. 이것만 본다면 중국인의 입국을 막았어야한다는 것은 어쩌면 실효가 없었을지도 모릅니다.

이제는 데이터를 날짜별로 정리하고 확진자(counts)와 사망자(deceased), 그리고 확진자가 접촉한 사람의 수(contact_number)를 날짜별로 정리해 두겠습니다.

이렇게 정리를 시키고나서~

누적 확진자 숫자도 추가하겠습니다.

그리고 사망률도 추가하겠습니다.

이제 누적확진자를 먼저 그려보겠습니다.

네 뉴스에서 매일 보는 그 그래프입니다. 그래도 한 풀 죽는다는 느낌이 끝 부분에서 약간 느껴집니다.

이번에는 누적확진자와 일일 확진자를 함께 그려보겠습니다.

일일 확진자는 확실히 약간 답보상태 혹은 감소상태로 되는 것인것 같습니다. 그렇게 되기를 간절히 바랍니다.ㅠㅠ.

이번에는 사망률을 그려보겠습니다.

놀랍습니다. 누적확진자가 저렇게 많아지는데 오히려 사망률을 내려가고 있습니다. 아.. 여기서 사망률을 계산한 공식이 누적확진자 수에서 누적 사망자를 나누었습니다. 위의 범례는 틀렸습니다. 그냥 사망률 자체가 1.4%에서 0.4% 정도입니다.

이걸 좀 더 자세히 보고 싶어서 누적확진자와 누적사망자를 같이 그리기로 했습니다. 그런데 하나는 천 단위이고 하나는 소숫점이라 스케일을 맞추기위해 100000을 누적사망자에 곱했습니다.

누적확진자대비 누적사망자의 수가 이렇게 점점 작아지고 있습니다.

이번에는 일일 확진자 수와, 확진자가 접촉한 사람의 수를 하나의 그래프에 넣어봤습니다. 신기하네요~

주황색 그래프가 확진자의 일일 접촉자 수인데, 위 기간동안 크게 세번 튑니다. 그로부터 각각 12일 후에 확진자의 수가 크게 움직이구요. 그리고 또 사그라 드는 추세를 가집니다. 저는 여기서도 방역당국, 의료당국이 점말 노력하는 것이라는 느낌을 가졌습니다. 그리고 또한 확진자의 동선을 살피고 방역을 하는 지금 우리나라의 노력이 결코 헛되지 않다는 느낌도 가질 수 있습니다. 정말 우리는 멋진 방역/의료 당국을 가진 국민인것 같습니다.

그럼, 접촉자 수가 가장 많이 튀는 2020년 2월 18일을 한 번 관찰해 보겠습니다. 네.. 우리 모두가 알고 있는 31번 확진자가 나타난 것입니다.ㅠㅠ. 역학적 유의미한 접촉이 무려 1160명..ㅠㅠ. 단 혼자서.ㅠㅠ. 대구의 방역을 뚫은 날짜로 기록되겠네요. 여기서부터 많은 분들이 아마 신천지에 관심을 가지기 시작하셨을 겁니다.

일일 확진자, 누적 확진자, 접촉자 수를 하나의 그래프에 표현해봤습니다.

다시, 데이터를 조금 다른 각도에서 보기위해 다시 정리했습니다.  이번에는 감염 지역 기준입니다.

그리고 날짜형 데이터를 일반 문자로 손을 좀 보고, 지도 시각화를 위해 size를 일일 확진자의 천배로 두겠습니다.

먼저 감염 지역입니다.

각 감염지역을 지도에 표현하기 위해 위도와 경도 정보를 대표값으로 지정했습니다. 여기서 잠깐 이야기해야할 것이 kaggle에 공개된 데이터는 3월 들어서 데이터가 급증하는 순간부터 대다수의 데이터가 정리되지 않은 상태로 올라왔습니다. 특히 감염 지역 정보가 그렇습니다. 그러나 지금 코드를 만져두면 곧 데이터가 업데이트 되면 다시 정리할 수 있을거라 보고 그냥 진행을 해두겠습니다.

plotly.express의 scatter_geo를 이용하면 간단히 지도 시각화에 대한 애니메이션이 가능합니다.

이렇게 말이죠. 단 몇 주만에 우리는 무서운 경험을 하고 있습니다.

이번에는 감염이유를 보겠습니다.

감염이유의 가장 큰 부분은 확진자와의 접촉입니다. 당연히 격리 조치는 아주 필요한 행동입니다. 이에 반발하는 경우는 없어야할 것 같습니다. 두번째는 안타깝게도 대구 방문이네요. 아마 이는 대구에서 누구를 만났는지를 확정할 수 없어서 일겁니다. 다시 말씀드리지만 지금 이 부분은 3월부터 급증하던 데이터를 반영하고 있지 못합니다.

그래도 우한 방문자는 추려보겠습니다. 놀랍게도, 우한 방문자중 중국인은 두 명입니다.(아까도 이야기했지만) 나머지는 한국인군요.

대구 방문자를 보면, 이런, 신천지라는 종교의 이름이 너무 눈에 띕니다.

신천지는 현재 코라나 바이러스에 큰 영향을 미치고 있는 것이 분명합니다.

이번에는 다시 지역별로 데이터를 정리하겠습니다.

이런 그래프로 한 번 들여다 보려고 한 거죠. 아직은 의미가 없습니다. 현재 질병관리본부에서 배포하는 보도 내용이 데이터의 후반부에 반영되지 않아서 대구 데이터가 아직 작습니다.

지금 부터는 데이터를 변경합니다. 그리고 이 데이터부터는 Kaggle의 한 Kernel의 코드를 제가 궁금한 부분만 발췌했습니다.

이번에는 글로벌 데이터를 들여다 보겠습니다. 지금 부터의 글은 바로 위에서 이야기한데로 현재 1위인 커널에서 제가 궁금한 부분만 (아주 일부분) 변경해서 들여다 본것입니다.

네.. 이야기한데로 글로벌 데이터를 받아와서 사망자순으로 정리해서 보겠습니다. 우리나라는 확진자는 2위이지만, 사망자는 4번째입니다. 여기서 이 수치는 제가 의학은 모르지만, 분명 우리나라 의료진, 방역당국의 엄청난 노력이 들어간 것이고, 분명 현재 우리나라 당국의 활동이 유효하다는 반증이라고 생각합니다.

이번에는 확진자를 bar그래프로 보면 네.. 우리나라가 두 번째입니다. 하나의 그래프에 넣기 위해 저렇게 넣었지만, 실제는 중국이 엄청 높습니다. 이는 y축에 log scale을 적용했기 때문입니다.

네 이야기 드린데로 사망자는 네 번째입니다.

이번에는 저도 소개한 적이 있는 folium을 통해 지도에 표현했습니다.

네.. 현시점, 전 세계가 조심해야할 것 같습니다.ㅠㅠ.

이번에는 날짜면 혹산 추이입니다.

이걸 보면 이번 신종 코로나는 분명 중국에서 시작되어 주변, 전세계로 퍼져나가고 있다는 것을 확실히 알 수 있습니다.

이 상황은 누군가의 말대로 국란인것 같습니다. 그러나 저는 이번 글을 작성하면서 우리나라가 정말 잘 싸우고 있다는 생각을 하게 되었습니다. 화이팅 코리아~
반응형