{"id":89206,"date":"2020-07-20T07:41:57","date_gmt":"2020-07-20T05:41:57","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh"},"modified":"2020-07-20T07:41:57","modified_gmt":"2020-07-20T05:41:57","slug":"chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","title":{"rendered":"\u0160ta mo\u017ee po\u0107i po zlu sa Data Science? Prikupljanje podataka","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/510944\/\"><img decoding=\"async\" alt=\"\u0160ta mo\u017ee po\u0107i po zlu sa Data Science? Prikupljanje podataka\" src=\"\/wp-content\/uploads\/2020\/07\/49fb91fc3e45754e437b2c1fc4fec12f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nDanes obstaja 100500 te\u010dajev o Data Science in \u017ee dolgo je znano, da je mo\u017eno zaslu\u017eiti najve\u010d prav s te\u010daji o Data Science (zakaj kopati, ko lahko prodaja\u0161 lopate?). Glavna slabost teh te\u010dajev je, da nimajo nobene povezave z dejanskim delom: nih\u010de vam ne bo dal \u010distih, obdelanih podatkov v \u017eelenem formatu. In ko kon\u010date te\u010daj in za\u010dnete re\u0161evati pravo nalogo \u2014 se pojavijo \u0161tevilne te\u017eave.<\/p>\n<p>Zato za\u010dnemo serijo zapiskov \u201eKaj se lahko zgodi narobe z Data Science\u201c, ki temeljijo na resni\u010dnih dogodkih, ki so se zgodili men, mojim prijateljem in kolegom. Razpravljali bomo o resni\u010dnih primerih tipi\u010dnih nalog v Data Science: kako se to v resnici dogaja. Danes bomo za\u010deli z nalogo zbiranja podatkov.<\/p>\n<p>In prvo, ob \u010demer se ljudje spotikajo, ko za\u010dnejo delati s pravimi podatki \u2014 je prav zbiranje teh relevantnih podatkov. Klju\u010dna sporo\u010dila tega \u010dlanka:<\/p>\n<blockquote><p><b>Sistemati\u010dno podcenjujemo \u010das, vire in trud potreben za zbiranje, \u010di\u0161\u010denje in pripravo podatkov.<\/b><\/p><\/blockquote>\n<p>\nIn najpomembneje, razpravljali bomo o tem, kaj storiti, da do tega ne pride.<\/p>\n<p>Po razli\u010dnih ocenah, \u010di\u0161\u010denje, transformacija, obdelava podatkov, in\u017eeniring zna\u010dilnosti itd. predstavlja 80-90% \u010dasa, analiza pa 10-20%, medtem ko se prakti\u010dno ves u\u010dni material osredoto\u010da izklju\u010dno na analizo.<\/p>\n<p>Poglejmo tipi\u010den primer preproste analiti\u010dne naloge v treh razli\u010dicah in videli bomo, kak\u0161ne so lahko \u201eolep\u0161ave okoli\u0161\u010din\u201c.<\/p>\n<p>In za primer bomo spet obravnavali podobne razli\u010dice naloge zbiranja podatkov in primerjave skupnosti za:<\/p>\n<ol>\n<li>Dva subreddita Reddit<\/li>\n<li>Dva razdelka Habr<\/li>\n<li>Dve skupini Odnoklassniki<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Hipoteti\u010dni pristop v teoriji<\/h2>\n<p>\nOdpri spletno stran in preberi primere; \u010de je jasno, si zabele\u017ei nekaj ur za branje, nekaj ur za kodo po primerih in odpravljanje napak. Dodaj nekaj ur za zbiranje. Dodaj \u0161e nekaj ur za rezervo (pomno\u017ei z dvema in dodaj N ur).<\/p>\n<p><b>Klju\u010dna to\u010dka: ocena \u010dasa temelji na predpostavkah in domnevah, koliko \u010dasa bo to vzelo.<\/b><\/p>\n<p>Analiza \u010dasa se mora za\u010deti z oceno naslednjih parametrov za hypoteti\u010dno nalogo, opisano zgoraj:<\/p>\n<ul>\n<li>Kak\u0161na je velikost podatkov in koliko jih je treba fizi\u010dno zbrati (*glej spodaj*).<\/li>\n<li>Kak\u0161no je \u010das zbiranja enega zapisa in koliko \u010dasa je treba \u010dakati, preden lahko zberemo drugega.<\/li>\n<li>Vklju\u010diti kodo za ohranjanje stanja in zagon ponovnega zagona, ko (ne \u010de) vse odpove.<\/li>\n<li>Razjasniti, ali potrebujemo avtentikacijo in vklju\u010diti \u010das za dostop prek API.<\/li>\n<li>Vklju\u010diti \u0161tevilo napak kot funkcijo zapletenosti podatkov \u2014 oceniti glede na posebno nalogo: struktura, koliko preobrazb, kaj in kako ekstraktiramo.<\/li>\n<li>Vklju\u010diti napake omre\u017eja in probleme z nenavadnim vedenjem projekta.<\/li>\n<li>Oceniti, ali so potrebne funkcije v dokumentaciji in \u010de niso, koliko \u010dasa in kako naj se pripravi workaround.<\/li>\n<\/ul>\n<p>\nNajpomembnej\u0161e je, da za oceno \u010dasa dejansko potrebujete vlo\u017eiti \u010das in trud za 'bojne izvidnice' \u2014 le tako bo va\u0161e na\u010drtovanje ustrezno. Zato, ne glede na to, kako vas pritiskajo, da poveste 'koliko \u010dasa potrebujemo za zbiranje podatkov' \u2014 si vzemite \u010das za predhodno analizo in argumentirajte, koliko \u010dasa bo variiralo glede na dejanske parametre naloge.<\/p>\n<p>In zdaj bomo prikazali konkretne primere, kjer se ti parametri bodo spreminjali.<\/p>\n<p><b>Klju\u010dna to\u010dka: ocena temelji na analizi klju\u010dnih dejavnikov, ki vplivajo na obseg in kompleksnost dela.<\/b><\/p>\n<p>Ocena, ki temelji na ugibanjih \u2014 je dober pristop, ko so funkcionalni elementi dovolj majhni in ni veliko dejavnikov, ki bi lahko bistveno vplivali na strukturo naloge. Vendar pa v primeru nekaterih nalog Data Science postane teh dejavnikov izjemno veliko in tak pristop postane neustrezen.<\/p>\n<h2>Primerjava skupnosti Reddit<\/h2>\n<p>\nZa\u010dnimo z najpreprostej\u0161im primerom (kar se bo pozneje izkazalo). Na splo\u0161no, \u010de povemo povsem po\u0161teno, je pred nami prakti\u010dno idealen primer, preverili bomo na\u0161 kontrolni seznam kompleksnosti:<\/p>\n<ul>\n<li>Obstaja urejen, razumljiv in dokumentiran API.<\/li>\n<li>Zelo preprosto in kar je najpomembnej\u0161e, token se samodejno generira.<\/li>\n<li>Je <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/praw-dev\/praw\">python wrapper<\/a><\/noindex> \u2014 s kupom primerov.<\/li>\n<li>Skupnost, ki se ukvarja z analizo in zbiranjem podatkov na redditu (do YouTube videov, ki razlagajo, kako uporabiti python wrapper) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.programcreek.com\/python\/example\/86599\/praw.Reddit\">tukaj je na primer<\/a><\/noindex>.<\/li>\n<li>Potrebne metode verjetno obstajajo v API-ju. Poleg tega, koda izgleda kompaktno in \u010disto, spodaj je primer funkcije, ki zbira komentarje k objavi.<\/li>\n<\/ul>\n<p><\/p>\n<pre><code class=\"python\">def get_comments(submission_id):\n    reddit = Reddit(check_for_updates=False, user_agent=AGENT)\n    submission = reddit.submission(id=submission_id)\n    more_comments = submission.comments.replace_more()\n    if more_comments:\n        skipped_comments = sum(x.count for x in more_comments)\n        logger.debug('Skipped %d MoreComments (%d comments)',\n                     len(more_comments), skipped_comments)\n    return submission.comments.list()\n<\/code><\/pre>\n<p><i>Prevzeto iz <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/timendum\/reddit-utilities\/blob\/master\/thread-export.py\">tole<\/a><\/noindex> seznam pohodln\u00fdch utilit pro obalov\u00e1n\u00ed.<\/i><\/p>\n<p>I kdy\u017e m\u00e1me p\u0159ed sebou nejlep\u0161\u00ed sc\u00e9n\u00e1\u0159, p\u0159esto je t\u0159eba vz\u00edt v \u00favahu \u0159adu d\u016fle\u017eit\u00fdch faktor\u016f z re\u00e1ln\u00e9ho \u017eivota:<\/p>\n<ul>\n<li>API limity \u2014 jsme nuceni z\u00edsk\u00e1vat data po d\u00e1vk\u00e1ch (pauzy mezi po\u017eadavky atd.).<\/li>\n<li>\u010cas sb\u011bru \u2014 pro kompletn\u00ed anal\u00fdzu a porovn\u00e1n\u00ed je pot\u0159eba vy\u010dlenit zna\u010dn\u00fd \u010das pouze na to, aby pavouk pro\u0161el subredditem.<\/li>\n<li>Bota je t\u0159eba provozovat na serveru \u2014 nem\u016f\u017eete ho jen tak spustit na notebooku, vlo\u017eit do batohu a odjet. Proto jsem v\u0161e spustil na VPS. S promo k\u00f3dem habrahabr10 m\u016f\u017eete u\u0161et\u0159it dal\u0161\u00edch 10 % n\u00e1klad\u016f.<\/li>\n<li>Fyzick\u00e1 nedostupnost n\u011bkter\u00fdch dat (vid\u00ed je administr\u00e1to\u0159i nebo jsou p\u0159\u00edli\u0161 obt\u00ed\u017en\u011b sb\u00edrateln\u00e1) \u2014 je t\u0159eba to vz\u00edt v \u00favahu, ne v\u0161echna data lze v rozumn\u00e9m \u010dase shrom\u00e1\u017edit.<\/li>\n<li>Chyby p\u0159i pr\u00e1ci s\u00edt\u011b: pr\u00e1ce se s\u00edt\u00ed je bolest.<\/li>\n<li>Jsou to \u017eiv\u00e1 skute\u010dn\u00e1 data \u2014 t\u011b\u017eko jsou zcela \u010dist\u00e1.<\/li>\n<\/ul>\n<p>\nSamoz\u0159ejm\u011b, je nutn\u00e9 vz\u00edt v \u00favahu uveden\u00e9 nuance ve v\u00fdvoji. Konkr\u00e9tn\u00ed hodiny\/dny z\u00e1vis\u00ed na zku\u0161enostech s v\u00fdvojem nebo zku\u0161enostech s podobn\u00fdmi \u00fakoly, nicm\u00e9n\u011b vid\u00edme, \u017ee zde je \u00fakol \u010dist\u011b in\u017een\u00fdrsk\u00fd a nevy\u017eaduje dal\u0161\u00ed kroky k \u0159e\u0161en\u00ed \u2014 v\u0161e lze velmi dob\u0159e odhadnout, napl\u00e1novat a realizovat.<\/p>\n<h2>Porovn\u00e1n\u00ed sekc\u00ed Habra<\/h2>\n<p>\nP\u0159ejdeme k zaj\u00edmav\u011bj\u0161\u00edmu a netradi\u010dn\u00edmu p\u0159\u00edpadu porovn\u00e1n\u00ed proud\u016f a\/nebo sekc\u00ed Habra.<\/p>\n<p>Zkontrolujme n\u00e1\u0161 checklist slo\u017eitosti \u2014 zde, abychom pochopili ka\u017ed\u00fd bod, budeme muset trochu zabrouzdat do \u00fakolu a experimentovat.<\/p>\n<ul>\n<li>Nejprve si mysl\u00edte, \u017ee existuje API, ale nen\u00ed. Ano, m\u00e1 Habr API, ale je nedostupn\u00e9 pro u\u017eivatele (nebo mo\u017en\u00e1 v\u016fbec nefunguje).<\/li>\n<li>Pak za\u010dnete jednodu\u0161e parsovat HTML \u2014 'import requests', co by se mohlo pokazit?<\/li>\n<li>A jak vlastn\u011b parsovat? Nejjednodu\u0161\u0161\u00ed a \u010dasto pou\u017e\u00edvan\u00fd p\u0159\u00edstup je iterovat podle ID, poznamenejme, \u017ee nen\u00ed nejefektivn\u011bj\u0161\u00ed a bude pot\u0159eba zpracov\u00e1vat r\u016fzn\u00e9 p\u0159\u00edpady \u2014 zde je p\u0159\u00edklad hustoty skute\u010dn\u00fdch ID mezi v\u0161emi existuj\u00edc\u00edmi.\n<p><img decoding=\"async\" alt=\"\u0160ta mo\u017ee po\u0107i po zlu sa Data Science? Prikupljanje podataka\" src=\"\/wp-content\/uploads\/2020\/07\/2c67fc14f672e92979edd617314210da.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Prevzeto iz <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/218607\/\">tole<\/a><\/noindex> \u010dlankov.<\/i><\/li>\n<li>Surove podatke, ovite v HTML nad omre\u017ejem, so prava bole\u010dina. Na primer, \u017eelite zbrati in shraniti oceno \u010dlanka: izvle\u010dete score iz HTML in se odlo\u010dite, da ga shranite kot \u0161tevilko za nadaljnjo obdelavo:\u00a0\n<p>1) int(score) povzro\u010da napako: na Habrju minus, kot na primer v nizu \"\u20135\" \u2014 to je kratka vez, ne znak minusa (nepri\u010dakovano, da?), zato sem moral obuditi parser s takim groznim popravilom.<\/p>\n<pre><code class=\"python\">poskusi:\n      score_txt = post.find(class_=\"score\").text.replace(u\"\u2013\",\"-\").replace(u\"+\",\"+\")\n      score = int(score_txt)\n      \u010de check_date(date):\n        post_score += score\n<\/code><\/pre>\n<p>\nDatumov, plusov in minusov morda sploh ni (kot vidimo zgoraj pri funkciji check_date in je bilo tudi tako).<\/p>\n<p>2) Neekranirani posebni znaki \u2014 ti bodo pri\u0161li, potrebno se je pripraviti.<\/p>\n<p>3) Struktura se spreminja glede na vrsto objave.<\/p>\n<p>4) Stare objave lahko imajo **\u010dudno strukturo**.<\/li>\n<li>V bistvu bo potrebno obravnavati obdelavo napak in to, kar se lahko ali ne more zgoditi, in ne moremo zagotovo napovedati, kaj bo \u0161lo narobe in kak\u0161na bo \u0161e lahko struktura in kje se bo kaj zru\u0161ilo \u2014 preprosto bo potrebno poskusiti in upo\u0161tevati napake, ki jih vr\u017ee parser.<\/li>\n<li>Kasneje razumete, da morate parsati v ve\u010d niti, sicer bo enotin pars trajal 30+ ur (to je \u010disto \u010das izvedbe \u017ee delujo\u010dega enotnega parserja, ki spi in ne naleti na nobene prepovedi). V <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276383\/\">tole<\/a><\/noindex> \u010dlanku je to na neki to\u010dki pripeljalo do tak\u0161ne sheme:<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"\u0160ta mo\u017ee po\u0107i po zlu sa Data Science? Prikupljanje podataka\" src=\"\/wp-content\/uploads\/2020\/07\/9ad1853f3ee2c9321ee9f1a5e3efea7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSkupaj kontrolni seznam glede zahtevnosti:<\/p>\n<ul>\n<li>Delo z omre\u017ejem in parsanjem HTML z iteracijo in ponavljanjem po ID-ju.<\/li>\n<li>Dokumenti so neenotne strukture.<\/li>\n<li>Obstaja veliko mest, kjer lahko koda zlahka pade.<\/li>\n<li>Potrebno je pisati || kodo.<\/li>\n<li>Manjka potrebna dokumentacija, primeri kode in\/ali skupnost.<\/li>\n<\/ul>\n<p>\nPogo\u017ena ocena \u010dasa za to nalogo bo 3-5 krat vi\u0161ja, kot za zbiranje podatkov z Reddita.<\/p>\n<h2>Primerjava skupin Odnoklassnikov<\/h2>\n<p>\nPreidimo k tehni\u010dno najzanimivej\u0161emu primeru iz opisanih. Zame je bil zanimiv prav zato, ker se na prvi pogled zdi dovolj trivialen, a ni povsem tak \u2014 takoj ko ga s pal\u010dko dotaknemo.<\/p>\n<p>Za\u010dnimo z na\u0161im kontrolnim seznamom zahtevnosti in opazimo, da se bo izkazalo, da so mnogi izmed njih precej te\u017eji, kot se sprva zdijo:<\/p>\n<ul>\n<li>API obstaja, vendar skoraj v celoti nima potrebnih funkcij.<\/li>\n<li>Za dolo\u010dene funkcije je potrebno zaprositi za dostop po e-po\u0161ti, torej dodelitev dostopa ni takoj\u0161nja.<\/li>\n<li>Dokumentacija je izuzetno lo\u0161a (za po\u010detak, me\u0161aju se ruski i engleski termini, i to apsolutno nekonsistentno \u2014 ponekad jednostavno morate da pogodite \u0161ta se od vas tra\u017ei negde) i, \u0161to je jo\u0161 gore, dizajn nije prilago\u0111en za prikupljanje podataka, na primer, <noindex><a rel=\"nofollow\" href=\"https:\/\/apiok.ru\/dev\/methods\/rest\/discussions\/discussions.getComments\">neophodnoj funkciji<\/a><\/noindex>.<\/li>\n<li>Tra\u017ei sesiju u dokumentaciji, a u stvarnosti je ne koristi \u2014 a nema na\u010dina da se razjasne sve nijanse API re\u017eima, osim da se poga\u0111a i nada da \u0107e ne\u0161to raditi.<\/li>\n<li>Nedostaju primeri i zajednica, jedina ta\u010dka oslanjanja u prikupljanju informacija je mali <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/alternativshik\/python-odnoklassniki\">wrapper<\/a><\/noindex> na Pythonu (bez mnogo primera kori\u0161\u0107enja).<\/li>\n<li>Najradnije re\u0161enje izgleda kao Selenium, jer su mnogi potrebni podaci zaklju\u010dani.<br \/>\n1) To zna\u010di da se vr\u0161i autorizacija preko fikcionalnog korisnika (i ru\u010dna registracija).<\/p>\n<p>2) Me\u0111utim, sa Seleniumom nema garancija za pravilno i ponovljivo funkcionisanje (barem u slu\u010daju sa ok.ru sigurno).<\/p>\n<p>3) Ok.ru sajt sadr\u017ei JavaScript gre\u0161ke i ponekad se \u010dudno i nekonsistentno pona\u0161a.<\/p>\n<p>4) Potrebno je baviti se paginacijom, u\u010ditavanjem elemenata itd\u2026<\/p>\n<p>5) Gre\u0161ke API-ja koje proslijedi wrapper mora\u0107ete da obradite na slede\u0107i na\u010din (deo eksperimentalnog koda):<\/p>\n<pre><code class=\"python\">def get_comments(args, context, discussions):\n    pavza = 1\n    \u010de args.extract_comments:\n        vse_komentarji = set()\n#ima smisel spremljati \u017ee obdelane razprave\n        za razpravo v tqdm(discussions): \n            poskusi:\n                komentarji = get_comments_from_discussion_via_api(context, discussion)\n            razen odnoklassniki.api.OdnoklassnikiError as e:\n                \u010de \"NOT_FOUND\" v str(e):\n                    komentarji = set()\n                druga\u010de:\n                    print(e)\n                    bp()\n                    pass\n            vse_komentarji |= komentarji\n            time.sleep(pavza)\n        return vse_komentarji\n<\/code><\/pre>\n<p>\nMoja omiljena gre\u0161ka je bila:<\/p>\n<p><code>OdnoklassnikiError(\"Napaka(koda: 'None', opis: 'HTTP napaka', metoda: 'discussions.getComments', params: \u2026)\")<\/code><\/p>\n<p>6) Na kraju, kombinacija Selenium + API izgleda kao najracionalnije re\u0161enje.<\/li>\n<li>Potrebno je sa\u010duvati stanje i restartovati sistem, obraditi mno\u0161tvo gre\u0161aka, uklju\u010duju\u0107i nekonsistentno pona\u0161anje sajta \u2014 s obzirom na to da su te gre\u0161ke te\u0161ko zamislive (ako naravno, ne pi\u0161ete profesionalno parsere).<\/li>\n<\/ul>\n<p>\nProcena vremena za ovaj zadatak bi\u0107e 3-5 puta ve\u0107a nego za prikupljanje podataka sa Habr-a. Iako u slu\u010daju Habr-a koristimo povr\u0161inski pristup sa parsiranjem HTML-a, u slu\u010daju OK mo\u017eemo na kriti\u010dnim mestima raditi sa API-jem.<\/p>\n<h2>Zaklju\u010dki<\/h2>\n<p>\nNe glede na to, kako zelo od vas zahtevajo oceno rokov \"na kraju samem\" (danes na\u010drtujemo!), je skoraj nemogo\u010de oceniti \u010das izvedbe obse\u017enega modula podatkovnega cevovoda brez analize parametrov naloge. <\/p>\n<p>\u010ce se nekoliko filozofsko pogovarjava, strategije ocenjevanja v agilnem okolju dobro ustrezajo in\u017eenirskim nalogam, vendar pri bolj eksperimentalnih in v nekem smislu \"ustvarjalnih\" raziskovalnih nalogah, torej tistih, ki so manj predvidljive, nastajajo te\u017eave, kot v primerih, obravnavanih tukaj. <\/p>\n<p>Seveda je zbiranje podatkov jasen ilustrativen primer \u2014 obi\u010dajno se ta naloga zdi izjemno preprosta in tehni\u010dno nezapletena, toda prav v podrobnostih se pogosto skriva hudi\u010d. In prav na tej nalogi lahko poka\u017eemo ves spekter mogo\u010dih variacij, kar se lahko zgodi narobe in kako dolgo se lahko delo raztegne. <\/p>\n<p>\u010ce na hitro pogledamo zna\u010dilnosti naloge brez dodatnih eksperimentov, sta Reddit in OK videti podobno: imata API, python wrapper, toda v bistvu je razlika ogromna. Glede na te parametre se zdi, da je parsiranje Habr bolj zapleteno kot OK \u2014 v praksi pa je ravno obratno, in to lahko ugotovimo z enostavnimi eksperimenti analize parametrov naloge.<\/p>\n<p>Po mojem mnenju je naju\u010dinkovitej\u0161i pristop pribli\u017ena ocena \u010dasa, ki ga boste potrebovali za za\u010detno analizo in enostavne prve eksperimente, branje dokumentacije \u2014 to vam omogo\u010da, da podate natan\u010dno oceno za celotno delo. V terminih priljubljene agilne metodologije \u2014 prosim, da mi odprete nalogo za \"oceno parametrov naloge\", na podlagi katere lahko podam oceno tega, kar je mogo\u010de izvesti v okviru \"sprinta\" in dam natan\u010dnej\u0161o oceno za vsako nalogo.<\/p>\n<p>Zato se zdi naju\u010dinkovitej\u0161i argument, ki bi \"netehni\u010dnemu\" strokovnjaku pokazal, kako zelo se bo \u010dasi in viri spreminjali glede na parametre, ki jih treba \u0161e oceniti.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=param&amp;utm_content=datascience1#order\"><img decoding=\"async\" alt=\"\u0160ta mo\u017ee po\u0107i po zlu sa Data Science? Prikupljanje podataka\" src=\"\/wp-content\/uploads\/2020\/07\/2ca567a078c8500d37dfcf982e76252c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/510944\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 100500 \u043a\u0443\u0440\u0441\u043e\u0432 \u043f\u043e Data Science \u0438 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u0435\u043d\u0435\u0433 \u0432 Data Science \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0443\u0440\u0441\u0430\u043c\u0438 \u043f\u043e Data Science (\u0437\u0430\u0447\u0435\u043c \u043a\u043e\u043f\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u043e\u043f\u0430\u0442\u044b?). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0438\u043d\u0443\u0441 \u044d\u0442\u0438\u0445 \u043a\u0443\u0440\u0441\u043e\u0432 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439: \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0434\u0430\u0441\u0442 \u0432\u0430\u043c \u0447\u0438\u0441\u0442\u044b\u0435, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":89207,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-89206","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0427\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a \u0441 Data Science? \u0421\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-20T05:41:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-20T05:41:57+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kaj lahko gre narobe pri Data Science? Zbiranje podatkov | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0427\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a \u0441 Data Science? \u0421\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-20T05:41:57+00:00","article:modified_time":"2020-07-20T05:41:57+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"89206","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:51:09","updated":"2026-08-11 12:50:12","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/89206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=89206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/89206\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/89207"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=89206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=89206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=89206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}