Covid 19 from John Hopkins Dataset
- 데이터 셋 : https://www.kaggle.com/antgoldbloom/covid19-data-from-john-hopkins-university
- 실시간으로 업데이트 되는 라이브 데이터
- 시계열 데이터가 있음. (시간별 변화 추이가 중요)
라이브러리 및 데이터 불러오기
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df_case = pd.read_csv('RAW_global_confirmed_cases.csv')
df_death = pd.read_csv('RAW_global_deaths.csv')
pd.set_option('display.max_columns', None)
df_case.head()
Country/Region | Province/State | Lat | Long | 1/22/20 | 1/23/20 | 1/24/20 | 1/25/20 | 1/26/20 | 1/27/20 | 1/28/20 | 1/29/20 | 1/30/20 | 1/31/20 | 2/1/20 | 2/2/20 | 2/3/20 | 2/4/20 | 2/5/20 | 2/6/20 | 2/7/20 | 2/8/20 | 2/9/20 | 2/10/20 | 2/11/20 | 2/12/20 | 2/13/20 | 2/14/20 | 2/15/20 | 2/16/20 | 2/17/20 | 2/18/20 | 2/19/20 | 2/20/20 | 2/21/20 | 2/22/20 | 2/23/20 | 2/24/20 | 2/25/20 | 2/26/20 | 2/27/20 | 2/28/20 | 2/29/20 | 3/1/20 | 3/2/20 | 3/3/20 | 3/4/20 | 3/5/20 | 3/6/20 | 3/7/20 | 3/8/20 | 3/9/20 | 3/10/20 | 3/11/20 | 3/12/20 | 3/13/20 | 3/14/20 | 3/15/20 | 3/16/20 | 3/17/20 | 3/18/20 | 3/19/20 | 3/20/20 | 3/21/20 | 3/22/20 | 3/23/20 | 3/24/20 | 3/25/20 | 3/26/20 | 3/27/20 | 3/28/20 | 3/29/20 | 3/30/20 | 3/31/20 | 4/1/20 | 4/2/20 | 4/3/20 | 4/4/20 | 4/5/20 | 4/6/20 | 4/7/20 | 4/8/20 | 4/9/20 | 4/10/20 | 4/11/20 | 4/12/20 | 4/13/20 | 4/14/20 | 4/15/20 | 4/16/20 | 4/17/20 | 4/18/20 | 4/19/20 | 4/20/20 | 4/21/20 | 4/22/20 | 4/23/20 | 4/24/20 | 4/25/20 | 4/26/20 | 4/27/20 | 4/28/20 | 4/29/20 | 4/30/20 | 5/1/20 | 5/2/20 | 5/3/20 | 5/4/20 | 5/5/20 | 5/6/20 | 5/7/20 | 5/8/20 | 5/9/20 | 5/10/20 | 5/11/20 | 5/12/20 | 5/13/20 | 5/14/20 | 5/15/20 | 5/16/20 | 5/17/20 | 5/18/20 | 5/19/20 | 5/20/20 | 5/21/20 | 5/22/20 | 5/23/20 | 5/24/20 | 5/25/20 | 5/26/20 | 5/27/20 | 5/28/20 | 5/29/20 | 5/30/20 | 5/31/20 | 6/1/20 | 6/2/20 | 6/3/20 | 6/4/20 | 6/5/20 | 6/6/20 | 6/7/20 | 6/8/20 | 6/9/20 | 6/10/20 | 6/11/20 | 6/12/20 | 6/13/20 | 6/14/20 | 6/15/20 | 6/16/20 | 6/17/20 | 6/18/20 | 6/19/20 | 6/20/20 | 6/21/20 | 6/22/20 | 6/23/20 | 6/24/20 | 6/25/20 | 6/26/20 | 6/27/20 | 6/28/20 | 6/29/20 | 6/30/20 | 7/1/20 | 7/2/20 | 7/3/20 | 7/4/20 | 7/5/20 | 7/6/20 | 7/7/20 | 7/8/20 | 7/9/20 | 7/10/20 | 7/11/20 | 7/12/20 | 7/13/20 | 7/14/20 | 7/15/20 | 7/16/20 | 7/17/20 | 7/18/20 | 7/19/20 | 7/20/20 | 7/21/20 | 7/22/20 | 7/23/20 | 7/24/20 | 7/25/20 | 7/26/20 | 7/27/20 | 7/28/20 | 7/29/20 | 7/30/20 | 7/31/20 | 8/1/20 | 8/2/20 | 8/3/20 | 8/4/20 | 8/5/20 | 8/6/20 | 8/7/20 | 8/8/20 | 8/9/20 | 8/10/20 | 8/11/20 | 8/12/20 | 8/13/20 | 8/14/20 | 8/15/20 | 8/16/20 | 8/17/20 | 8/18/20 | 8/19/20 | 8/20/20 | 8/21/20 | 8/22/20 | 8/23/20 | 8/24/20 | 8/25/20 | 8/26/20 | 8/27/20 | 8/28/20 | 8/29/20 | 8/30/20 | 8/31/20 | 9/1/20 | 9/2/20 | 9/3/20 | 9/4/20 | 9/5/20 | 9/6/20 | 9/7/20 | 9/8/20 | 9/9/20 | 9/10/20 | 9/11/20 | 9/12/20 | 9/13/20 | 9/14/20 | 9/15/20 | 9/16/20 | 9/17/20 | 9/18/20 | 9/19/20 | 9/20/20 | 9/21/20 | 9/22/20 | 9/23/20 | 9/24/20 | 9/25/20 | 9/26/20 | 9/27/20 | 9/28/20 | 9/29/20 | 9/30/20 | 10/1/20 | 10/2/20 | 10/3/20 | 10/4/20 | 10/5/20 | 10/6/20 | 10/7/20 | 10/8/20 | 10/9/20 | 10/10/20 | 10/11/20 | 10/12/20 | 10/13/20 | 10/14/20 | 10/15/20 | 10/16/20 | 10/17/20 | 10/18/20 | 10/19/20 | 10/20/20 | 10/21/20 | 10/22/20 | 10/23/20 | 10/24/20 | 10/25/20 | 10/26/20 | 10/27/20 | 10/28/20 | 10/29/20 | 10/30/20 | 10/31/20 | 11/1/20 | 11/2/20 | 11/3/20 | 11/4/20 | 11/5/20 | 11/6/20 | 11/7/20 | 11/8/20 | 11/9/20 | 11/10/20 | 11/11/20 | 11/12/20 | 11/13/20 | 11/14/20 | 11/15/20 | 11/16/20 | 11/17/20 | 11/18/20 | 11/19/20 | 11/20/20 | 11/21/20 | 11/22/20 | 11/23/20 | 11/24/20 | 11/25/20 | 11/26/20 | 11/27/20 | 11/28/20 | 11/29/20 | 11/30/20 | 12/1/20 | 12/2/20 | 12/3/20 | 12/4/20 | 12/5/20 | 12/6/20 | 12/7/20 | 12/8/20 | 12/9/20 | 12/10/20 | 12/11/20 | 12/12/20 | 12/13/20 | 12/14/20 | 12/15/20 | 12/16/20 | 12/17/20 | 12/18/20 | 12/19/20 | 12/20/20 | 12/21/20 | 12/22/20 | 12/23/20 | 12/24/20 | 12/25/20 | 12/26/20 | 12/27/20 | 12/28/20 | 12/29/20 | 12/30/20 | 12/31/20 | 1/1/21 | 1/2/21 | 1/3/21 | 1/4/21 | 1/5/21 | 1/6/21 | 1/7/21 | 1/8/21 | 1/9/21 | 1/10/21 | 1/11/21 | 1/12/21 | 1/13/21 | 1/14/21 | 1/15/21 | 1/16/21 | 1/17/21 | 1/18/21 | 1/19/21 | 1/20/21 | 1/21/21 | 1/22/21 | 1/23/21 | 1/24/21 | 1/25/21 | 1/26/21 | 1/27/21 | 1/28/21 | 1/29/21 | 1/30/21 | 1/31/21 | 2/1/21 | 2/2/21 | 2/3/21 | 2/4/21 | 2/5/21 | 2/6/21 | 2/7/21 | 2/8/21 | 2/9/21 | 2/10/21 | 2/11/21 | 2/12/21 | 2/13/21 | 2/14/21 | 2/15/21 | 2/16/21 | 2/17/21 | 2/18/21 | 2/19/21 | 2/20/21 | 2/21/21 | 2/22/21 | 2/23/21 | 2/24/21 | 2/25/21 | 2/26/21 | 2/27/21 | 2/28/21 | 3/1/21 | 3/2/21 | 3/3/21 | 3/4/21 | 3/5/21 | 3/6/21 | 3/7/21 | 3/8/21 | 3/9/21 | 3/10/21 | 3/11/21 | 3/12/21 | 3/13/21 | 3/14/21 | 3/15/21 | 3/16/21 | 3/17/21 | 3/18/21 | 3/19/21 | 3/20/21 | 3/21/21 | 3/22/21 | 3/23/21 | 3/24/21 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | NaN | 33.93911 | 67.709953 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 4 | 4 | 4 | 4 | 5 | 7 | 8 | 11 | 12 | 13 | 15 | 16 | 18 | 20 | 24 | 25 | 29 | 30 | 34 | 41 | 43 | 76 | 80 | 91 | 107 | 118 | 146 | 175 | 197 | 240 | 275 | 300 | 338 | 368 | 424 | 445 | 485 | 532 | 556 | 608 | 666 | 715 | 785 | 841 | 907 | 934 | 997 | 1027 | 1093 | 1177 | 1236 | 1331 | 1464 | 1532 | 1704 | 1830 | 1940 | 2127 | 2291 | 2470 | 2705 | 2895 | 3225 | 3393 | 3564 | 3781 | 4042 | 4403 | 4687 | 4968 | 5227 | 5640 | 6054 | 6403 | 6665 | 7073 | 7654 | 8146 | 8677 | 9219 | 10001 | 10585 | 11176 | 11834 | 12459 | 13039 | 13662 | 14528 | 15208 | 15753 | 16512 | 17270 | 18057 | 18972 | 19554 | 20345 | 20920 | 21462 | 22146 | 22894 | 23550 | 24106 | 24770 | 25531 | 26314 | 26878 | 27536 | 27882 | 28428 | 28837 | 29147 | 29471 | 29705 | 30165 | 30441 | 30606 | 30957 | 31228 | 31507 | 31826 | 32012 | 32314 | 32662 | 32941 | 33180 | 33374 | 33584 | 33898 | 34184 | 34356 | 34441 | 34595 | 34730 | 34984 | 35060 | 35219 | 35279 | 35453 | 35493 | 35605 | 35717 | 35918 | 35978 | 36026 | 36147 | 36253 | 36358 | 36463 | 36532 | 36665 | 36700 | 36701 | 36737 | 36773 | 36820 | 36928 | 37006 | 37046 | 37083 | 37153 | 37260 | 37336 | 37422 | 37497 | 37542 | 37590 | 37667 | 37710 | 37750 | 37852 | 37885 | 37944 | 37990 | 38045 | 38061 | 38103 | 38119 | 38130 | 38133 | 38155 | 38159 | 38193 | 38243 | 38288 | 38304 | 38324 | 38398 | 38494 | 38520 | 38544 | 38572 | 38606 | 38641 | 38716 | 38772 | 38815 | 38855 | 38872 | 38897 | 38919 | 39044 | 39074 | 39096 | 39145 | 39170 | 39186 | 39192 | 39227 | 39239 | 39254 | 39268 | 39285 | 39290 | 39297 | 39341 | 39422 | 39486 | 39548 | 39616 | 39693 | 39703 | 39799 | 39870 | 39928 | 39994 | 40026 | 40088 | 40141 | 40200 | 40287 | 40369 | 40510 | 40626 | 40687 | 40768 | 40833 | 40937 | 41032 | 41145 | 41268 | 41334 | 41425 | 41501 | 41633 | 41728 | 41814 | 41935 | 41975 | 42033 | 42159 | 42297 | 42463 | 42609 | 42795 | 42969 | 43035 | 43240 | 43468 | 43681 | 43924 | 44177 | 44363 | 44503 | 44706 | 44988 | 45174 | 45384 | 45600 | 45723 | 45844 | 46116 | 46274 | 46516 | 46718 | 46837 | 46837 | 47072 | 47306 | 47516 | 47716 | 47851 | 48053 | 48116 | 48229 | 48527 | 48718 | 48952 | 49161 | 49378 | 49621 | 49681 | 49817 | 50013 | 50190 | 50433 | 50655 | 50810 | 50886 | 51039 | 51280 | 51350 | 51405 | 51526 | 51526 | 51526 | 51526 | 53011 | 53105 | 53105 | 53207 | 53332 | 53400 | 53489 | 53538 | 53584 | 53584 | 53775 | 53831 | 53938 | 53984 | 54062 | 54141 | 54278 | 54403 | 54483 | 54559 | 54595 | 54672 | 54750 | 54854 | 54891 | 54939 | 55008 | 55023 | 55059 | 55121 | 55174 | 55231 | 55265 | 55330 | 55335 | 55359 | 55384 | 55402 | 55420 | 55445 | 55473 | 55492 | 55514 | 55518 | 55540 | 55557 | 55575 | 55580 | 55604 | 55617 | 55646 | 55664 | 55680 | 55696 | 55707 | 55714 | 55733 | 55759 | 55770 | 55775 | 55827 | 55840 | 55847 | 55876 | 55876 | 55894 | 55917 | 55959 | 55959 | 55985 | 55985 | 55995 | 56016 | 56044 | 56069 | 56093 | 56103 | 56153 | 56177 | 56192 |
1 | Albania | NaN | 41.15330 | 20.168300 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 10 | 12 | 23 | 33 | 38 | 42 | 51 | 55 | 59 | 64 | 70 | 76 | 89 | 104 | 123 | 146 | 174 | 186 | 197 | 212 | 223 | 243 | 259 | 277 | 304 | 333 | 361 | 377 | 383 | 400 | 409 | 416 | 433 | 446 | 467 | 475 | 494 | 518 | 539 | 548 | 562 | 584 | 609 | 634 | 663 | 678 | 712 | 726 | 736 | 750 | 766 | 773 | 782 | 789 | 795 | 803 | 820 | 832 | 842 | 850 | 856 | 868 | 872 | 876 | 880 | 898 | 916 | 933 | 946 | 948 | 949 | 964 | 969 | 981 | 989 | 998 | 1004 | 1029 | 1050 | 1076 | 1099 | 1122 | 1137 | 1143 | 1164 | 1184 | 1197 | 1212 | 1232 | 1246 | 1263 | 1299 | 1341 | 1385 | 1416 | 1464 | 1521 | 1590 | 1672 | 1722 | 1788 | 1838 | 1891 | 1962 | 1995 | 2047 | 2114 | 2192 | 2269 | 2330 | 2402 | 2466 | 2535 | 2580 | 2662 | 2752 | 2819 | 2893 | 2964 | 3038 | 3106 | 3188 | 3278 | 3371 | 3454 | 3571 | 3667 | 3752 | 3851 | 3906 | 4008 | 4090 | 4171 | 4290 | 4358 | 4466 | 4570 | 4637 | 4763 | 4880 | 4997 | 5105 | 5197 | 5276 | 5396 | 5519 | 5620 | 5750 | 5889 | 6016 | 6151 | 6275 | 6411 | 6536 | 6676 | 6817 | 6971 | 7117 | 7260 | 7380 | 7499 | 7654 | 7812 | 7967 | 8119 | 8275 | 8427 | 8605 | 8759 | 8927 | 9083 | 9195 | 9279 | 9380 | 9513 | 9606 | 9728 | 9844 | 9967 | 10102 | 10255 | 10406 | 10553 | 10704 | 10860 | 11021 | 11185 | 11353 | 11520 | 11672 | 11816 | 11948 | 12073 | 12226 | 12385 | 12535 | 12666 | 12787 | 12921 | 13045 | 13153 | 13259 | 13391 | 13518 | 13649 | 13806 | 13965 | 14117 | 14266 | 14410 | 14568 | 14730 | 14899 | 15066 | 15231 | 15399 | 15570 | 15752 | 15955 | 16212 | 16501 | 16774 | 17055 | 17350 | 17651 | 17948 | 18250 | 18556 | 18858 | 19157 | 19445 | 19729 | 20040 | 20315 | 20634 | 20875 | 21202 | 21523 | 21904 | 22300 | 22721 | 23210 | 23705 | 24206 | 24731 | 25294 | 25801 | 26211 | 26701 | 27233 | 27830 | 28432 | 29126 | 29837 | 30623 | 31459 | 32196 | 32761 | 33556 | 34300 | 34944 | 35600 | 36245 | 36790 | 37625 | 38182 | 39014 | 39719 | 40501 | 41302 | 42148 | 42988 | 43683 | 44436 | 45188 | 46061 | 46863 | 47742 | 48530 | 49191 | 50000 | 50637 | 51424 | 52004 | 52542 | 53003 | 53425 | 53814 | 54317 | 54827 | 55380 | 55755 | 56254 | 56572 | 57146 | 57727 | 58316 | 58316 | 58991 | 59438 | 59623 | 60283 | 61008 | 61705 | 62378 | 63033 | 63595 | 63971 | 64627 | 65334 | 65994 | 66635 | 67216 | 67690 | 67982 | 68568 | 69238 | 69916 | 70655 | 71441 | 72274 | 72812 | 73691 | 74567 | 75454 | 76350 | 77251 | 78127 | 78992 | 79934 | 80941 | 81993 | 83082 | 84212 | 85336 | 86289 | 87528 | 88671 | 89776 | 90835 | 91987 | 93075 | 93850 | 94651 | 95726 | 96838 | 97909 | 99062 | 100246 | 101285 | 102306 | 103327 | 104313 | 105229 | 106215 | 107167 | 107931 | 108823 | 109674 | 110521 | 111301 | 112078 | 112897 | 113580 | 114209 | 114840 | 115442 | 116123 | 116821 | 117474 | 118017 | 118492 | 118938 | 119528 | 120022 | 120541 | 121200 | 121544 | 121847 | 122295 |
2 | Algeria | NaN | 28.03390 | 1.659600 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 5 | 12 | 12 | 17 | 17 | 19 | 20 | 20 | 20 | 24 | 26 | 37 | 48 | 54 | 60 | 74 | 87 | 90 | 139 | 201 | 230 | 264 | 302 | 367 | 409 | 454 | 511 | 584 | 716 | 847 | 986 | 1171 | 1251 | 1320 | 1423 | 1468 | 1572 | 1666 | 1761 | 1825 | 1914 | 1983 | 2070 | 2160 | 2268 | 2418 | 2534 | 2629 | 2718 | 2811 | 2910 | 3007 | 3127 | 3256 | 3382 | 3517 | 3649 | 3848 | 4006 | 4154 | 4295 | 4474 | 4648 | 4838 | 4997 | 5182 | 5369 | 5558 | 5723 | 5891 | 6067 | 6253 | 6442 | 6629 | 6821 | 7019 | 7201 | 7377 | 7542 | 7728 | 7918 | 8113 | 8306 | 8503 | 8697 | 8857 | 8997 | 9134 | 9267 | 9394 | 9513 | 9626 | 9733 | 9831 | 9935 | 10050 | 10154 | 10265 | 10382 | 10484 | 10589 | 10698 | 10810 | 10919 | 11031 | 11147 | 11268 | 11385 | 11504 | 11631 | 11771 | 11920 | 12076 | 12248 | 12445 | 12685 | 12968 | 13273 | 13571 | 13907 | 14272 | 14657 | 15070 | 15500 | 15941 | 16404 | 16879 | 17348 | 17808 | 18242 | 18712 | 19195 | 19689 | 20216 | 20770 | 21355 | 21948 | 22549 | 23084 | 23691 | 24278 | 24872 | 25484 | 26159 | 26764 | 27357 | 27973 | 28615 | 29229 | 29831 | 30394 | 30950 | 31465 | 31972 | 32504 | 33055 | 33626 | 34155 | 34693 | 35160 | 35712 | 36204 | 36699 | 37187 | 37664 | 38133 | 38583 | 39025 | 39444 | 39847 | 40258 | 40667 | 41068 | 41460 | 41858 | 42228 | 42619 | 43016 | 43403 | 43781 | 44146 | 44494 | 44833 | 45158 | 45469 | 45773 | 46071 | 46364 | 46653 | 46938 | 47216 | 47488 | 47752 | 48007 | 48254 | 48496 | 48734 | 48966 | 49194 | 49413 | 49623 | 49826 | 50023 | 50214 | 50400 | 50579 | 50754 | 50914 | 51067 | 51213 | 51368 | 51530 | 51690 | 51847 | 51995 | 52136 | 52270 | 52399 | 52520 | 52658 | 52804 | 52940 | 53072 | 53325 | 53399 | 53584 | 53777 | 53998 | 54203 | 54402 | 54616 | 54829 | 55081 | 55357 | 55630 | 55880 | 56143 | 56419 | 56706 | 57026 | 57332 | 57651 | 57942 | 58272 | 58574 | 58979 | 59527 | 60169 | 60800 | 61381 | 62051 | 62693 | 63446 | 64257 | 65108 | 65975 | 66819 | 67679 | 68589 | 69591 | 70629 | 71652 | 72755 | 73774 | 74862 | 75867 | 77000 | 78025 | 79110 | 80168 | 81212 | 82221 | 83199 | 84152 | 85084 | 85927 | 86730 | 87502 | 88252 | 88825 | 89416 | 90014 | 90579 | 91121 | 91638 | 92102 | 92597 | 93065 | 93507 | 93933 | 94371 | 94781 | 95203 | 95659 | 96069 | 96549 | 97007 | 97441 | 97857 | 98249 | 98631 | 98988 | 99311 | 99610 | 99897 | 100159 | 100408 | 100645 | 100873 | 101120 | 101382 | 101657 | 101913 | 102144 | 102369 | 102641 | 102860 | 103127 | 103381 | 103611 | 103833 | 104092 | 104341 | 104606 | 104852 | 105124 | 105369 | 105596 | 105854 | 106097 | 106359 | 106610 | 106887 | 107122 | 107339 | 107578 | 107841 | 108116 | 108381 | 108629 | 108629 | 109088 | 109313 | 109559 | 109782 | 110049 | 110303 | 110513 | 110711 | 110894 | 111069 | 111247 | 111418 | 111600 | 111764 | 111917 | 112094 | 112279 | 112461 | 112622 | 112805 | 112960 | 113092 | 113255 | 113430 | 113593 | 113761 | 113948 | 114104 | 114234 | 114382 | 114543 | 114681 | 114851 | 115008 | 115143 | 115265 | 115410 | 115540 | 115688 | 115842 | 115970 | 116066 | 116157 | 116255 | 116349 | 116438 |
3 | Andorra | NaN | 42.50630 | 1.521800 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 39 | 39 | 53 | 75 | 88 | 113 | 133 | 164 | 188 | 224 | 267 | 308 | 334 | 370 | 376 | 390 | 428 | 439 | 466 | 501 | 525 | 545 | 564 | 583 | 601 | 601 | 638 | 646 | 659 | 673 | 673 | 696 | 704 | 713 | 717 | 717 | 723 | 723 | 731 | 738 | 738 | 743 | 743 | 743 | 745 | 745 | 747 | 748 | 750 | 751 | 751 | 752 | 752 | 754 | 755 | 755 | 758 | 760 | 761 | 761 | 761 | 761 | 761 | 761 | 762 | 762 | 762 | 762 | 762 | 763 | 763 | 763 | 763 | 764 | 764 | 764 | 765 | 844 | 851 | 852 | 852 | 852 | 852 | 852 | 852 | 852 | 852 | 853 | 853 | 853 | 853 | 854 | 854 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 855 | 858 | 861 | 862 | 877 | 880 | 880 | 880 | 884 | 884 | 889 | 889 | 897 | 897 | 897 | 907 | 907 | 918 | 922 | 925 | 925 | 925 | 937 | 939 | 939 | 944 | 955 | 955 | 955 | 963 | 963 | 977 | 981 | 989 | 989 | 989 | 1005 | 1005 | 1024 | 1024 | 1045 | 1045 | 1045 | 1060 | 1060 | 1098 | 1098 | 1124 | 1124 | 1124 | 1176 | 1184 | 1199 | 1199 | 1215 | 1215 | 1215 | 1261 | 1261 | 1301 | 1301 | 1344 | 1344 | 1344 | 1438 | 1438 | 1483 | 1483 | 1564 | 1564 | 1564 | 1681 | 1681 | 1753 | 1753 | 1836 | 1836 | 1836 | 1966 | 1966 | 2050 | 2050 | 2110 | 2110 | 2110 | 2370 | 2370 | 2568 | 2568 | 2696 | 2696 | 2696 | 2995 | 2995 | 3190 | 3190 | 3377 | 3377 | 3377 | 3623 | 3623 | 3811 | 3811 | 4038 | 4038 | 4038 | 4325 | 4410 | 4517 | 4567 | 4665 | 4756 | 4825 | 4888 | 4910 | 5045 | 5135 | 5135 | 5319 | 5383 | 5437 | 5477 | 5567 | 5616 | 5725 | 5725 | 5872 | 5914 | 5951 | 6018 | 6066 | 6142 | 6207 | 6256 | 6304 | 6351 | 6428 | 6534 | 6610 | 6610 | 6712 | 6745 | 6790 | 6842 | 6904 | 6955 | 7005 | 7050 | 7084 | 7127 | 7162 | 7190 | 7236 | 7288 | 7338 | 7382 | 7382 | 7446 | 7466 | 7519 | 7560 | 7577 | 7602 | 7633 | 7669 | 7699 | 7756 | 7806 | 7821 | 7875 | 7919 | 7983 | 8049 | 8117 | 8166 | 8192 | 8249 | 8308 | 8348 | 8348 | 8489 | 8586 | 8586 | 8586 | 8682 | 8818 | 8868 | 8946 | 9038 | 9083 | 9083 | 9194 | 9308 | 9379 | 9416 | 9499 | 9549 | 9596 | 9638 | 9716 | 9779 | 9837 | 9885 | 9937 | 9972 | 10017 | 10070 | 10137 | 10172 | 10206 | 10251 | 10275 | 10312 | 10352 | 10391 | 10427 | 10463 | 10503 | 10538 | 10555 | 10583 | 10610 | 10645 | 10672 | 10699 | 10712 | 10739 | 10775 | 10799 | 10822 | 10849 | 10866 | 10889 | 10908 | 10948 | 10976 | 10998 | 11019 | 11042 | 11069 | 11089 | 11130 | 11130 | 11199 | 11228 | 11266 | 11289 | 11319 | 11360 | 11393 | 11431 | 11481 | 11517 | 11545 | 11591 | 11638 |
4 | Angola | NaN | -11.20270 | 17.873900 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 2 | 3 | 3 | 3 | 4 | 4 | 5 | 7 | 7 | 7 | 8 | 8 | 8 | 10 | 14 | 16 | 17 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 19 | 24 | 24 | 24 | 24 | 25 | 25 | 25 | 25 | 26 | 27 | 27 | 27 | 27 | 30 | 35 | 35 | 35 | 36 | 36 | 36 | 43 | 43 | 45 | 45 | 45 | 45 | 48 | 48 | 48 | 48 | 50 | 52 | 52 | 58 | 60 | 61 | 69 | 70 | 70 | 71 | 74 | 81 | 84 | 86 | 86 | 86 | 86 | 86 | 86 | 88 | 91 | 92 | 96 | 113 | 118 | 130 | 138 | 140 | 142 | 148 | 155 | 166 | 172 | 176 | 183 | 186 | 189 | 197 | 212 | 212 | 259 | 267 | 276 | 284 | 291 | 315 | 328 | 346 | 346 | 346 | 386 | 386 | 396 | 458 | 462 | 506 | 525 | 541 | 576 | 607 | 638 | 687 | 705 | 749 | 779 | 812 | 851 | 880 | 916 | 932 | 950 | 1000 | 1078 | 1109 | 1148 | 1164 | 1199 | 1280 | 1344 | 1395 | 1483 | 1538 | 1572 | 1672 | 1679 | 1735 | 1762 | 1815 | 1852 | 1879 | 1906 | 1935 | 1966 | 2015 | 2044 | 2068 | 2134 | 2171 | 2222 | 2283 | 2332 | 2415 | 2471 | 2551 | 2624 | 2654 | 2729 | 2777 | 2805 | 2876 | 2935 | 2965 | 2981 | 3033 | 3092 | 3217 | 3279 | 3335 | 3388 | 3439 | 3569 | 3675 | 3789 | 3848 | 3901 | 3991 | 4117 | 4236 | 4363 | 4475 | 4590 | 4672 | 4718 | 4797 | 4905 | 4972 | 5114 | 5211 | 5370 | 5402 | 5530 | 5725 | 5725 | 5958 | 6031 | 6246 | 6366 | 6488 | 6680 | 6846 | 7096 | 7222 | 7462 | 7622 | 7829 | 8049 | 8338 | 8582 | 8829 | 9026 | 9381 | 9644 | 9871 | 10074 | 10269 | 10558 | 10805 | 11035 | 11228 | 11577 | 11813 | 12102 | 12223 | 12335 | 12433 | 12680 | 12816 | 12953 | 13053 | 13228 | 13374 | 13451 | 13615 | 13818 | 13922 | 14134 | 14267 | 14413 | 14493 | 14634 | 14742 | 14821 | 14920 | 15008 | 15087 | 15103 | 15139 | 15251 | 15319 | 15361 | 15493 | 15536 | 15591 | 15648 | 15729 | 15804 | 15925 | 16061 | 16161 | 16188 | 16277 | 16362 | 16407 | 16484 | 16562 | 16626 | 16644 | 16686 | 16802 | 16931 | 17029 | 17099 | 17149 | 17240 | 17296 | 17371 | 17433 | 17553 | 17568 | 17608 | 17642 | 17684 | 17756 | 17864 | 17974 | 18066 | 18156 | 18193 | 18254 | 18343 | 18425 | 18613 | 18679 | 18765 | 18875 | 18926 | 19011 | 19093 | 19177 | 19269 | 19367 | 19399 | 19476 | 19553 | 19580 | 19672 | 19723 | 19782 | 19796 | 19829 | 19900 | 19937 | 19996 | 20030 | 20062 | 20086 | 20112 | 20163 | 20210 | 20261 | 20294 | 20329 | 20366 | 20381 | 20389 | 20400 | 20452 | 20478 | 20499 | 20519 | 20548 | 20584 | 20640 | 20695 | 20759 | 20782 | 20807 | 20854 | 20882 | 20923 | 20981 | 21026 | 21055 | 21086 | 21108 | 21114 | 21161 | 21205 | 21265 | 21323 | 21380 | 21407 | 21446 | 21489 | 21558 | 21642 | 21696 | 21733 | 21757 | 21774 | 21836 |
데이터 구조 변경, 시각화
- 위-경도 사용하지 않고 큰 나라의 경우 지방이 많아 나뉘어져 있는데 묶어서 분석하는것이 용이할 듯.
- date columns이 단순 문자열로 입력되어 있는데 이를 datetime 객체로 변환하여 date가 index가 되도록 변경.
구조변경
df_case['Country/Region'].value_counts()
China 33
Canada 16
United Kingdom 12
France 12
Australia 8
..
Ethiopia 1
Montenegro 1
Uzbekistan 1
Nicaragua 1
Chad 1
Name: Country/Region, Length: 192, dtype: int64
def fix_dataframe(df):
df = df.drop(['Lat', 'Long'], axis=1).groupby('Country/Region').sum()
# 나라 기준으로 묶고 Province당 경우를 합하여 표현한다.
df = df.transpose()
# 날짜가 인덱스가 되게끔 바꾸어준다.
df.index.name = 'Date'
df.reset_index(inplace=True)
df['Date'] = df['Date'].apply(lambda s : pd.to_datetime(str(s)))
df.set_index('Date', inplace=True)
return df
- 데이터 프레임 구조를 바꾸고 date를 datetime 타입으로 바꾸어 인덱스로 만드는 함수를 만들어준다.
df_case = fix_dataframe(df_case)
df_death = fix_dataframe(df_death)
시각화
# 확진자 상위 10개국
ten_cases = df_case.loc[df_case.index[-1]].sort_values(ascending=False)[:10]
ten_cases
Country/Region
US 30011839
Brazil 12220011
India 11787534
Russia 4433364
France 4374774
United Kingdom 4326645
Italy 3440862
Spain 3234319
Turkey 3091282
Germany 2722988
Name: 2021-03-24 00:00:00, dtype: int64
sns.barplot(x=ten_cases.index, y=ten_cases)
<matplotlib.axes._subplots.AxesSubplot at 0x211e06a8288>
ten_death = df_death.loc[df_death.index[-1]][ten_cases.index]
#sort_values 말고 확진자 10개국의 사망자를 확인해보자.
ten_death
Country/Region
US 545264
Brazil 300685
India 160692
Russia 94624
France 93083
United Kingdom 126621
Italy 106339
Spain 73744
Turkey 30462
Germany 75484
Name: 2021-03-24 00:00:00, dtype: int64
# 확진자와 사망자를 동시에 보여주기.
plt.figure(figsize=(7,5))
sns.barplot(x=ten_cases.index, y=ten_cases, color='black')
plt.xticks(rotation=90, size=15)
plt.ylabel('Total Confirmed Cases', size=15)
plt.xlabel('')
plt.title('Total Confirmed Cases (%s)' %ten_cases.name.strftime('%Y-%m-%d'), size=15)
ax = plt.gca()
ax2 = ax.twinx()
ax2.plot(ten_death.index, ten_death, 'r--')
ax2.set_ylabel('Total Deaths', color='red', size=15)
plt.show()
# 미국만 알아보자.
plt.figure(figsize=(10,7))
plt.plot(df_case.index, df_case['US'], 'b-')
plt.ylabel('Confirmed Cases', color='blue')
plt.xlabel('Date')
plt.xlim(right=df_case.index[-1])
plt.ylim(0, df_case['US'].max()*1.1)
plt.title('US' + 'Cases & Deaths')
ax = plt.gca()
ax2 = ax.twinx()
ax2.plot(df_death.index, df_death['US'], 'r--')
ax2.set_ylabel('Deaths', color='red')
ax2.set_ylim(0, df_death['US'].max()*1.3)
plt.show()
# 재미로 일본도
plt.figure(figsize=(6,4))
plt.plot(df_case.index, df_case['Japan'], 'b-')
plt.ylabel('Confirmed Cases', color='blue')
plt.xlabel('Date')
plt.xlim(right=df_case.index[-1])
plt.ylim(0, df_case['Japan'].max()*1.1)
plt.title('US' + 'Cases & Deaths')
ax = plt.gca()
ax2 = ax.twinx()
ax2.plot(df_death.index, df_death['Japan'], 'r--')
ax2.set_ylabel('Deaths', color='red')
ax2.set_ylim(0, df_death['Japan'].max()*1.3)
plt.show()
# 한국
plt.figure(figsize=(6,4))
plt.plot(df_case.index, df_case['Korea, South'], 'b-')
plt.ylabel('Confirmed Cases', color='blue')
plt.xlabel('Date')
plt.xlim(right=df_case.index[-1])
plt.ylim(0, df_case['Korea, South'].max()*1.1)
plt.title('US' + 'Cases & Deaths')
ax = plt.gca()
ax2 = ax.twinx()
ax2.plot(df_death.index, df_death['Korea, South'], 'r--')
ax2.set_ylabel('Deaths', color='red')
ax2.set_ylim(0, df_death['Korea, South'].max()*1.3)
plt.show()
# 누적 말고 일일데이터는?
plt.plot(df_case.index, df_case['Korea, South'].diff(), 'b-')
plt.ylabel('Confirmed Cases', color='blue')
plt.xlabel('Date')
plt.xlim(right=df_case.index[-1])
plt.ylim(bottom = 0)
plt.title('US' + 'Cases & Deaths')
ax = plt.gca()
ax2 = ax.twinx()
ax2.plot(df_death.index, df_death['Korea, South'].diff(), 'r--')
ax2.set_ylabel('Deaths', color='red')
ax2.set_ylim(bottom=0)
plt.show()
- diff()만 붙히면 해결되는데, diff는 기준과 그 전의 차이를 나타내고, df_case[나라]가 누적확진자이므로 일일확진자로 표현할 수 있다.
- 작년 3월 대구 사건이 2번째로 영향이 크다. 사망자는 당연하게도 확진자가 급증한 이후에 간격을두고 역시 늘어났다.
전처리
- FBProhphet 사용하기 위해 전처리
- FBProhphet 사용은 공식 레퍼런스를 참조 함 : https://facebook.github.io/prophet/docs/quick_start.html#python-api
df_case.reset_index()[['Date', 'Korea, South']]
Country/Region | Date | Korea, South |
---|---|---|
0 | 2020-01-22 | 1 |
1 | 2020-01-23 | 1 |
2 | 2020-01-24 | 2 |
3 | 2020-01-25 | 2 |
4 | 2020-01-26 | 3 |
... | ... | ... |
423 | 2021-03-20 | 98665 |
424 | 2021-03-21 | 99075 |
425 | 2021-03-22 | 99421 |
426 | 2021-03-23 | 99846 |
427 | 2021-03-24 | 100276 |
428 rows × 2 columns
df = pd.DataFrame(df_case.reset_index()[['Date', 'Korea, South']].to_numpy(), columns=['ds', 'y'])
df
ds | y | |
---|---|---|
0 | 2020-01-22 | 1 |
1 | 2020-01-23 | 1 |
2 | 2020-01-24 | 2 |
3 | 2020-01-25 | 2 |
4 | 2020-01-26 | 3 |
... | ... | ... |
423 | 2021-03-20 | 98665 |
424 | 2021-03-21 | 99075 |
425 | 2021-03-22 | 99421 |
426 | 2021-03-23 | 99846 |
427 | 2021-03-24 | 100276 |
428 rows × 2 columns
from math import floor
def train_test_split_df(df, test_size):
div = floor(df.shape[0] * (1 - test_size))
return df.loc[:div], df.loc[div + 1:]
train_df, test_df = train_test_split_df(df, 0.1)
train_df.shape
(386, 2)
train_df.tail()
ds | y | |
---|---|---|
381 | 2021-02-06 | 80896 |
382 | 2021-02-07 | 81185 |
383 | 2021-02-08 | 81487 |
384 | 2021-02-09 | 81930 |
385 | 2021-02-10 | 82434 |
test_df.head()
ds | y | |
---|---|---|
386 | 2021-02-11 | 82837 |
387 | 2021-02-12 | 83199 |
388 | 2021-02-13 | 83525 |
389 | 2021-02-14 | 83869 |
390 | 2021-02-15 | 84325 |
모델 학습(Prophet)
from fbprophet import Prophet
model = Prophet(changepoint_range = 1.0)
model.fit(train_df)
INFO:fbprophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.
INFO:fbprophet:Disabling daily seasonality. Run prophet with daily_seasonality=True to override this.
C:\Users\dissi\anaconda31\lib\site-packages\pystan\misc.py:399: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
elif np.issubdtype(np.asarray(v).dtype, float):
<fbprophet.forecaster.Prophet at 0x211e324c848>
from fbprophet.plot import add_changepoints_to_plot
pred = model.predict(test_df)
model.plot(pred);
model.plot_components(pred);
# 주마다 경향
fig = model.plot(pred)
plt.plot(test_df['ds'], test_df['y'], 'g-', label='actual')
add_changepoints_to_plot(fig.gca(), model, pred)
plt.legend()
<matplotlib.legend.Legend at 0x211e346c048>
- 실제랑 거의 동일
- 실제 양상이 변칙적인 상황없이 예상대로 흘러감을 뜻함.
모델평가
from sklearn.metrics import r2_score
print('R2 Score : ', r2_score(test_df['y'], pred['yhat']))
R2 Score : 0.9928405923770204
앞으로 30일 예측
model = Prophet(changepoint_range=1.0)
model.fit(df)
future = model.make_future_dataframe(30)
pred = model.predict(future)
model.plot(pred);
INFO:fbprophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.
INFO:fbprophet:Disabling daily seasonality. Run prophet with daily_seasonality=True to override this.
C:\Users\dissi\anaconda31\lib\site-packages\pystan\misc.py:399: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
elif np.issubdtype(np.asarray(v).dtype, float):
과거 데이터
- 몇 가지 특수한 사건을 통해 코로나가 급증하게 되었는데 만약 이 사건이 벌어지지 않았다면 지금쯤 어떤 양상을 보일지 분석해보고자 한다.
df.loc[26:32]
# 2월 20일 기준으로 급격히 늘어남.
ds | y | |
---|---|---|
26 | 2020-02-17 | 30 |
27 | 2020-02-18 | 31 |
28 | 2020-02-19 | 31 |
29 | 2020-02-20 | 104 |
30 | 2020-02-21 | 204 |
31 | 2020-02-22 | 433 |
32 | 2020-02-23 | 602 |
model = Prophet(changepoint_range=1.0)
model.fit(df.loc[:28])
future2 = model.make_future_dataframe(30)
pred = model.predict(future2)
model.plot(pred);
plt.plot(df.loc[:58]['ds'], df.loc[:58]['y'], 'g-')
plt.show()
INFO:fbprophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.
INFO:fbprophet:Disabling daily seasonality. Run prophet with daily_seasonality=True to override this.
C:\Users\dissi\anaconda31\lib\site-packages\pystan\misc.py:399: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
elif np.issubdtype(np.asarray(v).dtype, float):
- 극단적인 차이가 남.
- 작은사건 하나가 미치는 큰 영향을 확인할 수 있으며, 모든걸 통제하고 예측해야하는 방역 체계가 얼마나 힘든지 알 수 있다.
- 모두 조심한다고 해도 조그만 사건을 통해 이런 무서운 결과가 발생할 수 있음은 방역에 대한 매너리즘에서 빠져나올 수 있게 해준다.