{"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\/sv\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","title":{"rendered":"Vad kan g\u00e5 fel med Data Science? Datasamling","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=\"Vad kan g\u00e5 fel med Data Science? Datasamling\" src=\"\/wp-content\/uploads\/2020\/07\/49fb91fc3e45754e437b2c1fc4fec12f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nIdag finns det 100500 kurser i Data Science, och det \u00e4r l\u00e4nge k\u00e4nt att man kan tj\u00e4na mest pengar p\u00e5 Data Science genom kurser i Data Science (varf\u00f6r gr\u00e4va n\u00e4r man kan s\u00e4lja spadar?). Den st\u00f6rsta nackdelen med dessa kurser \u00e4r att de inte har n\u00e5got att g\u00f6ra med verkligt arbete: ingen kommer att ge dig rena, bearbetade data i r\u00e4tt format. Och n\u00e4r du g\u00e5r ut fr\u00e5n kurserna och b\u00f6rjar l\u00f6sa en riktig uppgift, dyker det upp m\u00e5nga nyanser.<\/p>\n<p>D\u00e4rf\u00f6r startar vi en serie artiklar \"Vad kan g\u00e5 fel med Data Science\", baserade p\u00e5 verkliga h\u00e4ndelser som har h\u00e4nt mig, mina v\u00e4nner och kollegor. Vi kommer att analysera typiska Data Science-uppgifter med verkliga exempel: hur det verkligen g\u00e5r till. Vi b\u00f6rjar idag med uppgiftshantering av datasamling.<\/p>\n<p>Och det f\u00f6rsta som folk snubblar \u00f6ver n\u00e4r de b\u00f6rjar arbeta med verkliga data \u00e4r just sj\u00e4lva insamlingen av dessa relevanta data. Huvudbudskapet i den h\u00e4r artikeln:<\/p>\n<blockquote><p><b>Vi underskattar systematiskt tid, resurser och insatser f\u00f6r insamling, reng\u00f6ring och f\u00f6rberedelse av data.<\/b><\/p><\/blockquote>\n<p>\nOch viktigast av allt, vi kommer att diskutera vad man ska g\u00f6ra f\u00f6r att undvika detta.<\/p>\n<p>Enligt olika uppskattningar tar reng\u00f6ring, omvandling, databehandling, feature engineering osv 80-90% av tiden, medan analysen tar 10-20%, medan n\u00e4stan allt studiematerial fokuserar enbart p\u00e5 analys.<\/p>\n<p>L\u00e5t oss bryta ner ett enkelt analytiskt problem i tre varianter som ett typiskt exempel och se vilka 'f\u00f6rsv\u00e5rande omst\u00e4ndigheter' som kan f\u00f6rekomma.<\/p>\n<p>Och som exempel kommer vi \u00e5terigen att betrakta s\u00e5dana variationer av datasamlingens uppgift och j\u00e4mf\u00f6relse av samh\u00e4llen f\u00f6r:<\/p>\n<ol>\n<li>Tv\u00e5 subreddits p\u00e5 Reddit<\/li>\n<li>Tv\u00e5 avsnitt p\u00e5 Habr\u00e9<\/li>\n<li>Tv\u00e5 grupper p\u00e5 Odnoklassniki<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Hypotetisk metod inom teorin<\/h2>\n<p>\n\u00d6ppna webbplatsen och l\u00e4s exempel, om det \u00e4r f\u00f6rst\u00e5eligt, avs\u00e4tta n\u00e5gra timmar f\u00f6r l\u00e4sning, n\u00e5gra timmar f\u00f6r kod utifr\u00e5n exemplen och fels\u00f6kning. L\u00e4gg till n\u00e5gra timmar f\u00f6r insamling. L\u00e4gg till n\u00e5gra timmar som buffert (multiplicera med tv\u00e5 och l\u00e4gg till N timmar).<\/p>\n<p><b>Huvudpo\u00e4ngen: tidsbed\u00f6mningen baseras p\u00e5 antaganden och gissningar om hur l\u00e5ng tid detta kommer att ta.<\/b><\/p>\n<p>Analysen av tiden b\u00f6r inledas med att bed\u00f6ma f\u00f6ljande parametrar f\u00f6r den hypotetiska uppgiften som beskrivits ovan:<\/p>\n<ul>\n<li>Vad \u00e4r datastorleken och hur mycket av den beh\u00f6ver samlas fysiskt (*se nedan*).<\/li>\n<li>Hur l\u00e5ng tid tar det att samla in en post och hur l\u00e4nge m\u00e5ste man v\u00e4nta innan man kan samla in n\u00e4sta.<\/li>\n<li>Inkludera kodskrivning f\u00f6r att spara tillst\u00e5nd och p\u00e5b\u00f6rja omstart n\u00e4r (inte om) allt kraschar.<\/li>\n<li>Ta reda p\u00e5 om vi beh\u00f6ver autentisering och inkludera tid f\u00f6r att f\u00e5 \u00e5tkomst via API.<\/li>\n<li>Inkludera antalet fel som en funktion av datakomplexitet \u2014 bed\u00f6m detta utifr\u00e5n den specifika uppgiften: struktur, hur m\u00e5nga transformationer, vad och hur vi extraherar.<\/li>\n<li>Inkludera n\u00e4tverksfel och problem med o\u00f6nskat beteende i projektet.<\/li>\n<li>Bed\u00f6m om de n\u00f6dv\u00e4ndiga funktionerna finns i dokumentationen, och om de inte g\u00f6r det, hur mycket som beh\u00f6vs f\u00f6r en workaround.<\/li>\n<\/ul>\n<p>\nDet viktigaste \u00e4r att f\u00f6r tidsbed\u00f6mning \u2014 ni m\u00e5ste verkligen avs\u00e4tta tid och anstr\u00e4ngningar f\u00f6r 'reconnaissance by combat' \u2014 endast d\u00e5 blir er planering adekvat. S\u00e5 oavsett hur mycket ni pressas att s\u00e4ga 'hur l\u00e4nge tar det att samla in data' \u2014 ge er tid f\u00f6r en f\u00f6ranalys och argumentera f\u00f6r hur mycket tiden kan variera beroende p\u00e5 uppgiftens verkliga parametrar.<\/p>\n<p>Och nu kommer vi att visa konkreta exempel d\u00e4r s\u00e5dana parametrar kommer att variera.<\/p>\n<p><b>Nyckelpunkten: bed\u00f6mningen baseras p\u00e5 analys av de huvudsakliga faktorer som p\u00e5verkar omfattningen och komplexiteten av arbetet.<\/b><\/p>\n<p>En gissningsbaserad bed\u00f6mning \u00e4r en bra metod n\u00e4r de funktionella elementen \u00e4r tillr\u00e4ckligt sm\u00e5 och det inte finns s\u00e5 m\u00e5nga faktorer som kan p\u00e5verka uppgiftens struktur avsev\u00e4rt. Men i fallet med vissa Data Science-uppgifter blir dessa faktorer extremt m\u00e5nga och en s\u00e5dan metod blir otillr\u00e4cklig.<\/p>\n<h2>J\u00e4mf\u00f6relse av Reddit-gemenskaper<\/h2>\n<p>\nL\u00e5t oss b\u00f6rja med det enklaste fallet (som senare visar sig vara fallet). \u00c4rligt talat, n\u00e4r vi ser p\u00e5 det s\u00e5 har vi n\u00e4stan ett perfekt fall som vi ska kontrollera v\u00e5r sv\u00e5righetschecklista med:<\/p>\n<ul>\n<li>Det finns ett ordnat, tydligt och v\u00e4ldokumenterat API.<\/li>\n<li>Mycket enkelt och framf\u00f6r allt f\u00e5r vi automatiskt en token.<\/li>\n<li>Det finns <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/praw-dev\/praw\">python wrapper<\/a><\/noindex> \u2014 med massor av exempel.<\/li>\n<li>Gemenskapen som sysslar med analys och insamling av data p\u00e5 Reddit (inklusive YouTube-videor som f\u00f6rklarar hur man anv\u00e4nder python wrapper) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.programcreek.com\/python\/example\/86599\/praw.Reddit\">h\u00e4r \u00e4r ett exempel<\/a><\/noindex>.<\/li>\n<li>De metoder vi beh\u00f6ver finns troligen i API:et. Dessutom ser koden kompakt och ren ut, nedan \u00e4r ett exempel p\u00e5 en funktion som samlar in kommentarer p\u00e5 ett inl\u00e4gg.<\/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>Taget fr\u00e5n <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/timendum\/reddit-utilities\/blob\/master\/thread-export.py\">denna<\/a><\/noindex> en samling anv\u00e4ndbara verktyg f\u00f6r inslagning.<\/i><\/p>\n<p>Trots att vi har det b\u00e4sta scenariot h\u00e4r, \u00e4r det \u00e4nd\u00e5 viktigt att ta h\u00e4nsyn till ett antal viktiga faktorer fr\u00e5n verkliga livet:<\/p>\n<ul>\n<li>API-gr\u00e4nser \u2014 vi m\u00e5ste h\u00e4mta data i batcher (pausa mellan f\u00f6rfr\u00e5gningarna osv.).<\/li>\n<li>Insamlingstiden \u2014 f\u00f6r en fullst\u00e4ndig analys och j\u00e4mf\u00f6relse m\u00e5ste vi avs\u00e4tta betydande tid f\u00f6r att bara l\u00e5ta spindeln g\u00e5 igenom subreddit.<\/li>\n<li>Boten m\u00e5ste k\u00f6ras p\u00e5 en server \u2014 du kan inte bara starta den p\u00e5 din b\u00e4rbara dator, stoppa den i v\u00e4skan och \u00e5ka iv\u00e4g. D\u00e4rf\u00f6r k\u00f6rde jag allt p\u00e5 en VPS. Med rabattkoden habrahabr10 kan du spara ytterligare 10% p\u00e5 kostnaden.<\/li>\n<li>Fysisk otillg\u00e4nglighet av vissa data (de \u00e4r synliga f\u00f6r administrat\u00f6rer eller \u00e4r f\u00f6r sv\u00e5ra att samla in) \u2014 detta m\u00e5ste beaktas, inte alla data kan i princip samlas in p\u00e5 rimlig tid.<\/li>\n<li>N\u00e4tverksfel: arbete med n\u00e4tverk \u00e4r sm\u00e4rtsamt.<\/li>\n<li>Detta \u00e4r riktiga levande data \u2014 de \u00e4r aldrig rena.<\/li>\n<\/ul>\n<p>\nSj\u00e4lvklart m\u00e5ste man ta h\u00e4nsyn till de angivna nuanserna i utvecklingen. De specifika timmarna\/dagarna beror p\u00e5 utvecklingserfarenhet eller erfarenhet av liknande uppgifter, men vi ser att uppgiften h\u00e4r \u00e4r uteslutande ingenj\u00f6rsm\u00e4ssig och inte kr\u00e4ver n\u00e5gra ytterligare \u00e5tg\u00e4rder f\u00f6r att l\u00f6sa \u2014 allt kan bed\u00f6mas, beskrivas och g\u00f6ras mycket bra.<\/p>\n<h2>J\u00e4mf\u00f6relse av Habr-sektioner<\/h2>\n<p>\nVi g\u00e5r vidare till ett mer intressant och icke trivialt fall av j\u00e4mf\u00f6relse mellan fl\u00f6den och\/eller Habr-sektioner.<\/p>\n<p>Vi kommer att kontrollera v\u00e5r sv\u00e5righetschecklista \u2014 h\u00e4r, f\u00f6r att f\u00f6rst\u00e5 varje punkt, m\u00e5ste man redan experimentera med sj\u00e4lva uppgiften och g\u00f6ra tester.<\/p>\n<ul>\n<li>F\u00f6rst tror du att det finns ett API, men det g\u00f6r det inte. Ja, Habr har ett API, men det \u00e4r bara inte tillg\u00e4ngligt f\u00f6r anv\u00e4ndare (eller kanske fungerar det inte alls).<\/li>\n<li>Sedan b\u00f6rjar du helt enkelt att parsa html \u2014 \"import requests\", vad kan g\u00e5 fel?<\/li>\n<li>Hur parsar man \u00f6verhuvudtaget? Det enklaste och mest anv\u00e4nda tillv\u00e4gag\u00e5ngss\u00e4ttet \u00e4r att iterera \u00f6ver ID, vi noterar att det inte \u00e4r det mest effektiva och vi kommer att beh\u00f6va hantera olika fall \u2014 h\u00e4r \u00e4r ett exempel p\u00e5 densiteten av verkliga ID bland alla som finns.\n<p><img decoding=\"async\" alt=\"Vad kan g\u00e5 fel med Data Science? Datasamling\" src=\"\/wp-content\/uploads\/2020\/07\/2c67fc14f672e92979edd617314210da.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Taget fr\u00e5n <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/218607\/\">denna<\/a><\/noindex> artiklar.<\/i><\/li>\n<li>R\u00e5data som \u00e4r insvept i HTML \u00f6ver n\u00e4tverket \u00e4r en pl\u00e5ga. Till exempel, om du vill samla in och spara artikels po\u00e4ng: du har extraherat po\u00e4ng fr\u00e5n HTML och beslutat att spara det som ett nummer f\u00f6r vidare behandling:\u00a0\n<p>1) int(score) ger ett fel: eftersom p\u00e5 Habr \u00e4r minustecken, som i raden \"\u20135\" \u2014 det h\u00e4r \u00e4r ett kort bindestreck, inte ett minustecken (\u00f6verraskande, eller hur?), s\u00e5 vid n\u00e5got tillf\u00e4lle var jag tvungen att v\u00e4cka parsern till liv med en s\u00e5 h\u00e4r hemsk fix.<\/p>\n<pre><code class=\"python\">f\u00f6rs\u00f6k:\n      score_txt = post.find(class_=\"score\").text.replace(u\"\u2013\", \"-\").replace(u\"+\",\"+\")\n      score = int(score_txt)\n      om check_date(date):\n        post_score += score\n<\/code><\/pre>\n<p>\nDet kan h\u00e4nda att det inte alls finns n\u00e5gra datum, plus eller minus (som vi ser ovan i funktionen check_date, och s\u00e5dant har h\u00e4nt).<\/p>\n<p>2) Oskyddade specialtecken \u2014 de kommer, s\u00e5 man m\u00e5ste vara beredd.<\/p>\n<p>3) Strukturen f\u00f6r\u00e4ndras beroende p\u00e5 typen av inl\u00e4gg.<\/p>\n<p>4) Gamla inl\u00e4gg kan ha **konstig struktur**.<\/li>\n<li>I grunden m\u00e5ste felhantering och vad som kan eller inte kan h\u00e4nda hanteras, och man kan inte f\u00f6ruts\u00e4ga vad som kommer att g\u00e5 fel och hur strukturen kan se ut, man f\u00e5r helt enkelt f\u00f6rs\u00f6ka och ta h\u00e4nsyn till de fel som parsers ger.<\/li>\n<li>Sen inser du att du beh\u00f6ver parsa i flera tr\u00e5dar, annars tar det \u00f6ver 30 timmar att parsa i en enda tr\u00e5d (detta \u00e4r rent exekveringstid f\u00f6r en fungerande entr\u00e5dsparser som sover och inte hamnar under n\u00e5gra bannlysningar). I <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276383\/\">denna<\/a><\/noindex> artikeln ledde det vid n\u00e5got tillf\u00e4lle till ett s\u00e5dant schema:<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Vad kan g\u00e5 fel med Data Science? Datasamling\" src=\"\/wp-content\/uploads\/2020\/07\/9ad1853f3ee2c9321ee9f1a5e3efea7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nH\u00e4r \u00e4r checklistan \u00f6ver sv\u00e5righeterna:<\/p>\n<ul>\n<li>Arbeta med n\u00e4tverket och parsa HTML med iteration och ID-\u00f6verskrift.<\/li>\n<li>Dokument med heterogen struktur.<\/li>\n<li>M\u00e5nga st\u00e4llen d\u00e4r koden l\u00e4tt kan falla.<\/li>\n<li>Det \u00e4r n\u00f6dv\u00e4ndigt att skriva || kod.<\/li>\n<li>Det saknas n\u00f6dv\u00e4ndig dokumentation, kodexempel och\/eller samh\u00e4lle.<\/li>\n<\/ul>\n<p>\nDen tidsm\u00e4ssiga bed\u00f6mningen f\u00f6r denna uppgift kommer att vara 3-5 g\u00e5nger st\u00f6rre \u00e4n f\u00f6r att samla in data fr\u00e5n Reddit.<\/p>\n<h2>J\u00e4mf\u00f6relse av grupper i Odnoklassniki<\/h2>\n<p>\nL\u00e5t oss g\u00e5 vidare till det mest tekniskt intressanta fallet bland de som beskrivs. F\u00f6r mig var det intressant just f\u00f6r att det vid f\u00f6rsta anblick verkar ganska trivialt, men s\u00e5 \u00e4r det verkligen inte \u2014 s\u00e5 fort du petar p\u00e5 det med en pinne.<\/p>\n<p>Vi b\u00f6rjar med v\u00e5r sv\u00e5righetschecklista och noterar att m\u00e5nga av dem kommer att visa sig vara mycket sv\u00e5rare \u00e4n de verkar i b\u00f6rjan:<\/p>\n<ul>\n<li>API finns, men n\u00e4stan helt saknar de n\u00f6dv\u00e4ndiga funktionerna.<\/li>\n<li>Vissa funktioner m\u00e5ste beg\u00e4ras \u00e5tkomst till via e-post, s\u00e5 tilldelningen av \u00e5tkomst \u00e4r inte omedelbar.<\/li>\n<li>Det \u00e4r fruktansv\u00e4rt dokumenterat (f\u00f6r att b\u00f6rja med, blandas ryska och engelska termer \u00f6verallt, och det g\u00f6rs helt inkonsekvent \u2014 ibland m\u00e5ste du helt enkelt gissa vad de vill ha fr\u00e5n dig n\u00e5gonstans) och dessutom passar det inte designm\u00e4ssigt f\u00f6r att h\u00e4mta data, till exempel <noindex><a rel=\"nofollow\" href=\"https:\/\/apiok.ru\/dev\/methods\/rest\/discussions\/discussions.getComments\">den funktion vi beh\u00f6ver<\/a><\/noindex>.<\/li>\n<li>Det kr\u00e4ver session i dokumentationen, men i praktiken anv\u00e4nder det inte detta \u2014 och det finns inget s\u00e4tt att f\u00f6rst\u00e5 alla detaljer i API-l\u00e4gena, f\u00f6rutom att pr\u00f6va sig fram och hoppas att n\u00e5got fungerar.<\/li>\n<li>Det finns inga exempel eller community, den enda st\u00f6dpunkten f\u00f6r att samla information \u00e4r en liten <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/alternativshik\/python-odnoklassniki\">wrapper<\/a><\/noindex> i Python (utan ett stort antal exempel p\u00e5 anv\u00e4ndning).<\/li>\n<li>Det mest fungerande alternativet verkar vara Selenium, eftersom m\u00e5nga av de n\u00f6dv\u00e4ndiga uppgifterna \u00e4r l\u00e5sta.<br \/>\n1) Det vill s\u00e4ga att autentisering sker genom en skenbar anv\u00e4ndare (och registrering f\u00f6r hand).<\/p>\n<p>2) Men med Selenium finns det inga garantier f\u00f6r korrekt och repeterbar funktion (i alla fall i fallet med ok.ru definitivt).<\/p>\n<p>3) Ok.ru-webbplatsen inneh\u00e5ller JavaScript-fel och beter sig ibland konstigt och inkonsekvent.<\/p>\n<p>4) Man m\u00e5ste hantera paginering, laddning av element osv ...<\/p>\n<p>5) API-fel som wrapper ger m\u00e5ste hanteras p\u00e5 ett hackigt s\u00e4tt, till exempel s\u00e5 h\u00e4r (ett avsnitt av experimentell kod):<\/p>\n<pre><code class=\"python\">def get_comments(args, context, discussions):\n    paus = 1\n    om args.extract_comments:\n        all_comments = set()\n#det ger mening att h\u00e5lla koll p\u00e5 redan bearbetade diskussioner\n        f\u00f6r diskussion i tqdm(discussions): \n            f\u00f6rs\u00f6k:\n                kommentarer = get_comments_from_discussion_via_api(context, discussion)\n            utom odnoklassniki.api.OdnoklassnikiError som e:\n                om \"NOT_FOUND\" i str(e):\n                    kommentarer = set()\n                annat:\n                    print(e)\n                    bp()\n                    pass\n            all_comments |= kommentarer\n            time.sleep(paus)\n        return all_comments\n<\/code><\/pre>\n<p>\nMin favoritfel var:<\/p>\n<p><code>OdnoklassnikiError(\"Fel(kod: 'None', beskrivning: 'HTTP-fel', metod: 'discussions.getComments', parametrar: \u2026)\")<\/code><\/p>\n<p>6) I slut\u00e4ndan verkar kombinationen av Selenium + API vara det mest rationella alternativet.<\/li>\n<li>Det kr\u00e4vs bevarande av tillst\u00e5nd och omstart av systemet, hantering av m\u00e5nga fel, inklusive inkonsekvent beteende fr\u00e5n webbplatsen \u2014 dessutom \u00e4r dessa fel ganska sv\u00e5ra att f\u00f6rest\u00e4lla sig (om du inte professionellt skriver parsers, f\u00f6rst\u00e5s).<\/li>\n<\/ul>\n<p>\nDen uppskattade tiden f\u00f6r denna uppgift kommer att vara 3-5 g\u00e5nger l\u00e4ngre \u00e4n f\u00f6r att samla in data fr\u00e5n Habr. Trots att vi i fallet med Habr anv\u00e4nder en rak approach med HTML-parsing, kan vi i kritiska l\u00e4gen arbeta med API i fallet med OK.<\/p>\n<h2>Slutsatser<\/h2>\n<p>\nOavsett hur mycket ni kanske blir ombedda att ge en tidsuppskattning \"p\u00e5 plats\" (vi har ju planering idag!) f\u00f6r det omfattande databehandlingsmodulen, \u00e4r det praktiskt taget aldrig m\u00f6jligt att bed\u00f6ma utf\u00f6randet kvalitativt utan en analys av uppgiftsparametrarna. <\/p>\n<p>Om man pratar lite mer filosofiskt, s\u00e5 passar strategier f\u00f6r bed\u00f6mningar inom agile bra f\u00f6r ingenj\u00f6rsuppgifter, men med uppgifter som \u00e4r mer experimentella och p\u00e5 n\u00e5got s\u00e4tt \"kreativa\" och forskande, det vill s\u00e4ga mindre f\u00f6ruts\u00e4gbara, uppst\u00e5r sv\u00e5righeter, liknande de exempel vi diskuterat h\u00e4r. <\/p>\n<p>Sj\u00e4lvklart \u00e4r datainsamling en tydlig illustrativ exempel \u2014 vanligtvis verkar det vara en otroligt enkel och tekniskt okomplicerad uppgift, och just i detaljerna h\u00e4r d\u00f6ljer sig ofta dj\u00e4vulen. Och just p\u00e5 detta uppdrag kan man visa hela spektrumet av m\u00f6jliga alternativ p\u00e5 vad som kan g\u00e5 fel och hur mycket arbetet kan dra ut p\u00e5 tiden. <\/p>\n<p>Om man snabbt kollar p\u00e5 uppgiftens egenskaper utan ytterligare experiment, s\u00e5 ser Reddit och OK liknande ut: det finns API, python wrapper, men i sj\u00e4lva verket \u00e4r skillnaden enorm. Om man bed\u00f6mer utifr\u00e5n dessa parametrar, s\u00e5 verkar parsing av Habr vara mer komplicerat \u00e4n OK \u2014 men i praktiken \u00e4r det precis tv\u00e4rtom och det kan man avg\u00f6ra genom att utf\u00f6ra enkla experiment f\u00f6r att analysera uppgiftens parametrar.<\/p>\n<p>Utifr\u00e5n min erfarenhet \u00e4r den mest effektiva metoden att g\u00f6ra en ungef\u00e4rlig tidsuppskattning f\u00f6r den inledande analysen och de f\u00f6rsta experimenten, l\u00e4sningen av dokumentationen \u2014 det \u00e4r dessa som g\u00f6r att du kan ge en exakt uppskattning f\u00f6r hela arbetet. I termer av den popul\u00e4ra agile-metodologin \u2014 jag ber om att f\u00e5 ett \u00e4rende under \"bed\u00f6mning av uppgiftens parametrar\", baserat p\u00e5 vilket jag kan ge en uppskattning av vad som kan genomf\u00f6ras inom ramen f\u00f6r \"sprinten\" och ge en mer exakt bed\u00f6mning f\u00f6r varje uppgift.<\/p>\n<p>D\u00e4rf\u00f6r verkar det mest effektiva argumentet vara att f\u00f6rklara f\u00f6r en \"icke-teknisk\" specialist hur mycket tid och resurser som kan variera beroende p\u00e5 parametrarna som fortfarande ska bed\u00f6mas.<\/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=\"Vad kan g\u00e5 fel med Data Science? Datasamling\" src=\"\/wp-content\/uploads\/2020\/07\/2ca567a078c8500d37dfcf982e76252c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>K\u00e4lla: <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\/sv\/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=\"sv_SE\" \/>\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\/sv\/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\udd47Vad kan g\u00e5 fel med Data Science? Datainsamling | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/89206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=89206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/89206\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/89207"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=89206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=89206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=89206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}