{"id":727,"date":"2020-12-29T17:48:13","date_gmt":"2020-12-29T17:48:13","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=727"},"modified":"2020-12-29T17:52:57","modified_gmt":"2020-12-29T17:52:57","slug":"covid-19-naide","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/covid-19-naide\/","title":{"raw":"COVID-19 n\u00e4ide","rendered":"COVID-19 n\u00e4ide"},"content":{"raw":"Leidub avalikke andmetabeleid COVID-19 kohta. J\u00e4rgmises n\u00e4ites loome kaardi, kus on esitatud COVID-19 haigusjuhud riigiti kuup\u00e4eva j\u00e4rgi. Andmed loeme <em><a href=\"https:\/\/data.europa.eu\/euodp\/en\/data\/dataset\/covid-19-coronavirus-data\/resource\/260bbbde-2316-40eb-aec3-7cd7bfc2f590\">European Union Open Data Portal<\/a><\/em> lehelt. Loeme andmed Pandase mooduli abil. Esmalt v\u00e4ljastame tabeli esimesed ja viimased viis rida, et n\u00e4ha millised on andmed. Samuti uurime mitu veergu ja rida on tabelis.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport plotly.express as px\r\n\r\n# Andmed\r\nurl = 'https:\/\/opendata.ecdc.europa.eu\/covid19\/casedistribution\/csv'\r\n\r\ncsv = pd.read_csv(url)\r\n\r\nprint(csv.head())\r\n\r\nprint(csv.tail())\r\n\r\nprint(csv.shape)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n        dateRep  ...  Cumulative_number_for_14_days_of_COVID-19_cases_per_100000\r\n  0  13\/09\/2020  ...                                           1.309088         \r\n  1  12\/09\/2020  ...                                           1.224970         \r\n  2  11\/09\/2020  ...                                           1.164510         \r\n  3  10\/09\/2020  ...                                           1.098793         \r\n  4  09\/09\/2020  ...                                           1.180282         \r\n\r\n  [5 rows x 12 columns]\r\n            dateRep  ...  Cumulative_number_for_14_days_of_COVID-19_cases_per_100000\r\n  42459  25\/03\/2020  ...                                                NaN         \r\n  42460  24\/03\/2020  ...                                                NaN         \r\n  42461  23\/03\/2020  ...                                                NaN         \r\n  42462  22\/03\/2020  ...                                                NaN         \r\n  42463  21\/03\/2020  ...                                                NaN         \r\n\r\n  [5 rows x 12 columns]\r\n  (42464, 12)\r\n<\/pre>\r\nN\u00e4eme, et tabelis on 12 veergu ja \u00fcle 40000 rea (andmed seisuga 12.08.2020 ), kuid p\u00e4ris k\u00f5igi veergude nimesid ei kuvata. Lisaks on tabelis ka puuduvaid v\u00e4\u00e4rtusi (<code>NaN<\/code>) ja kuup\u00e4eva veerus (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dateRep<\/code>) ei ole kuup\u00e4evad kasvavas j\u00e4rjekorras. P\u00fc\u00fcame tabeli veerud leida. Kasutame veergude <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">columns<\/code> funktsiooni veergude nimede n\u00e4gemiseks.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.columns)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  Index(['dateRep', 'day', 'month', 'year', 'cases', 'deaths',\r\n   \t'countriesAndTerritories', 'geoId', 'countryterritoryCode',\r\n   \t'popData2019', 'continentExp',\r\n   \t'Cumulative_number_for_14_days_of_COVID-19_cases_per_100000'],\r\n  \tdtype='object')<\/pre>\r\n&nbsp;\r\n\r\nMeile on vaja andmed veergudest, kus on kuup\u00e4ev(<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dateRep<\/code>) ja haigusjuhud(<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">cases<\/code>). Lisaks on vaja ka riikide ISO koode, mille j\u00e4rgi \u00fchendatakse vastav riik andmestikus ja selle asukoht kaardil. Vaatame millised on andmed <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">geoId<\/code> ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">countryterritoryCode<\/code>. V\u00f5tame nendest veergudest 3 esimest rida, sest k\u00f5iki ridu ei ole vaja vaadata.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv[\"geoId\"][:3])\r\nprint(csv[\"countryterritoryCode\"][:3])<\/pre>\r\nN\u00e4eme, et <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">geoId<\/code> veerus on kahet\u00e4helised ISO koodid ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">countryterritoryCode<\/code> veerus kolmet\u00e4helised, mis on sobilikud meie kaardi jaoks.\r\n\r\n<span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0Kui kasutada kaarte joonistel, siis peab veenduma, et andmestikus on olemas riigi ISO-kood, riigi nimi v\u00f5i koordinaadid, mille abil \u00fchendada andmed kaardiga.<\/span>\r\n\r\nTabeli esimeses veerus olid kuup\u00e4evad, kuid need ei olnud sobilikus j\u00e4rjekorras. Kui tahame n\u00e4idata, kuidas on COVID-19 haigusjuhud muutunud ajas, siis peame tabelis need j\u00e4rjestama k\u00f5ige varasemast k\u00f5ige hilisema kuup\u00e4evani. Selleks, on vaja, et kuup\u00e4evad oleksid kuup\u00e4eva t\u00fc\u00fcpi (lisaks harilikele t\u00fc\u00fcpidele nagu t\u00e4isarvud v\u00f5i s\u00f5ned, on v\u00f5imalik nii NumPy kui ka Pandase puhul kasutada erit\u00fc\u00fcpe nagu kuup\u00e4ev), sest muidu ei saa kuup\u00e4evi ajaliselt j\u00e4rjestada. Pandasega saab otse CSV failist lugedes kuup\u00e4evad \u00f5igesse t\u00fc\u00fcpi m\u00e4\u00e4rata, tuleb lisada <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">read_csv<\/code> funktsiooni parameetri <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">parse_dates<\/code> v\u00e4\u00e4rtuseks vastav veerg, kus on kuup\u00e4evad.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">csv = pd.read_csv(url, parse_dates=[\"dateRep\"])<\/pre>\r\nP\u00e4rast seda saame kuup\u00e4evad \u00f5igesti j\u00e4rjestada kuup\u00e4eva veeru j\u00e4rgi, kasutades <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">sort_values<\/code> funktsiooni, mille parameetri <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">by<\/code> v\u00e4\u00e4rtus on kuup\u00e4eva veerg.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># Sorteerime kuup\u00e4eva j\u00e4rgi\r\nkuupaev_sort = csv.sort_values(by=[\"dateRep\"])<\/pre>\r\nLisaks oli andmestikus puuduvaid v\u00e4\u00e4rtusi, mis ei ole vajalikud ja need v\u00f5ib eemaldada. Selleks kasutame Pandase <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dropna<\/code> funktsiooni, mis eemaldab tabelist need read, kus on <code>NaN<\/code> v\u00e4\u00e4rtus.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># NaN v\u00e4\u00e4rtuste eemaldamine\r\n\r\neemalda_nan = kuupaev_sort.dropna()<\/pre>\r\nEnne veel, kui kaart p\u00e4ris valmis saab on vaja muuta kuup\u00e4eva t\u00fc\u00fcp UNICODE s\u00f5ne t\u00fc\u00fcpi, sest kuup\u00e4evi saab joonisel kuvada ainult s\u00f5nena. UNICODE s\u00f5ne t\u00fc\u00fcp on \u00fcks paljudest andmet\u00fc\u00fcpidest, mida Pandasega kasutada saab.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># Kuup\u00e4evad peavad olema s\u00f5ned, et neid joonisel kuvada\r\nkuupaev = eemalda_nan[\"dateRep\"].astype(\"U20\")<\/pre>\r\nKaardi loomiseks kasutame Plotly funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">choropleth<\/code>, mille abil saab kuvada maailmakaarti, aga ka teatud piirkondi maailmas, n\u00e4iteks USA v\u00f5i Euroopa.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport plotly.express as px\r\n\r\n# Andmed\r\nurl = 'https:\/\/opendata.ecdc.europa.eu\/covid19\/casedistribution\/csv'\r\n\r\ncsv = pd.read_csv(url, parse_dates=[\"dateRep\"])\r\n\r\n# Sorteerime kuup\u00e4eva j\u00e4rgi\r\nkuupaev_sort = csv.sort_values(by=[\"dateRep\"])\r\n\r\n\r\n# NaN v\u00e4\u00e4rtuste eemaldamine\r\neemalda_nan = kuupaev_sort.dropna()\r\n\r\n# Kuup\u00e4evad peavad olema s\u00f5ned joonisel kuvamiseks\r\nkuupaev = eemalda_nan[\"dateRep\"].astype(\"U20\")\r\n\r\n\r\nkaart = px.choropleth(eemalda_nan, locations=\"countryterritoryCode\",\r\n                \tcolor=\"cases\",\r\n                \thover_name=\"countriesAndTerritories\",\r\n                \tcolor_continuous_scale=px.colors.sequential.Teal,\r\n                \tanimation_frame=kuupaev,\r\n                \thover_data={\"countryterritoryCode\": False,\r\n                            \t\"deaths\": True},\r\n                \tlabels={\"cases\": \"Haigusjuhud\", \"deaths\": \"Surmad\", \"animation_frame\": \"Kuup\u00e4ev\"},\r\n                \ttitle=\"COVID-19 haigusjuhud (allikas: European Union Open Data Portal)\"\r\n                \t)\r\nkaart.show()<\/pre>\r\n<table class=\"no-lines aligncenter\">\r\n<tbody>\r\n<tr>\r\n<td style=\"background-color: #e9fce2;text-align: center\">\ud83c\udf0c <strong>Joonise n\u00e4ide<\/strong> (kl\u00f5psa lingil): <a href=\"http:\/\/kodu.ut.ee\/~merka123\/plotly\/covid.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/covid.html<\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>","rendered":"<p>Leidub avalikke andmetabeleid COVID-19 kohta. J\u00e4rgmises n\u00e4ites loome kaardi, kus on esitatud COVID-19 haigusjuhud riigiti kuup\u00e4eva j\u00e4rgi. Andmed loeme <em><a href=\"https:\/\/data.europa.eu\/euodp\/en\/data\/dataset\/covid-19-coronavirus-data\/resource\/260bbbde-2316-40eb-aec3-7cd7bfc2f590\">European Union Open Data Portal<\/a><\/em> lehelt. Loeme andmed Pandase mooduli abil. Esmalt v\u00e4ljastame tabeli esimesed ja viimased viis rida, et n\u00e4ha millised on andmed. Samuti uurime mitu veergu ja rida on tabelis.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport plotly.express as px\r\n\r\n# Andmed\r\nurl = 'https:\/\/opendata.ecdc.europa.eu\/covid19\/casedistribution\/csv'\r\n\r\ncsv = pd.read_csv(url)\r\n\r\nprint(csv.head())\r\n\r\nprint(csv.tail())\r\n\r\nprint(csv.shape)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n        dateRep  ...  Cumulative_number_for_14_days_of_COVID-19_cases_per_100000\r\n  0  13\/09\/2020  ...                                           1.309088         \r\n  1  12\/09\/2020  ...                                           1.224970         \r\n  2  11\/09\/2020  ...                                           1.164510         \r\n  3  10\/09\/2020  ...                                           1.098793         \r\n  4  09\/09\/2020  ...                                           1.180282         \r\n\r\n  [5 rows x 12 columns]\r\n            dateRep  ...  Cumulative_number_for_14_days_of_COVID-19_cases_per_100000\r\n  42459  25\/03\/2020  ...                                                NaN         \r\n  42460  24\/03\/2020  ...                                                NaN         \r\n  42461  23\/03\/2020  ...                                                NaN         \r\n  42462  22\/03\/2020  ...                                                NaN         \r\n  42463  21\/03\/2020  ...                                                NaN         \r\n\r\n  [5 rows x 12 columns]\r\n  (42464, 12)\r\n<\/pre>\n<p>N\u00e4eme, et tabelis on 12 veergu ja \u00fcle 40000 rea (andmed seisuga 12.08.2020 ), kuid p\u00e4ris k\u00f5igi veergude nimesid ei kuvata. Lisaks on tabelis ka puuduvaid v\u00e4\u00e4rtusi (<code>NaN<\/code>) ja kuup\u00e4eva veerus (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dateRep<\/code>) ei ole kuup\u00e4evad kasvavas j\u00e4rjekorras. P\u00fc\u00fcame tabeli veerud leida. Kasutame veergude <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">columns<\/code> funktsiooni veergude nimede n\u00e4gemiseks.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.columns)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  Index(['dateRep', 'day', 'month', 'year', 'cases', 'deaths',\r\n   \t'countriesAndTerritories', 'geoId', 'countryterritoryCode',\r\n   \t'popData2019', 'continentExp',\r\n   \t'Cumulative_number_for_14_days_of_COVID-19_cases_per_100000'],\r\n  \tdtype='object')<\/pre>\n<p>&nbsp;<\/p>\n<p>Meile on vaja andmed veergudest, kus on kuup\u00e4ev(<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dateRep<\/code>) ja haigusjuhud(<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">cases<\/code>). Lisaks on vaja ka riikide ISO koode, mille j\u00e4rgi \u00fchendatakse vastav riik andmestikus ja selle asukoht kaardil. Vaatame millised on andmed <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">geoId<\/code> ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">countryterritoryCode<\/code>. V\u00f5tame nendest veergudest 3 esimest rida, sest k\u00f5iki ridu ei ole vaja vaadata.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv[\"geoId\"][:3])\r\nprint(csv[\"countryterritoryCode\"][:3])<\/pre>\n<p>N\u00e4eme, et <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">geoId<\/code> veerus on kahet\u00e4helised ISO koodid ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">countryterritoryCode<\/code> veerus kolmet\u00e4helised, mis on sobilikud meie kaardi jaoks.<\/p>\n<p><span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0Kui kasutada kaarte joonistel, siis peab veenduma, et andmestikus on olemas riigi ISO-kood, riigi nimi v\u00f5i koordinaadid, mille abil \u00fchendada andmed kaardiga.<\/span><\/p>\n<p>Tabeli esimeses veerus olid kuup\u00e4evad, kuid need ei olnud sobilikus j\u00e4rjekorras. Kui tahame n\u00e4idata, kuidas on COVID-19 haigusjuhud muutunud ajas, siis peame tabelis need j\u00e4rjestama k\u00f5ige varasemast k\u00f5ige hilisema kuup\u00e4evani. Selleks, on vaja, et kuup\u00e4evad oleksid kuup\u00e4eva t\u00fc\u00fcpi (lisaks harilikele t\u00fc\u00fcpidele nagu t\u00e4isarvud v\u00f5i s\u00f5ned, on v\u00f5imalik nii NumPy kui ka Pandase puhul kasutada erit\u00fc\u00fcpe nagu kuup\u00e4ev), sest muidu ei saa kuup\u00e4evi ajaliselt j\u00e4rjestada. Pandasega saab otse CSV failist lugedes kuup\u00e4evad \u00f5igesse t\u00fc\u00fcpi m\u00e4\u00e4rata, tuleb lisada <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">read_csv<\/code> funktsiooni parameetri <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">parse_dates<\/code> v\u00e4\u00e4rtuseks vastav veerg, kus on kuup\u00e4evad.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">csv = pd.read_csv(url, parse_dates=[\"dateRep\"])<\/pre>\n<p>P\u00e4rast seda saame kuup\u00e4evad \u00f5igesti j\u00e4rjestada kuup\u00e4eva veeru j\u00e4rgi, kasutades <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">sort_values<\/code> funktsiooni, mille parameetri <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">by<\/code> v\u00e4\u00e4rtus on kuup\u00e4eva veerg.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># Sorteerime kuup\u00e4eva j\u00e4rgi\r\nkuupaev_sort = csv.sort_values(by=[\"dateRep\"])<\/pre>\n<p>Lisaks oli andmestikus puuduvaid v\u00e4\u00e4rtusi, mis ei ole vajalikud ja need v\u00f5ib eemaldada. Selleks kasutame Pandase <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dropna<\/code> funktsiooni, mis eemaldab tabelist need read, kus on <code>NaN<\/code> v\u00e4\u00e4rtus.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># NaN v\u00e4\u00e4rtuste eemaldamine\r\n\r\neemalda_nan = kuupaev_sort.dropna()<\/pre>\n<p>Enne veel, kui kaart p\u00e4ris valmis saab on vaja muuta kuup\u00e4eva t\u00fc\u00fcp UNICODE s\u00f5ne t\u00fc\u00fcpi, sest kuup\u00e4evi saab joonisel kuvada ainult s\u00f5nena. UNICODE s\u00f5ne t\u00fc\u00fcp on \u00fcks paljudest andmet\u00fc\u00fcpidest, mida Pandasega kasutada saab.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># Kuup\u00e4evad peavad olema s\u00f5ned, et neid joonisel kuvada\r\nkuupaev = eemalda_nan[\"dateRep\"].astype(\"U20\")<\/pre>\n<p>Kaardi loomiseks kasutame Plotly funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">choropleth<\/code>, mille abil saab kuvada maailmakaarti, aga ka teatud piirkondi maailmas, n\u00e4iteks USA v\u00f5i Euroopa.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport plotly.express as px\r\n\r\n# Andmed\r\nurl = 'https:\/\/opendata.ecdc.europa.eu\/covid19\/casedistribution\/csv'\r\n\r\ncsv = pd.read_csv(url, parse_dates=[\"dateRep\"])\r\n\r\n# Sorteerime kuup\u00e4eva j\u00e4rgi\r\nkuupaev_sort = csv.sort_values(by=[\"dateRep\"])\r\n\r\n\r\n# NaN v\u00e4\u00e4rtuste eemaldamine\r\neemalda_nan = kuupaev_sort.dropna()\r\n\r\n# Kuup\u00e4evad peavad olema s\u00f5ned joonisel kuvamiseks\r\nkuupaev = eemalda_nan[\"dateRep\"].astype(\"U20\")\r\n\r\n\r\nkaart = px.choropleth(eemalda_nan, locations=\"countryterritoryCode\",\r\n                \tcolor=\"cases\",\r\n                \thover_name=\"countriesAndTerritories\",\r\n                \tcolor_continuous_scale=px.colors.sequential.Teal,\r\n                \tanimation_frame=kuupaev,\r\n                \thover_data={\"countryterritoryCode\": False,\r\n                            \t\"deaths\": True},\r\n                \tlabels={\"cases\": \"Haigusjuhud\", \"deaths\": \"Surmad\", \"animation_frame\": \"Kuup\u00e4ev\"},\r\n                \ttitle=\"COVID-19 haigusjuhud (allikas: European Union Open Data Portal)\"\r\n                \t)\r\nkaart.show()<\/pre>\n<table class=\"no-lines aligncenter\">\n<tbody>\n<tr>\n<td style=\"background-color: #e9fce2;text-align: center\">\ud83c\udf0c <strong>Joonise n\u00e4ide<\/strong> (kl\u00f5psa lingil): <a href=\"http:\/\/kodu.ut.ee\/~merka123\/plotly\/covid.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/covid.html<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"author":16,"menu_order":13,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-727","chapter","type-chapter","status-publish","hentry"],"part":93,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/users\/16"}],"version-history":[{"count":2,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/727\/revisions"}],"predecessor-version":[{"id":729,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/727\/revisions\/729"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/93"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/727\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=727"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=727"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=727"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}