{"id":643,"date":"2020-12-29T13:32:14","date_gmt":"2020-12-29T13:32:14","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=643"},"modified":"2020-12-29T20:35:44","modified_gmt":"2020-12-29T20:35:44","slug":"tehted-seeriatega","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/tehted-seeriatega\/","title":{"raw":"Tehted seeriatega","rendered":"Tehted seeriatega"},"content":{"raw":"Pandase \u00fcheks eeliseks Pythoni ees on selle v\u00f5imekus teha tehteid otse seeriate peal, sest kasutatakse lisaks ka NumPy moodulit (vaata lisaks NumPy materjali), mille tulemusel ei pea kasutama n\u00e4iteks seeriate liitmisel ts\u00fckleid. Oletame, et tahame teha kahe v\u00f5i enama seeria v\u00e4\u00e4rtuste vahel j\u00e4rgnevaid tehteid: liitmine, lahutamine, korrutamine, korrutamine konstandiga, jagamine, astendamine. Kui Pythonis peab selliste tehete\u00a0 tegemiseks looma ts\u00fckli, siis Pandase puhul pole ts\u00fckleid vaja. Vaatame n\u00e4idet, kus liidame igale seeria v\u00e4\u00e4rtusele juurde 10. Loome seeria jaoks s\u00f5nastiku, kus v\u00f5tmeks on v\u00f5istleja ID ja v\u00e4\u00e4rtuseks on v\u00f5istleja punktid.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">voistlejad_sonastik = {'MM12': 34, 'MM34': 56, 'MM55': 66}\r\nvoistlejad_seeria = pd.Series(voistlejad_sonastik)<\/pre>\r\nLisame v\u00f5istlejate teenitud punktidele juurde veel 10 punkti.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">voistlejad_sonastik = {'MM12': 34, 'MM34': 56, 'MM55': 66}\r\nvoistlejad_seeria = pd.Series(voistlejad_sonastik)\r\n\r\npluss_10 = voistlejad_seeria + 10\r\n\r\nprint(pluss_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  MM12\t44\r\n  MM34\t66\r\n  MM55\t76\r\n  dtype: int64\r\n<\/pre>\r\nSamuti on v\u00f5imalik omavahel liita seeriad. Oluline on meeles pidada seda, et kui kasutatakse silte, siis need sildid peavad olema samad m\u00f5lemas seerias. Teeme n\u00e4ite, kus soovime liita kaks seeriat, kuid k\u00f5ik kasutatavad sildid ei ole m\u00f5lemas seerias samad.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">sonastik_a = {'MR10': 34, 'MM34': 56, 'MM55': 66}\r\nsonastik_b = {'MM13': 34, 'MM34': 20, 'MM55': 30}\r\n\r\nseeria_a = pd.Series(sonastik_a)\r\nseeria_b = pd.Series(sonastik_b)\r\n\r\nseeria_ab = seeria_a + seeria_b\r\n\r\nprint(seeria_ab)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  MM13 \tNaN\r\n  MM34\t76.0\r\n  MM55\t96.0\r\n  MR10 \tNaN\r\n  dtype: float64\r\n<\/pre>\r\nN\u00e4eme, et nende sildide v\u00e4\u00e4rtused, mis ei olnud samad, on <code>NaN<\/code> (not a number), mis t\u00e4hendab sisuliselt, et tegemist on puuduva v\u00e4\u00e4rtusega. Kui m\u00f5lema seeria sildid on samad, siis liidetakse siltidele vastavad v\u00e4\u00e4rtused.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">sonastik_a = {'MM13': 34, 'MM34': 56, 'MM55': 66}\r\nsonastik_b = {'MM13': 34, 'MM34': 20, 'MM55': 30}\r\n\r\nseeria_a = pd.Series(sonastik_a)\r\nseeria_b = pd.Series(sonastik_b)\r\n\r\nseeria_ab = seeria_a + seeria_b\r\n\r\nprint(seeria_ab)<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  MM13\t68\r\n  MM34\t76\r\n  MM55\t96\r\n  dtype: int64\r\n<\/pre>\r\nSarnaselt saab seeriad omavahel lahutada, korrutada, jagada ja astendada.\r\n\r\nVaatame veidi keerulisemat olukorda. Olgu meil seeria, kus on inimeste kehakaalud kilogrammides ja seeria, kus on samade inimeste pikkused meetrites. Tahame arvutada nende seeriate p\u00f5hjal inimeste kehamassiindeksi (KMI). KMI leidmiseks jagatakse kehakaal pikkuse ruuduga (<code>KMI = kehakaal \/ pikkus**2<\/code>).\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">sonastik_kaal = {'Madis': 66.4, 'Kristi': 54.0, 'Ott': 92.3}\r\nsonastik_pikkus = {'Madis': 1.81, 'Kristi': 1.69, 'Ott': 1.95}\r\n\r\nkaal = pd.Series(sonastik_kaal)\r\npikkus = pd.Series(sonastik_pikkus)\r\n\r\nKMI = kaal \/ pikkus**2\r\n\r\nprint(KMI.round(1)) # \u00dcmardamine 1 koht p\u00e4rast koma<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  Madis \t20.3\r\n  Kristi\t18.9\r\n  Ott   \t24.3\r\n  dtype: float64\r\n<\/pre>\r\nN\u00fc\u00fcd aga vaatame olukorda, kus me tahame leida seeriast k\u00f5ik v\u00e4\u00e4rtused, mis vastavad meie seatud tingimustele. N\u00e4iteks soovime leida eelmises n\u00e4iteks k\u00f5ik need KMI v\u00e4\u00e4rtused, mis j\u00e4\u00e4vad alla normpiiri (normaalne KMI on vahemikus 19 - 25). Me saame tingimusavaldist kasutada otse seeria peal, kirjutades avaldise nurksulgude vahele p\u00e4rast seeria muutujanime. Siin on aga oluline, et avaldises esineks seeria muutujanimi.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">sonastik_kaal = {'Madis': 66.4, 'Kristi': 54.0, 'Ott': 92.3}\r\nsonastik_pikkus = {'Madis': 1.81, 'Kristi': 1.69, 'Ott': 1.95}\r\n\r\nkaal = pd.Series(sonastik_kaal)\r\npikkus = pd.Series(sonastik_pikkus)\r\n\r\nKMI = kaal \/ pikkus**2\r\n\r\nprint(KMI[KMI &lt;= 19])<\/pre>\r\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  Kristi\t18.906901\r\n  dtype: float64\r\n<\/pre>\r\nSarnaselt saab kasutada ka teisi tingimusavaldiste operaatoreid (<code>==<\/code>, <code>&gt;<\/code>, <code>&gt;=<\/code>, <code>&lt;<\/code>, <code>!=<\/code>).","rendered":"<p>Pandase \u00fcheks eeliseks Pythoni ees on selle v\u00f5imekus teha tehteid otse seeriate peal, sest kasutatakse lisaks ka NumPy moodulit (vaata lisaks NumPy materjali), mille tulemusel ei pea kasutama n\u00e4iteks seeriate liitmisel ts\u00fckleid. Oletame, et tahame teha kahe v\u00f5i enama seeria v\u00e4\u00e4rtuste vahel j\u00e4rgnevaid tehteid: liitmine, lahutamine, korrutamine, korrutamine konstandiga, jagamine, astendamine. Kui Pythonis peab selliste tehete\u00a0 tegemiseks looma ts\u00fckli, siis Pandase puhul pole ts\u00fckleid vaja. Vaatame n\u00e4idet, kus liidame igale seeria v\u00e4\u00e4rtusele juurde 10. Loome seeria jaoks s\u00f5nastiku, kus v\u00f5tmeks on v\u00f5istleja ID ja v\u00e4\u00e4rtuseks on v\u00f5istleja punktid.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">voistlejad_sonastik = {'MM12': 34, 'MM34': 56, 'MM55': 66}\r\nvoistlejad_seeria = pd.Series(voistlejad_sonastik)<\/pre>\n<p>Lisame v\u00f5istlejate teenitud punktidele juurde veel 10 punkti.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">voistlejad_sonastik = {'MM12': 34, 'MM34': 56, 'MM55': 66}\r\nvoistlejad_seeria = pd.Series(voistlejad_sonastik)\r\n\r\npluss_10 = voistlejad_seeria + 10\r\n\r\nprint(pluss_10)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  MM12\t44\r\n  MM34\t66\r\n  MM55\t76\r\n  dtype: int64\r\n<\/pre>\n<p>Samuti on v\u00f5imalik omavahel liita seeriad. Oluline on meeles pidada seda, et kui kasutatakse silte, siis need sildid peavad olema samad m\u00f5lemas seerias. Teeme n\u00e4ite, kus soovime liita kaks seeriat, kuid k\u00f5ik kasutatavad sildid ei ole m\u00f5lemas seerias samad.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">sonastik_a = {'MR10': 34, 'MM34': 56, 'MM55': 66}\r\nsonastik_b = {'MM13': 34, 'MM34': 20, 'MM55': 30}\r\n\r\nseeria_a = pd.Series(sonastik_a)\r\nseeria_b = pd.Series(sonastik_b)\r\n\r\nseeria_ab = seeria_a + seeria_b\r\n\r\nprint(seeria_ab)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  MM13 \tNaN\r\n  MM34\t76.0\r\n  MM55\t96.0\r\n  MR10 \tNaN\r\n  dtype: float64\r\n<\/pre>\n<p>N\u00e4eme, et nende sildide v\u00e4\u00e4rtused, mis ei olnud samad, on <code>NaN<\/code> (not a number), mis t\u00e4hendab sisuliselt, et tegemist on puuduva v\u00e4\u00e4rtusega. Kui m\u00f5lema seeria sildid on samad, siis liidetakse siltidele vastavad v\u00e4\u00e4rtused.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">sonastik_a = {'MM13': 34, 'MM34': 56, 'MM55': 66}\r\nsonastik_b = {'MM13': 34, 'MM34': 20, 'MM55': 30}\r\n\r\nseeria_a = pd.Series(sonastik_a)\r\nseeria_b = pd.Series(sonastik_b)\r\n\r\nseeria_ab = seeria_a + seeria_b\r\n\r\nprint(seeria_ab)<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  MM13\t68\r\n  MM34\t76\r\n  MM55\t96\r\n  dtype: int64\r\n<\/pre>\n<p>Sarnaselt saab seeriad omavahel lahutada, korrutada, jagada ja astendada.<\/p>\n<p>Vaatame veidi keerulisemat olukorda. Olgu meil seeria, kus on inimeste kehakaalud kilogrammides ja seeria, kus on samade inimeste pikkused meetrites. Tahame arvutada nende seeriate p\u00f5hjal inimeste kehamassiindeksi (KMI). KMI leidmiseks jagatakse kehakaal pikkuse ruuduga (<code>KMI = kehakaal \/ pikkus**2<\/code>).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">sonastik_kaal = {'Madis': 66.4, 'Kristi': 54.0, 'Ott': 92.3}\r\nsonastik_pikkus = {'Madis': 1.81, 'Kristi': 1.69, 'Ott': 1.95}\r\n\r\nkaal = pd.Series(sonastik_kaal)\r\npikkus = pd.Series(sonastik_pikkus)\r\n\r\nKMI = kaal \/ pikkus**2\r\n\r\nprint(KMI.round(1)) # \u00dcmardamine 1 koht p\u00e4rast koma<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  Madis \t20.3\r\n  Kristi\t18.9\r\n  Ott   \t24.3\r\n  dtype: float64\r\n<\/pre>\n<p>N\u00fc\u00fcd aga vaatame olukorda, kus me tahame leida seeriast k\u00f5ik v\u00e4\u00e4rtused, mis vastavad meie seatud tingimustele. N\u00e4iteks soovime leida eelmises n\u00e4iteks k\u00f5ik need KMI v\u00e4\u00e4rtused, mis j\u00e4\u00e4vad alla normpiiri (normaalne KMI on vahemikus 19 &#8211; 25). Me saame tingimusavaldist kasutada otse seeria peal, kirjutades avaldise nurksulgude vahele p\u00e4rast seeria muutujanime. Siin on aga oluline, et avaldises esineks seeria muutujanimi.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">sonastik_kaal = {'Madis': 66.4, 'Kristi': 54.0, 'Ott': 92.3}\r\nsonastik_pikkus = {'Madis': 1.81, 'Kristi': 1.69, 'Ott': 1.95}\r\n\r\nkaal = pd.Series(sonastik_kaal)\r\npikkus = pd.Series(sonastik_pikkus)\r\n\r\nKMI = kaal \/ pikkus**2\r\n\r\nprint(KMI[KMI &lt;= 19])<\/pre>\n<pre><span style=\"color: #3366ff\"><strong>&gt;&gt;&gt;<\/strong><\/span> <span style=\"color: #999999\">%Run guido.py<\/span>\r\n  Kristi\t18.906901\r\n  dtype: float64\r\n<\/pre>\n<p>Sarnaselt saab kasutada ka teisi tingimusavaldiste operaatoreid (<code>==<\/code>, <code>&gt;<\/code>, <code>&gt;=<\/code>, <code>&lt;<\/code>, <code>!=<\/code>).<\/p>\n","protected":false},"author":16,"menu_order":4,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-643","chapter","type-chapter","status-publish","hentry"],"part":93,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/643","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\/643\/revisions"}],"predecessor-version":[{"id":739,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/643\/revisions\/739"}],"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\/643\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=643"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=643"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=643"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}