{"id":709,"date":"2020-12-29T17:13:01","date_gmt":"2020-12-29T17:13:01","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=709"},"modified":"2020-12-29T17:17:33","modified_gmt":"2020-12-29T17:17:33","slug":"andmetega-tutvumine-ja-nende-puhastamine","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/andmetega-tutvumine-ja-nende-puhastamine\/","title":{"raw":"Andmetega tutvumine ja nende puhastamine","rendered":"Andmetega tutvumine ja nende puhastamine"},"content":{"raw":"Enne andmete anal\u00fc\u00fcsimist, tuleks andmetest saada \u00fclevaade, sest sageli on t\u00f6\u00f6deldavad andmetabelid v\u00e4ga suured ning nende manuaalne \u00fclevaatamine on liiga ajamahukas. Pandas pakub andmete esmaseks \u00fclevaateks mitmeid v\u00f5imalusi.\r\n\r\n&nbsp;\r\n\r\nEsimene tegevus, mida andmetabeliga teha, on teada saada kui suur on tabel ehk kui palju on selles ridu ja veerge. Selleks saab kasutada funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">shape<\/code>, mis tagastab kaheelemendilise enniku, kus esimene element on <strong>ridade<\/strong> arv ja teine <strong>veergude<\/strong> arv. Loeme kasvuhoonegaaside tabeli veebist, kus on andmed Euroopa riikide gaaside kogusest iga elaniku kohta vahemikus 1990-2018.\r\n\r\n&nbsp;\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\n\r\n# Andmed\r\nurl = 'http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.csv'\r\n\r\ncsv = pd.read_csv(url, encoding='UTF-8', sep=';')\r\n\r\n# Uurime, mitu veergu ja rida on selles tabelis.\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\u00a0\u00a0(33, 31)<\/pre>\r\nN\u00e4eme, et tabelis on 33 rida ja 31 veergu. J\u00e4rgmisena vaatame andmeid tabelis. Selleks, et mitte tervet tabelit v\u00e4ljastada, saab kasutada funktsioone <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">head<\/code>, mis tagastab read tabeli algusest, ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">tail<\/code>, mis tagastab read tabeli l\u00f5pust. Kuvame tabeli esimesed viis rida ja k\u00fcmme viimast rida. M\u00f5lemale funktsioonile v\u00f5ib anda argumendiks kuvatavate ridade arv, vaikimisi kuvatakse viis rida.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.head())\r\nprint(csv.tail(10))<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  GEO (Codes)                                      GEO (Labels)  ...  2017  2018\r\n0          BE                                           Belgium  ...  10.8  10.8\r\n1          BG                                          Bulgaria  ...   8.8   8.3\r\n2          CZ                                           Czechia  ...  12.4  12.2\r\n3          DK                                           Denmark  ...   8.9   8.9\r\n4          DE  Germany (until 1990 former territory of the FRG)  ...  11.2  10.7\r\n\r\n[5 rows x 31 columns]\r\n   GEO (Codes)    GEO (Labels)  1990  1991  1992  ...  2014  2015  2016  2017  2018\r\n23          SI        Slovenia   9.3   8.7   8.7  ...   8.1   8.2   8.6   8.4   8.5\r\n24          SK        Slovakia  13.9  12.1  11.0  ...   7.6   7.7   7.8   8.0   8.0\r\n25          FI         Finland  14.5  14.0  13.6  ...  11.1  10.4  10.9  10.4  10.7\r\n26          SE          Sweden   8.5   8.4   8.3  ...   5.8   5.7   5.6   5.5   5.4\r\n27          UK  United Kingdom  14.1  14.3  13.9  ...   8.7   8.3   7.9   7.7   7.5\r\n28          IS         Iceland  15.5  14.5  13.9  ...  16.1  16.6  16.9  17.4  17.5\r\n29          LI   Liechtenstein   8.0   8.1   8.0  ...   5.4   5.3   5.0   5.1   4.8\r\n30          NO          Norway  12.3  11.7  11.2  ...  10.8  10.8  10.5  10.2  10.1\r\n31          CH     Switzerland   8.5   8.7   8.6  ...   6.6   6.5   6.4   6.3   6.1\r\n32          TR          Turkey   3.9   4.0   4.0  ...   6.1   6.2   6.4   6.7   6.5\r\n\r\n[10 rows x 31 columns]\r\n<\/pre>\r\nN\u00e4eme, et esimeses veerus on riikide kahet\u00e4helised koodid, teises on riikide nimed ja \u00fclej\u00e4\u00e4nud veergudes on kasvuhoonegaaside kogused elaniku kohta aasta j\u00e4rgi.\r\n\r\nKuna loeme andmed tekstifailist, siis on oluline \u00fcle vaadata ka veergude andmet\u00fc\u00fcbid. \u00dcldiselt oskab Pandas ise m\u00e4\u00e4rata \u00f5iged andmet\u00fc\u00fcbid, kuid igaks juhuks tasuks kontrollida. Selleks kasutame funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dtypes<\/code>.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.dtypes)<\/pre>\r\n<pre>&gt;&gt;&gt; %Run guido.py\r\n  GEO (Codes)      object\r\n  GEO (Labels)     object\r\n  1990            float64\r\n  1991            float64\r\n  1992            float64\r\n  1993            float64\r\n  1994            float64\r\n  1995            float64\r\n  1996            float64\r\n  1997            float64\r\n  1998            float64\r\n  1999            float64\r\n  2000            float64\r\n  2001            float64\r\n  2002            float64\r\n  2003            float64\r\n  2004            float64\r\n  2005            float64\r\n  2006            float64\r\n  2007            float64\r\n  2008            float64\r\n  2009            float64\r\n  2010            float64\r\n  2011            float64\r\n  2012            float64\r\n  2013            float64\r\n  2014            float64\r\n  2015            float64\r\n  2016            float64\r\n  2017            float64\r\n  2018            float64\r\n  dtype: object\r\n<\/pre>\r\nAndmet\u00fc\u00fcbid on \u00f5iged. \u00dchtlasi n\u00e4gime ka andmetabeli veergude pealkirju.\r\n\r\nJ\u00e4rgmisena kontrollime, kas andmetes on puuduvaid v\u00f5i tundmatuid v\u00e4\u00e4rtusi. Kasutame <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">isna<\/code> funktsiooni, mis tagastab tabeli, kus on t\u00f5ev\u00e4\u00e4rtused, vastavalt, kas v\u00e4\u00e4rtus on <code>NaN<\/code> v\u00f5i mitte.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.isna())<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n      GEO (Codes)  GEO (Labels)   1990   1991  ...   2015   2016   2017   2018\r\n  0         False         False  False  False  ...  False  False  False  False\r\n  1         False         False  False  False  ...  False  False  False  False\r\n  2         False         False  False  False  ...  False  False  False  False\r\n  3         False         False  False  False  ...  False  False  False  False\r\n  4         False         False  False  False  ...  False  False  False  False\r\n  5         False         False  False  False  ...  False  False  False  False\r\n  6         False         False  False  False  ...  False  False  False  False\r\n  7         False         False  False  False  ...  False  False  False  False\r\n  ....\r\n<\/pre>\r\nN\u00e4eme, et tervet tabelit ei v\u00e4ljastata ja manuaalselt \u00fcle vaadata, kas m\u00f5nes veerus on puuduvaid v\u00e4\u00e4rtusi, on t\u00fclikas. Selleks, et loendada, kui palju on puuduvaid v\u00e4\u00e4rtusi veergudes, saab kasutada <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">sum<\/code> funktsiooni, mis oskab ka t\u00f5ev\u00e4\u00e4rtusi liita, kus <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">True<\/code> on 1 ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">False<\/code> on 0. Kasutame sum funktsiooni koos <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">isna<\/code> funktsiooniga.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.isna().sum())<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  GEO (Codes)     0\r\n  GEO (Labels)    0\r\n  1990            0\r\n  1991            0\r\n  1992            0\r\n  1993            0\r\n  1994            0\r\n  1995            0\r\n  1996            0\r\n  1997            0\r\n  1998            0\r\n  1999            0\r\n  2000            0\r\n  2001            0\r\n  2002            0\r\n  2003            0\r\n  2004            0\r\n  2005            0\r\n  2006            0\r\n  2007            0\r\n  2008            0\r\n  2009            0\r\n  2010            0\r\n  2011            0\r\n  2012            0\r\n  2013            0\r\n  2014            0\r\n  2015            0\r\n  2016            0\r\n  2017            0\r\n  2018            0\r\n  dtype: int64\r\n<\/pre>\r\nN\u00e4eme, et veergudes ei ole \u00fchtegi puuduvat v\u00e4\u00e4rtust, sest k\u00f5ikide veergude summa on 0.\r\n\r\nJ\u00e4rgmisena teeme esmase anal\u00fc\u00fcsi kogu tabelile, kus leiame veergude aritmeetilise keskmise, standardh\u00e4lbe, maksimaalse ja minimaalse v\u00e4\u00e4rtuse, \u00fclemise, alumise ja keskmise kvartiili. K\u00f5ik need karakteristikuid kasutatakse andmete iseloomustamiseks. Pandase moodulis on funktsioon <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">describe<\/code>, mille abil saame k\u00f5ik eelnevalt nimetatud karakteristikud korraga leida.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.describe())<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n              1990       1991       1992  ...       2016       2017       2018\r\n  count  33.000000  33.000000  33.000000  ...  33.000000  33.000000  33.000000\r\n  mean   12.427273  12.136364  11.451515  ...   9.209091   9.321212   9.193939\r\n  std     5.775123   5.857037   5.416302  ...   3.505742   3.533125   3.541093\r\n  min     3.900000   4.000000   4.000000  ...   5.000000   5.100000   4.800000\r\n  25%     9.100000   8.700000   8.300000  ...   6.400000   6.700000   6.600000\r\n  50%    11.100000  10.700000   9.800000  ...   8.400000   8.400000   8.300000\r\n  75%    14.500000  14.500000  13.900000  ...  10.900000  11.000000  10.800000\r\n  max    34.400000  35.600000  34.500000  ...  19.800000  20.000000  20.300000\r\n\r\n  [8 rows x 29 columns]\r\n<\/pre>\r\nN\u00e4eme, et arvutused tehti ainult nende veergudega, milles on arvud ja lisatud on ka v\u00e4\u00e4rtuste loendus iga veeru kohta (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">count<\/code>). J\u00e4rgnevas tabelis on selgitatud v\u00e4ljastatud karakteristikuid.\r\n<table class=\"grid aligncenter\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center\">V\u00e4ljund<\/td>\r\n<td style=\"text-align: center\">Karakteristik<\/td>\r\n<td style=\"text-align: center\">Selgitus<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">mean<\/code><\/td>\r\n<td>Aritmeetiline keskmine<\/td>\r\n<td>V\u00e4\u00e4rtuste summa jagatud nende koguarvuga.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">std<\/code><\/td>\r\n<td>Standardh\u00e4lve<\/td>\r\n<td>Hajuvuskarakteristik, mis n\u00e4itab tunnuse hajuvust (mida suurem, seda suurem on tunnuse hajuvus keskmisest).<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">min<\/code><\/td>\r\n<td>Minimaalne v\u00e4\u00e4rtus<\/td>\r\n<td>V\u00e4ikseim v\u00e4\u00e4rtus<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">25%<\/code><\/td>\r\n<td>Alumine kvartiil<\/td>\r\n<td>V\u00e4\u00e4rtus, millest v\u00e4iksemaid v\u00f5i v\u00f5rdseid v\u00e4\u00e4rtusi on ligikaudu 25%.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">50%<\/code><\/td>\r\n<td>Keskmine kvartiil ehk mediaan<\/td>\r\n<td>V\u00e4\u00e4rtus, millest suuremaid ja v\u00e4iksemaid v\u00e4\u00e4rtusi on variatsioonireas ligikaudu v\u00f5rdselt.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">75%<\/code><\/td>\r\n<td>\u00dclemine kvartiil<\/td>\r\n<td>V\u00e4\u00e4rtus, millest suuremaid v\u00f5i v\u00f5rdseid v\u00e4\u00e4rtusi on ligikaudu 25%.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">max<\/code><\/td>\r\n<td>Maksimaalne v\u00e4\u00e4rtus<\/td>\r\n<td>Suurim v\u00e4\u00e4rtus<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\u00dcldiselt v\u00f5ime n\u00e4ha, et kasvuhoonegaaside kogused on aastate jooksul v\u00e4henenud. Selle j\u00e4relduse iseloomustamiseks teeme joondiagrammi Eesti kasvuhoonegaaside koguste kohta 1990-2018. Joonise tegemiseks kasutame Matplotlibi moodulit.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport matplotlib.pyplot as plt\r\n\r\n# Andmed\r\nurl = 'http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.csv'\r\n\r\ncsv = pd.read_csv(url, encoding='UTF-8', sep=';')\r\n\r\n# Leiame tabelist Eesti andmetega rea, tagastatakse \u00fche reaga andmefreim\r\neesti_andmed = csv.loc[csv['GEO (Labels)'] == 'Estonia']\r\n\r\n# Eraldame Eesti andmetes ainult arvulised andmed\r\neesti_aastad = eesti_andmed.iloc[:, 2:32]\r\n\r\n# Valime andmed tabelist, kus on ainult Eesti arvulised andmed\r\neesti_aastad.iloc[0].plot.line()\r\n\r\n# Joonise kuvamiseks peab kasutama show() Matplotlib moodulist\r\nplt.show()<\/pre>\r\n<img class=\"alignnone wp-image-713 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-6.png\" alt=\"\" width=\"640\" height=\"480\" \/>\r\n\r\nLisame juurde ka telgedele ja diagrammile pealkirjad, muudame ka joone v\u00e4rvi.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport matplotlib.pyplot as plt\r\n\r\n# Andmed\r\nurl = 'http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.csv'\r\n\r\ncsv = pd.read_csv(url, encoding='UTF-8', sep=';')\r\n\r\neesti_andmed = csv.loc[csv['GEO (Labels)'] == 'Estonia']\r\n\r\n\r\neesti_aastad = eesti_andmed.iloc[:, 2:32]\r\n\r\neesti_aastad.iloc[0].plot.line(xlabel=\"Aastad\",\r\n                               ylabel=\"Kasvuhoonegaaside kogus, tonni elaniku kohta\",\r\n                               title=\"Kasvuhoonegaaside kogused Eestis 1990-2018\",\r\n                               color='#FF7F50')\r\n\r\n# Joonise kuvamiseks peab kasutama show() Matplotlib moodulist\r\nplt.show()\r\n<\/pre>\r\n<img class=\"alignnone wp-image-715 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-7.png\" alt=\"\" width=\"640\" height=\"480\" \/>\r\n\r\nTeeme eelmise andmetabeli p\u00f5hjal ka kaardi euroopa riikide kasvuhoonegaaside koguste kohta. Selleks kasutame Plotly moodulit.\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 = 'http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.csv'\r\n\r\ncsv = pd.read_csv(url, encoding='UTF-8', sep=';')\r\n\r\n# locationmode -&gt; riik kaardil ja andmed \u00fchendatakse riigi nime j\u00e4rgi\r\n# location -&gt; veerg, kus saadakse riikide nimed\r\n# color -&gt; andmete veerg\r\n# hover_name -&gt; riikide nimesid kuvatakse hiirega riigile liikumisel\r\n# color_continuous_scale -&gt; v\u00e4rvipaleti m\u00e4\u00e4ramine\r\n# scope -&gt; kuvatakse ainult Euroopa riike kaardil\r\n# labels -&gt; muudame kuvatavate andmete pealkirju\r\n# title -&gt; kaardi pealkiri\r\nkaart = px.choropleth(csv, locationmode='country names',\r\n                      locations='GEO (Labels)',\r\n                      color='2018',\r\n                      hover_name=\"GEO (Labels)\",\r\n                      color_continuous_scale=px.colors.sequential.Pinkyl,\r\n                      scope='europe',\r\n                      labels={'2018': \"Kasvuhoonegaasid, tonni elaniku kohta\", 'GEO (Labels)': 'Riik'},\r\n                      title=\"Kasvuhoonegaaside emissioon 2018\")\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\/kasvuhoonegaasid.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.html<\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>","rendered":"<p>Enne andmete anal\u00fc\u00fcsimist, tuleks andmetest saada \u00fclevaade, sest sageli on t\u00f6\u00f6deldavad andmetabelid v\u00e4ga suured ning nende manuaalne \u00fclevaatamine on liiga ajamahukas. Pandas pakub andmete esmaseks \u00fclevaateks mitmeid v\u00f5imalusi.<\/p>\n<p>&nbsp;<\/p>\n<p>Esimene tegevus, mida andmetabeliga teha, on teada saada kui suur on tabel ehk kui palju on selles ridu ja veerge. Selleks saab kasutada funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">shape<\/code>, mis tagastab kaheelemendilise enniku, kus esimene element on <strong>ridade<\/strong> arv ja teine <strong>veergude<\/strong> arv. Loeme kasvuhoonegaaside tabeli veebist, kus on andmed Euroopa riikide gaaside kogusest iga elaniku kohta vahemikus 1990-2018.<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\n\r\n# Andmed\r\nurl = 'http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.csv'\r\n\r\ncsv = pd.read_csv(url, encoding='UTF-8', sep=';')\r\n\r\n# Uurime, mitu veergu ja rida on selles tabelis.\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\u00a0\u00a0(33, 31)<\/pre>\n<p>N\u00e4eme, et tabelis on 33 rida ja 31 veergu. J\u00e4rgmisena vaatame andmeid tabelis. Selleks, et mitte tervet tabelit v\u00e4ljastada, saab kasutada funktsioone <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">head<\/code>, mis tagastab read tabeli algusest, ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">tail<\/code>, mis tagastab read tabeli l\u00f5pust. Kuvame tabeli esimesed viis rida ja k\u00fcmme viimast rida. M\u00f5lemale funktsioonile v\u00f5ib anda argumendiks kuvatavate ridade arv, vaikimisi kuvatakse viis rida.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.head())\r\nprint(csv.tail(10))<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  GEO (Codes)                                      GEO (Labels)  ...  2017  2018\r\n0          BE                                           Belgium  ...  10.8  10.8\r\n1          BG                                          Bulgaria  ...   8.8   8.3\r\n2          CZ                                           Czechia  ...  12.4  12.2\r\n3          DK                                           Denmark  ...   8.9   8.9\r\n4          DE  Germany (until 1990 former territory of the FRG)  ...  11.2  10.7\r\n\r\n[5 rows x 31 columns]\r\n   GEO (Codes)    GEO (Labels)  1990  1991  1992  ...  2014  2015  2016  2017  2018\r\n23          SI        Slovenia   9.3   8.7   8.7  ...   8.1   8.2   8.6   8.4   8.5\r\n24          SK        Slovakia  13.9  12.1  11.0  ...   7.6   7.7   7.8   8.0   8.0\r\n25          FI         Finland  14.5  14.0  13.6  ...  11.1  10.4  10.9  10.4  10.7\r\n26          SE          Sweden   8.5   8.4   8.3  ...   5.8   5.7   5.6   5.5   5.4\r\n27          UK  United Kingdom  14.1  14.3  13.9  ...   8.7   8.3   7.9   7.7   7.5\r\n28          IS         Iceland  15.5  14.5  13.9  ...  16.1  16.6  16.9  17.4  17.5\r\n29          LI   Liechtenstein   8.0   8.1   8.0  ...   5.4   5.3   5.0   5.1   4.8\r\n30          NO          Norway  12.3  11.7  11.2  ...  10.8  10.8  10.5  10.2  10.1\r\n31          CH     Switzerland   8.5   8.7   8.6  ...   6.6   6.5   6.4   6.3   6.1\r\n32          TR          Turkey   3.9   4.0   4.0  ...   6.1   6.2   6.4   6.7   6.5\r\n\r\n[10 rows x 31 columns]\r\n<\/pre>\n<p>N\u00e4eme, et esimeses veerus on riikide kahet\u00e4helised koodid, teises on riikide nimed ja \u00fclej\u00e4\u00e4nud veergudes on kasvuhoonegaaside kogused elaniku kohta aasta j\u00e4rgi.<\/p>\n<p>Kuna loeme andmed tekstifailist, siis on oluline \u00fcle vaadata ka veergude andmet\u00fc\u00fcbid. \u00dcldiselt oskab Pandas ise m\u00e4\u00e4rata \u00f5iged andmet\u00fc\u00fcbid, kuid igaks juhuks tasuks kontrollida. Selleks kasutame funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">dtypes<\/code>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.dtypes)<\/pre>\n<pre>&gt;&gt;&gt; %Run guido.py\r\n  GEO (Codes)      object\r\n  GEO (Labels)     object\r\n  1990            float64\r\n  1991            float64\r\n  1992            float64\r\n  1993            float64\r\n  1994            float64\r\n  1995            float64\r\n  1996            float64\r\n  1997            float64\r\n  1998            float64\r\n  1999            float64\r\n  2000            float64\r\n  2001            float64\r\n  2002            float64\r\n  2003            float64\r\n  2004            float64\r\n  2005            float64\r\n  2006            float64\r\n  2007            float64\r\n  2008            float64\r\n  2009            float64\r\n  2010            float64\r\n  2011            float64\r\n  2012            float64\r\n  2013            float64\r\n  2014            float64\r\n  2015            float64\r\n  2016            float64\r\n  2017            float64\r\n  2018            float64\r\n  dtype: object\r\n<\/pre>\n<p>Andmet\u00fc\u00fcbid on \u00f5iged. \u00dchtlasi n\u00e4gime ka andmetabeli veergude pealkirju.<\/p>\n<p>J\u00e4rgmisena kontrollime, kas andmetes on puuduvaid v\u00f5i tundmatuid v\u00e4\u00e4rtusi. Kasutame <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">isna<\/code> funktsiooni, mis tagastab tabeli, kus on t\u00f5ev\u00e4\u00e4rtused, vastavalt, kas v\u00e4\u00e4rtus on <code>NaN<\/code> v\u00f5i mitte.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.isna())<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n      GEO (Codes)  GEO (Labels)   1990   1991  ...   2015   2016   2017   2018\r\n  0         False         False  False  False  ...  False  False  False  False\r\n  1         False         False  False  False  ...  False  False  False  False\r\n  2         False         False  False  False  ...  False  False  False  False\r\n  3         False         False  False  False  ...  False  False  False  False\r\n  4         False         False  False  False  ...  False  False  False  False\r\n  5         False         False  False  False  ...  False  False  False  False\r\n  6         False         False  False  False  ...  False  False  False  False\r\n  7         False         False  False  False  ...  False  False  False  False\r\n  ....\r\n<\/pre>\n<p>N\u00e4eme, et tervet tabelit ei v\u00e4ljastata ja manuaalselt \u00fcle vaadata, kas m\u00f5nes veerus on puuduvaid v\u00e4\u00e4rtusi, on t\u00fclikas. Selleks, et loendada, kui palju on puuduvaid v\u00e4\u00e4rtusi veergudes, saab kasutada <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">sum<\/code> funktsiooni, mis oskab ka t\u00f5ev\u00e4\u00e4rtusi liita, kus <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">True<\/code> on 1 ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">False<\/code> on 0. Kasutame sum funktsiooni koos <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">isna<\/code> funktsiooniga.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.isna().sum())<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  GEO (Codes)     0\r\n  GEO (Labels)    0\r\n  1990            0\r\n  1991            0\r\n  1992            0\r\n  1993            0\r\n  1994            0\r\n  1995            0\r\n  1996            0\r\n  1997            0\r\n  1998            0\r\n  1999            0\r\n  2000            0\r\n  2001            0\r\n  2002            0\r\n  2003            0\r\n  2004            0\r\n  2005            0\r\n  2006            0\r\n  2007            0\r\n  2008            0\r\n  2009            0\r\n  2010            0\r\n  2011            0\r\n  2012            0\r\n  2013            0\r\n  2014            0\r\n  2015            0\r\n  2016            0\r\n  2017            0\r\n  2018            0\r\n  dtype: int64\r\n<\/pre>\n<p>N\u00e4eme, et veergudes ei ole \u00fchtegi puuduvat v\u00e4\u00e4rtust, sest k\u00f5ikide veergude summa on 0.<\/p>\n<p>J\u00e4rgmisena teeme esmase anal\u00fc\u00fcsi kogu tabelile, kus leiame veergude aritmeetilise keskmise, standardh\u00e4lbe, maksimaalse ja minimaalse v\u00e4\u00e4rtuse, \u00fclemise, alumise ja keskmise kvartiili. K\u00f5ik need karakteristikuid kasutatakse andmete iseloomustamiseks. Pandase moodulis on funktsioon <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">describe<\/code>, mille abil saame k\u00f5ik eelnevalt nimetatud karakteristikud korraga leida.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">print(csv.describe())<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n              1990       1991       1992  ...       2016       2017       2018\r\n  count  33.000000  33.000000  33.000000  ...  33.000000  33.000000  33.000000\r\n  mean   12.427273  12.136364  11.451515  ...   9.209091   9.321212   9.193939\r\n  std     5.775123   5.857037   5.416302  ...   3.505742   3.533125   3.541093\r\n  min     3.900000   4.000000   4.000000  ...   5.000000   5.100000   4.800000\r\n  25%     9.100000   8.700000   8.300000  ...   6.400000   6.700000   6.600000\r\n  50%    11.100000  10.700000   9.800000  ...   8.400000   8.400000   8.300000\r\n  75%    14.500000  14.500000  13.900000  ...  10.900000  11.000000  10.800000\r\n  max    34.400000  35.600000  34.500000  ...  19.800000  20.000000  20.300000\r\n\r\n  [8 rows x 29 columns]\r\n<\/pre>\n<p>N\u00e4eme, et arvutused tehti ainult nende veergudega, milles on arvud ja lisatud on ka v\u00e4\u00e4rtuste loendus iga veeru kohta (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">count<\/code>). J\u00e4rgnevas tabelis on selgitatud v\u00e4ljastatud karakteristikuid.<\/p>\n<table class=\"grid aligncenter\">\n<tbody>\n<tr>\n<td style=\"text-align: center\">V\u00e4ljund<\/td>\n<td style=\"text-align: center\">Karakteristik<\/td>\n<td style=\"text-align: center\">Selgitus<\/td>\n<\/tr>\n<tr>\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">mean<\/code><\/td>\n<td>Aritmeetiline keskmine<\/td>\n<td>V\u00e4\u00e4rtuste summa jagatud nende koguarvuga.<\/td>\n<\/tr>\n<tr>\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">std<\/code><\/td>\n<td>Standardh\u00e4lve<\/td>\n<td>Hajuvuskarakteristik, mis n\u00e4itab tunnuse hajuvust (mida suurem, seda suurem on tunnuse hajuvus keskmisest).<\/td>\n<\/tr>\n<tr>\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">min<\/code><\/td>\n<td>Minimaalne v\u00e4\u00e4rtus<\/td>\n<td>V\u00e4ikseim v\u00e4\u00e4rtus<\/td>\n<\/tr>\n<tr>\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">25%<\/code><\/td>\n<td>Alumine kvartiil<\/td>\n<td>V\u00e4\u00e4rtus, millest v\u00e4iksemaid v\u00f5i v\u00f5rdseid v\u00e4\u00e4rtusi on ligikaudu 25%.<\/td>\n<\/tr>\n<tr>\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">50%<\/code><\/td>\n<td>Keskmine kvartiil ehk mediaan<\/td>\n<td>V\u00e4\u00e4rtus, millest suuremaid ja v\u00e4iksemaid v\u00e4\u00e4rtusi on variatsioonireas ligikaudu v\u00f5rdselt.<\/td>\n<\/tr>\n<tr>\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">75%<\/code><\/td>\n<td>\u00dclemine kvartiil<\/td>\n<td>V\u00e4\u00e4rtus, millest suuremaid v\u00f5i v\u00f5rdseid v\u00e4\u00e4rtusi on ligikaudu 25%.<\/td>\n<\/tr>\n<tr>\n<td><code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">max<\/code><\/td>\n<td>Maksimaalne v\u00e4\u00e4rtus<\/td>\n<td>Suurim v\u00e4\u00e4rtus<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u00dcldiselt v\u00f5ime n\u00e4ha, et kasvuhoonegaaside kogused on aastate jooksul v\u00e4henenud. Selle j\u00e4relduse iseloomustamiseks teeme joondiagrammi Eesti kasvuhoonegaaside koguste kohta 1990-2018. Joonise tegemiseks kasutame Matplotlibi moodulit.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport matplotlib.pyplot as plt\r\n\r\n# Andmed\r\nurl = 'http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.csv'\r\n\r\ncsv = pd.read_csv(url, encoding='UTF-8', sep=';')\r\n\r\n# Leiame tabelist Eesti andmetega rea, tagastatakse \u00fche reaga andmefreim\r\neesti_andmed = csv.loc[csv['GEO (Labels)'] == 'Estonia']\r\n\r\n# Eraldame Eesti andmetes ainult arvulised andmed\r\neesti_aastad = eesti_andmed.iloc[:, 2:32]\r\n\r\n# Valime andmed tabelist, kus on ainult Eesti arvulised andmed\r\neesti_aastad.iloc[0].plot.line()\r\n\r\n# Joonise kuvamiseks peab kasutama show() Matplotlib moodulist\r\nplt.show()<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-713 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-6.png\" alt=\"\" width=\"640\" height=\"480\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-6.png 640w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-6-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-6-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-6-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-6-350x263.png 350w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Lisame juurde ka telgedele ja diagrammile pealkirjad, muudame ka joone v\u00e4rvi.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport matplotlib.pyplot as plt\r\n\r\n# Andmed\r\nurl = 'http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.csv'\r\n\r\ncsv = pd.read_csv(url, encoding='UTF-8', sep=';')\r\n\r\neesti_andmed = csv.loc[csv['GEO (Labels)'] == 'Estonia']\r\n\r\n\r\neesti_aastad = eesti_andmed.iloc[:, 2:32]\r\n\r\neesti_aastad.iloc[0].plot.line(xlabel=\"Aastad\",\r\n                               ylabel=\"Kasvuhoonegaaside kogus, tonni elaniku kohta\",\r\n                               title=\"Kasvuhoonegaaside kogused Eestis 1990-2018\",\r\n                               color='#FF7F50')\r\n\r\n# Joonise kuvamiseks peab kasutama show() Matplotlib moodulist\r\nplt.show()\r\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-715 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-7.png\" alt=\"\" width=\"640\" height=\"480\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-7.png 640w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-7-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-7-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-7-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-7-350x263.png 350w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Teeme eelmise andmetabeli p\u00f5hjal ka kaardi euroopa riikide kasvuhoonegaaside koguste kohta. Selleks kasutame Plotly moodulit.<\/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 = 'http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.csv'\r\n\r\ncsv = pd.read_csv(url, encoding='UTF-8', sep=';')\r\n\r\n# locationmode -&gt; riik kaardil ja andmed \u00fchendatakse riigi nime j\u00e4rgi\r\n# location -&gt; veerg, kus saadakse riikide nimed\r\n# color -&gt; andmete veerg\r\n# hover_name -&gt; riikide nimesid kuvatakse hiirega riigile liikumisel\r\n# color_continuous_scale -&gt; v\u00e4rvipaleti m\u00e4\u00e4ramine\r\n# scope -&gt; kuvatakse ainult Euroopa riike kaardil\r\n# labels -&gt; muudame kuvatavate andmete pealkirju\r\n# title -&gt; kaardi pealkiri\r\nkaart = px.choropleth(csv, locationmode='country names',\r\n                      locations='GEO (Labels)',\r\n                      color='2018',\r\n                      hover_name=\"GEO (Labels)\",\r\n                      color_continuous_scale=px.colors.sequential.Pinkyl,\r\n                      scope='europe',\r\n                      labels={'2018': \"Kasvuhoonegaasid, tonni elaniku kohta\", 'GEO (Labels)': 'Riik'},\r\n                      title=\"Kasvuhoonegaaside emissioon 2018\")\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\/kasvuhoonegaasid.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/kasvuhoonegaasid.html<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"author":16,"menu_order":11,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-709","chapter","type-chapter","status-publish","hentry"],"part":93,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/709","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":3,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/709\/revisions"}],"predecessor-version":[{"id":716,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/709\/revisions\/716"}],"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\/709\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=709"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=709"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=709"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}