{"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\/nl\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","title":{"rendered":"Wat kan er misgaan met Data Science? Gegevensverzameling","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=\"Wat kan er misgaan met Data Science? Gegevensverzameling\" src=\"\/wp-content\/uploads\/2020\/07\/49fb91fc3e45754e437b2c1fc4fec12f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nTegenwoordig zijn er 100500 cursussen in Data Science en het is al lang bekend dat je het meeste geld kunt verdienen in Data Science met cursussen in Data Science (waarom graven als je schoppen kunt verkopen?). Het grootste nadeel van deze cursussen is dat ze niets te maken hebben met het echte werk: niemand zal je schone, verwerkte gegevens in het juiste formaat geven. En wanneer je van de cursussen komt en echte problemen begint op te lossen, komen er veel nuances naar boven.<\/p>\n<p>Daarom beginnen we een serie artikelen \"Wat kan er misgaan met Data Science\", gebaseerd op echte gebeurtenissen die mij, mijn vrienden en collega's zijn overkomen. We zullen typische Data Science-taken aan de hand van echte voorbeelden analyseren: hoe het er in werkelijkheid aan toe gaat. We beginnen vandaag met de taak van gegevensverzameling.<\/p>\n<p>En het eerste waar mensen over struikelen wanneer ze met echte gegevens gaan werken, is de eigenlijke verzameling van de relevante gegevens. De belangrijkste boodschap van dit artikel is:<\/p>\n<blockquote><p><b>We onderschatten systematisch de tijd, middelen en moeite die nodig zijn voor het verzamelen, opschonen en voorbereiden van gegevens.<\/b><\/p><\/blockquote>\n<p>\nEn bovenal, we zullen bespreken wat je kunt doen om dit te voorkomen.<\/p>\n<p>Volgens verschillende schattingen nemen opschoning, transformatie, data processing, feature engineering, enz. 80-90% van de tijd in beslag, terwijl analyse slechts 10-20% vergt, terwijl praktisch al het studiemateriaal zich uitsluitend richt op analyse.<\/p>\n<p>Laten we een typische analytische taak in drie varianten bekijken en zien welke \"verzwarende omstandigheden\" er zijn.<\/p>\n<p>En als voorbeeld zullen we wederom vergelijkbare variaties van de gegevensverzamelingstaak en het vergelijken van gemeenschappen bekijken voor:<\/p>\n<ol>\n<li>Twee subreddits van Reddit<\/li>\n<li>Twee secties van Habr<\/li>\n<li>Twee groepen van Odnoklassniki<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>De hypothetische aanpak in theorie<\/h2>\n<p>\nOpen de website en lees bijvoorbeeld de voorbeelden. Als het begrijpelijk is, plan dan een paar uur in voor het lezen, een paar uur voor de code op basis van de voorbeelden en debugging. Voeg een paar uur toe voor de verzameling. Voeg een paar uur extra toe (vermenigvuldig met twee en tel N uren erbij op).<\/p>\n<p><b>Het belangrijkste punt is: de tijdsinschatting is gebaseerd op aannames en gissingen over hoeveel tijd dit zal kosten.<\/b><\/p>\n<p>Begin met het analyseren van de tijd door de volgende parameters voor de hypothetische taak hierboven te schatten:<\/p>\n<ul>\n<li>Wat is de grootte van de gegevens en hoeveel moet daarvan fysiek verzameld worden (*zie hieronder*).<\/li>\n<li>Hoeveel tijd kost het om \u00e9\u00e9n record te verzamelen en hoe lang moet je wachten voordat je het tweede kunt verzamelen.<\/li>\n<li>Leg de code vast die de staat behoudt en opnieuw begint wanneer (en niet als) alles faalt.<\/li>\n<li>Bepaal of we authenticatie nodig hebben en reken de tijd voor toegang via de API.<\/li>\n<li>Leg het aantal fouten vast als een functie van de datacomplexiteit \u2014 beoordeel dit op basis van de specifieke taak: structuur, hoeveel transformaties, wat en hoe we extraheren.<\/li>\n<li>Neem netwerkfouten en problemen met onconventioneel gedrag van het project op.<\/li>\n<li>Beoordeel of de benodigde functies in de documentatie staan en als dat niet zo is, hoe en hoeveel er nodig is voor een workaround.<\/li>\n<\/ul>\n<p>\nHet belangrijkste punt is dat je voor het inschatten van de tijd daadwerkelijk tijd en moeite moet besteden aan \u2018verkenning op de bodem\u2019 \u2014 alleen dan zal je planning adequaat zijn. Dus hoe vaak je ook wordt gevraagd te zeggen \u2018hoeveel tijd is er nodig voor het verzamelen van gegevens\u2019 \u2014 reserveer tijd voor een voorlopige analyse en argumenteer dat de tijd zal vari\u00ebren afhankelijk van de werkelijke parameters van de taak.<\/p>\n<p>En nu zullen we specifieke voorbeelden tonen waarin dergelijke parameters zullen veranderen.<\/p>\n<p><b>Een sleutelpunt: de schatting is gebaseerd op de analyse van de belangrijkste factoren die van invloed zijn op de omvang en complexiteit van het werk.<\/b><\/p>\n<p>Een schatting op basis van giswerk is een goede benadering wanneer de functionele elementen klein genoeg zijn en er niet veel factoren zijn die de structuur van de taak aanzienlijk kunnen be\u00efnvloeden. Maar in het geval van verschillende Data Science-taken worden er zoveel factoren betrokken dat deze benadering niet meer adequaat wordt.<\/p>\n<h2>Vergelijking van gemeenschappen op Reddit<\/h2>\n<p>\nLaten we beginnen met het eenvoudigste geval (zoals later zal blijken). Over het algemeen, als we heel eerlijk zijn, hebben we hier praktisch een ideaal geval, laten we onze checklist van complexiteit controleren:<\/p>\n<ul>\n<li>Er is een nette, duidelijke en gedocumenteerde API.<\/li>\n<li>Er is bijna geen moeite voor, en het is belangrijk dat de token automatisch wordt verkregen.<\/li>\n<li>Er is <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/praw-dev\/praw\">python wrapper<\/a><\/noindex> \u2014 met veel voorbeelden.<\/li>\n<li>De gemeenschap die zich bezighoudt met analyse en gegevensverzameling op Reddit (tot zelfs YouTube-video's die uitleggen hoe je de python wrapper gebruikt) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.programcreek.com\/python\/example\/86599\/praw.Reddit\">hier bijvoorbeeld<\/a><\/noindex>.<\/li>\n<li>De methoden die we nodig hebben, bestaan waarschijnlijk in de API. Bovendien ziet de code er compact en schoon uit, hieronder een voorbeeld van een functie die opmerkingen verzamelt voor een post.<\/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>Gehaald uit <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/timendum\/reddit-utilities\/blob\/master\/thread-export.py\">this<\/a><\/noindex> een selectie van handige hulpprogramma's voor wrappers.<\/i><\/p>\n<p>Hoewel we hier met de beste situatie voor ons staan, zijn er toch een aantal belangrijke factoren uit de echte wereld om rekening mee te houden:<\/p>\n<ul>\n<li>API-limieten \u2014 we zijn genoodzaakt om gegevens in batches op te halen (en tussen verzoeken te wachten, etc.).<\/li>\n<li>Verzameltijd \u2014 voor een volledige analyse en vergelijking moet er aanzienlijke tijd worden ingepland om de spider door de subreddit te laten lopen.<\/li>\n<li>De bot moet op een server draaien \u2014 je kunt hem niet gewoon op je laptop starten, in je rugzak stoppen en verder gaan met je zaken. Daarom draai ik alles op een VPS. Met de promokode habrahabr10 kun je nog eens 10% op de kosten besparen.<\/li>\n<li>Fysieke onbereikbaarheid van bepaalde gegevens (ze zijn zichtbaar voor beheerders of zijn te moeilijk te verzamelen) \u2014 dit moet in overweging worden genomen; niet alle gegevens kunnen binnen redelijke tijd worden verzameld.<\/li>\n<li>Netwerkfouten: werken met netwerken is pijnlijk.<\/li>\n<li>Dit zijn echte, levende gegevens \u2014 ze zijn nooit schoon.<\/li>\n<\/ul>\n<p>\nNatuurlijk moeten deze nuances in de ontwikkeling worden meegenomen. Specifieke uren\/dagen zijn afhankelijk van de ervaring met ontwikkeling of ervaring met soortgelijke taken; desalniettemin zien we dat deze taak uitsluitend engineeringtechnisch is en geen extra inspanningen zou vereisen voor de oplossing \u2014 het kan allemaal zeer goed worden ingeschat, uitgeschreven en uitgevoerd.<\/p>\n<h2>Vergelijking van de secties van Habr<\/h2>\n<p>\nLaten we overgaan naar een interessanter en minder triviaal geval: het vergelijken van stromen en\/of secties van Habr.<\/p>\n<p>Laten we onze checklist voor complexiteit controleren \u2014 hier, om elk punt te begrijpen, moet je al een beetje aan de taak zelf knoeien en experimenteren.<\/p>\n<ul>\n<li>In het begin denk je dat er een API is, maar die is er niet. Ja, Habr heeft een API, maar deze is alleen niet toegankelijk voor gebruikers (en werkt misschien helemaal niet).<\/li>\n<li>Daarna begin je gewoon HTML te parsen \u2014 'import requests', wat kan er misgaan?<\/li>\n<li>En hoe parse je eigenlijk? De eenvoudigste en meest gebruikte aanpak is itereren over ID's; laten we opmerken dat dit niet de meest effici\u00ebnte methode is en dat we met verschillende gevallen rekening moeten houden \u2014 ter illustratie de dichtheid van echte ID's onder alle bestaande.\n<p><img decoding=\"async\" alt=\"Wat kan er misgaan met Data Science? Gegevensverzameling\" src=\"\/wp-content\/uploads\/2020\/07\/2c67fc14f672e92979edd617314210da.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Gehaald uit <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/218607\/\">this<\/a><\/noindex> van het artikel gaan.<\/i><\/li>\n<li>Ruwe gegevens, verpakt in HTML over het netwerk, zijn een probleem. Stel je voor, je wilt de beoordeling van een artikel verzamelen en opslaan: je hebt de score uit de HTML gehaald en besloot deze als een getal op te slaan voor verdere verwerking.\u00a0\n<p>1) int(score) geeft een foutmelding: omdat op Habr een streepje staat, zoals in de string \"\u20135\" \u2014 dit is een pauze-streepje, geen minteken (verrassend, h\u00e8?), daarom moest ik op een gegeven moment de parser tot leven brengen met zo'n vreselijke oplossing.<\/p>\n<pre><code class=\"python\">try:\n      score_txt = post.find(class_=\"score\").text.replace(u\"\u2013\",\"-\").replace(u\"+\",\"+\")\n      score = int(score_txt)\n      if check_date(date):\n        post_score += score\n<\/code><\/pre>\n<p>\nEr kunnen helemaal geen datums, plus- of mintekens zijn (zoals we hierboven in de functie check_date zien).<\/p>\n<p>2) Ongescapte speciale tekens \u2013 ze zullen komen, je moet er klaar voor zijn.<\/p>\n<p>3) De structuur verandert afhankelijk van het type bericht.<\/p>\n<p>4) Oude berichten kunnen een **vreemde structuur** hebben.<\/li>\n<li>Eigenlijk moet je de foutenafhandeling en wat er kan of niet kan gebeuren beheren, en je kunt niet met zekerheid voorspellen wat er mis zal gaan of hoe de structuur eruit kan zien en waar iets zal wegvallen \u2013 je zult gewoon moeten proberen en de fouten in rekening moeten brengen die de parser geeft.<\/li>\n<li>Dan besef je dat je in meerdere threads moet parseren, anders duurt een een-threadige pars ongeveer 30+ uur (dat is puur de uitvoertijd van een werkende een-threadige parser, die slaapt en niet onder eventuele bans valt). In <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276383\/\">this<\/a><\/noindex> het artikel leidde dat op een gegeven moment tot een dergelijk schema:<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Wat kan er misgaan met Data Science? Gegevensverzameling\" src=\"\/wp-content\/uploads\/2020\/07\/9ad1853f3ee2c9321ee9f1a5e3efea7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDus hier is een checklist qua moeilijkheidsgraad:<\/p>\n<ul>\n<li>Werken met het netwerk en het parseren van HTML met iteratie en synchronisatie op ID.<\/li>\n<li>Documenten met een heterogene structuur.<\/li>\n<li>Vele plaatsen waar de code gemakkelijk kan falen.<\/li>\n<li>Het is noodzakelijk om || code te schrijven.<\/li>\n<li>De benodigde documentatie, voorbeelden van de code en\/of gemeenschappen ontbreken.<\/li>\n<\/ul>\n<p>\nDe geschatte tijd voor deze taak zal 3-5 keer hoger zijn dan voor het verzamelen van gegevens van Reddit.<\/p>\n<h2>Vergelijking van groepen van Odnoklassniki<\/h2>\n<p>\nLaten we overgaan naar het technisch interessantste geval dat is beschreven. Voor mij was het interessant omdat het op het eerste gezicht vrij triviaal lijkt, maar dat helemaal niet is \u2013 zodra je er met een stokje naar wijst.<\/p>\n<p>Laten we beginnen met onze checklist voor moeilijkheidsgraad en opmerken dat veel van hen veel moeilijker blijken te zijn dan ze in het begin lijken:<\/p>\n<ul>\n<li>De API is beschikbaar, maar er ontbreken bijna volledig de benodigde functies.<\/li>\n<li>Voor bepaalde functies moet je toegang per e-mail aanvragen, dat wil zeggen dat toegang niet onmiddellijk wordt verleend.<\/li>\n<li>Het is verschrikkelijk gedocumenteerd (om te beginnen worden overal Russische en Engelse termen door elkaar gebruikt, en dat volstrekt inconsistent \u2014 soms moet je gewoon raden wat er ergens van je verwacht wordt) en bovendien is het qua ontwerp niet geschikt voor het verkrijgen van gegevens, bijvoorbeeld, <noindex><a rel=\"nofollow\" href=\"https:\/\/apiok.ru\/dev\/methods\/rest\/discussions\/discussions.getComments\">de functie die we nodig hebben<\/a><\/noindex>.<\/li>\n<li>Vereist sessies in de documentatie, maar in de praktijk wordt deze niet gebruikt \u2014 en er is geen manier om de nuances van de API-modi te begrijpen, behalve op goed geluk klikken en hopen dat iets zal werken.<\/li>\n<li>Er ontbreken voorbeelden en de gemeenschap, het enige aanknopingspunt voor informatieverzameling is een kleine <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/alternativshik\/python-odnoklassniki\">wrapper<\/a><\/noindex> in Python (zonder veel gebruiksvoorbeelden).<\/li>\n<li>De meest werkbare optie lijkt Selenium te zijn, omdat veel benodigde gegevens onder slot en grendel staan.<br \/>\n1) Dat wil zeggen, er is autorisatie via een fictieve gebruiker (en registratie met de hand).<\/p>\n<p>2) Echter, met Selenium zijn er geen garanties voor correcte en herhaalbare werking (in elk geval met ok.ru precies).<\/p>\n<p>3) De site Ok.ru bevat JavaScript-fouten en gedraagt zich soms vreemd en inconsistent.<\/p>\n<p>4) Er moet gepagineerd worden, elementen moeten worden geladen, enzovoort ...<\/p>\n<p>5) API-fouten die door de wrapper worden gegeven, moeten op een klungelige manier worden verwerkt, bijvoorbeeld als volgt (een stukje experimentele code):<\/p>\n<pre><code class=\"python\">def get_comments(args, context, discussions):\n    pause = 1\n    if args.extract_comments:\n        all_comments = set()\n#het is logisch om bij te houden welke discussies al verwerkt zijn\n        for discussion in tqdm(discussions): \n            try:\n                comments = get_comments_from_discussion_via_api(context, discussion)\n            except odnoklassniki.api.OdnoklassnikiError as e:\n                if \"NOT_FOUND\" in str(e):\n                    comments = set()\n                else:\n                    print(e)\n                    bp()\n                    pass\n            all_comments |= comments\n            time.sleep(pause)\n        return all_comments\n<\/code><\/pre>\n<p>\nMijn favoriete fout was:<\/p>\n<p><code>OdnoklassnikiError(\"Error(code: 'None', description: 'HTTP error', method: 'discussions.getComments', params: \u2026)\")<\/code><\/p>\n<p>6) Uiteindelijk lijkt de combinatie van Selenium + API de meest redelijke optie te zijn.<\/li>\n<li>Het is noodzakelijk om de status te behouden en het systeem te herstarten, met verwerking van vele fouten, waaronder het inconsistente gedrag van de site \u2014 en die fouten zijn behoorlijk moeilijk voor te stellen (tenzij je natuurlijk professioneel parsers schrijft).<\/li>\n<\/ul>\n<p>\nDe geschatte tijd voor deze taak zal 3-5 keer hoger zijn dan voor het verzamelen van gegevens van Habr. Ondanks het feit dat we in het geval van Habr een directe aanpak gebruiken met HTML-parsen, kunnen we in kritieke situaties met de API werken in het geval van OK.<\/p>\n<h2>Conclusies<\/h2>\n<p>\nZelfs als men van u zou vragen om de tijdsinschatting \"ter plekke\" (we zijn tenslotte bezig met plannen!), is het praktisch onmogelijk om de uitvoeringstijd van een omvangrijke dataverwerkingspipeline kwalitatief te schatten zonder analyse van de taakparameters. <\/p>\n<p>Als we het iets filosofischer bekijken, zijn inschattingsstrategie\u00ebn in agile goed toepasbaar op technische taken, maar bij meer experimentele en in zekere zin 'creatieve' en onderzoekstaken, die minder voorspelbaar zijn, ontstaan er moeilijkheden, zoals in de voorbeelden die we hier hebben besproken. <\/p>\n<p>Zeker, gegevensverzameling is een prachtig illustratief voorbeeld \u2014 meestal lijkt deze taak ongelooflijk eenvoudig en technisch niet ingewikkeld, en het zijn vaak de details waar de duivel verborgen zit. Dit is precies de taak waar het mogelijk is om de hele range van mogelijkheden te laten zien die mis kunnen gaan en hoezeer het werk kan worden vertraagd. <\/p>\n<p>Als je vluchtig naar de taakparameters kijkt zonder aanvullende experimenten, lijken Reddit en OK op elkaar: er is een API, een Python-wrapper, maar in feite is het verschil enorm. Beoordeeld op deze parameters, lijkt het parseren van Habr ingewikkelder dan OK \u2014 maar in de praktijk is het precies omgekeerd, en dit kan worden vastgesteld door eenvoudige experimenten rondom de taakparameters.<\/p>\n<p>Volgens mijn ervaring is de meest effectieve benadering een ruwe tijdsinschatting van de tijd die je nodig hebt voor de voorbereidende analyse en eenvoudige eerste experimenten, evenals het lezen van de documentatie \u2014 dit stelt je in staat om een nauwkeurige schatting te geven voor het gehele werk. In termen van de populaire agile-methodologie vraag ik om een ticket aan te maken voor \"parameterinschatting van de taak\", op basis waarvan ik kan beoordelen wat mogelijk uitvoerbaar is binnen de \"sprint\" en een nauwkeurigere schatting kan geven voor elke taak.<\/p>\n<p>Daarom lijkt het het meest effectief om een argument te hebben dat aan een 'niet-technische' specialist laat zien hoe sterk de tijd en middelen kunnen vari\u00ebren afhankelijk van de parameters die nog moeten worden ingeschat.<\/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=\"Wat kan er misgaan met Data Science? Gegevensverzameling\" src=\"\/wp-content\/uploads\/2020\/07\/2ca567a078c8500d37dfcf982e76252c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Bron: <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.3 - 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\/nl\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47Wat kan er misgaan met Data Science? Gegevensverzameling | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/89206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=89206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/89206\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/89207"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=89206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=89206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=89206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}