{"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\/es\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","title":{"rendered":"\u00bfQu\u00e9 puede salir mal con el Data Science? Recolecci\u00f3n de datos","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=\"\u00bfQu\u00e9 puede salir mal con el Data Science? Recolecci\u00f3n de datos\" src=\"\/wp-content\/uploads\/2020\/07\/49fb91fc3e45754e437b2c1fc4fec12f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nHoy en d\u00eda existen 100500 cursos de Data Science y es bien sabido que se puede ganar mucho dinero en Data Science precisamente vendiendo cursos de Data Science (\u00bfpara qu\u00e9 cavar, cuando se pueden vender palas?). El principal inconveniente de estos cursos es que no tienen nada que ver con el trabajo real: nadie te proporcionar\u00e1 datos limpios y procesados en el formato necesario. Y cuando terminas el curso y comienzas a resolver un problema real, surgen muchos matices.<\/p>\n<p>Por eso comenzamos una serie de notas llamadas \u00abQu\u00e9 puede salir mal con Data Science\u00bb, basadas en eventos reales que me han sucedido a m\u00ed, a mis compa\u00f1eros y colegas. Vamos a analizar ejemplos reales de tareas t\u00edpicas de Data Science: c\u00f3mo sucede realmente. Comencemos hoy con la tarea de recopilaci\u00f3n de datos.<\/p>\n<p>Y lo primero con lo que tropiezan las personas al comenzar a trabajar con datos reales es, en realidad, la recopilaci\u00f3n de esos datos que son relevantes para nosotros. El mensaje clave de este art\u00edculo es:<\/p>\n<blockquote><p><b>Subestimamos sistem\u00e1ticamente el tiempo, los recursos y los esfuerzos necesarios para recopilar, limpiar y preparar datos.<\/b><\/p><\/blockquote>\n<p>\nY lo m\u00e1s importante, discutiremos qu\u00e9 hacer para evitar que esto suceda.<\/p>\n<p>Seg\u00fan diversas estimaciones, la limpieza, transformaci\u00f3n, procesamiento de datos, ingenier\u00eda de caracter\u00edsticas, etc., ocupan entre el 80 y el 90% del tiempo, mientras que el an\u00e1lisis toma del 10 al 20%, mientras que pr\u00e1cticamente todo el material de aprendizaje se centra exclusivamente en el an\u00e1lisis.<\/p>\n<p>Vamos a desglosar c\u00f3mo un ejemplo t\u00edpico de una tarea anal\u00edtica sencilla en tres variantes y veremos cu\u00e1les pueden ser las \u00abcircunstancias agravantes\u00bb.<\/p>\n<p>Y para el ejemplo, nuevamente, consideraremos variaciones similares de la tarea de recopilaci\u00f3n de datos y comparaci\u00f3n de comunidades para:<\/p>\n<ol>\n<li>Dos subreddits de Reddit<\/li>\n<li>Dos secciones de Habr<\/li>\n<li>Dos grupos de Odnoklassniki<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Enfoque condicional en teor\u00eda<\/h2>\n<p>\nAbrir el sitio y leer ejemplos, si es claro, dedicar unas horas a la lectura, unas horas al c\u00f3digo por los ejemplos y la depuraci\u00f3n. A\u00f1adir unas horas para la recopilaci\u00f3n. Sumar unas horas extra (multiplicar por dos y a\u00f1adir N horas).<\/p>\n<p><b>El punto clave: la estimaci\u00f3n de tiempo se basa en suposiciones e conjeturas sobre cu\u00e1nto tiempo tomar\u00e1.<\/b><\/p>\n<p>Para comenzar el an\u00e1lisis del tiempo, es necesario evaluar los siguientes par\u00e1metros para la tarea condicional descrita anteriormente:<\/p>\n<ul>\n<li>Cu\u00e1l es el tama\u00f1o de los datos y cu\u00e1nto se necesita recopilar f\u00edsicamente (*ver abajo*).<\/li>\n<li>Cu\u00e1l es el tiempo de recolecci\u00f3n de un registro y cu\u00e1nto tiempo se necesita esperar antes de poder recoger el segundo.<\/li>\n<li>Incorporar la escritura de c\u00f3digo que conserve el estado y que inicie un reinicio cuando (y no si) todo falle.<\/li>\n<li>Determinar si necesitamos autorizaci\u00f3n e implementar el tiempo de acceso a trav\u00e9s de API.<\/li>\n<li>Incorporar la cantidad de errores como una funci\u00f3n de la complejidad de los datos; evaluar seg\u00fan la tarea espec\u00edfica: estructura, cu\u00e1ntas transformaciones, qu\u00e9 y c\u00f3mo extraemos.<\/li>\n<li>Incorporar errores de red y problemas con el comportamiento no est\u00e1ndar del proyecto.<\/li>\n<li>Evaluar si las funciones necesarias est\u00e1n en la documentaci\u00f3n y, si no lo est\u00e1n, cu\u00e1ntas y c\u00f3mo se necesitan para una soluci\u00f3n alternativa.<\/li>\n<\/ul>\n<p>\nLo m\u00e1s importante para evaluar el tiempo es que realmente necesitas dedicar tiempo y esfuerzo a la \"exploraci\u00f3n inicial\"; solo as\u00ed tu planificaci\u00f3n ser\u00e1 adecuada. Por lo tanto, aunque te presionen para que digas \"cu\u00e1nto tiempo se necesita para recopilar datos\", aseg\u00farate de que te den tiempo para un an\u00e1lisis preliminar y argumenta que el tiempo variar\u00e1 seg\u00fan los par\u00e1metros reales de la tarea.<\/p>\n<p>Y ahora vamos a mostrar ejemplos concretos donde tales par\u00e1metros cambiar\u00e1n.<\/p>\n<p><b>El punto clave: la estimaci\u00f3n se basa en el an\u00e1lisis de factores clave que influyen en el volumen y la complejidad del trabajo.<\/b><\/p>\n<p>La estimaci\u00f3n basada en conjeturas es un buen enfoque cuando los elementos funcionales son bastante peque\u00f1os y no hay muchos factores que puedan afectar significativamente la estructura de la tarea. Pero en el caso de varias tareas de Data Science, hay muchos factores, y este enfoque se vuelve inadecuado.<\/p>\n<h2>Comparaci\u00f3n de comunidades de Reddit<\/h2>\n<p>\nComencemos con el caso m\u00e1s simple (como resultar\u00e1 despu\u00e9s). En realidad, si somos completamente honestos, tenemos casi el caso ideal; verifiquemos nuestra lista de verificaci\u00f3n de complejidad:<\/p>\n<ul>\n<li>Contamos con un API limpio, claro y documentado.<\/li>\n<li>Es extremadamente f\u00e1cil y, lo principal, se obtiene autom\u00e1ticamente un token.<\/li>\n<li>Hay <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/praw-dev\/praw\">python wrapper<\/a><\/noindex> \u2014 con un mont\u00f3n de ejemplos.<\/li>\n<li>Comunidad que se dedica al an\u00e1lisis y recopilaci\u00f3n de datos en Reddit (hasta videos de YouTube que explican c\u00f3mo usar el python wrapper) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.programcreek.com\/python\/example\/86599\/praw.Reddit\">por ejemplo<\/a><\/noindex>.<\/li>\n<li>Los m\u00e9todos que necesitamos probablemente existen en el API. Adem\u00e1s, el c\u00f3digo se ve compacto y limpio; aqu\u00ed hay un ejemplo de una funci\u00f3n que recopila comentarios sobre una publicaci\u00f3n.<\/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>Tomado de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/timendum\/reddit-utilities\/blob\/master\/thread-export.py\">esta<\/a><\/noindex> colecciones de utilidades convenientes para envolver.<\/i><\/p>\n<p>A pesar de que este es el mejor caso, a\u00fan debemos tener en cuenta una serie de factores importantes de la vida real:<\/p>\n<ul>\n<li>L\u00edmites de API: nos vemos obligados a tomar datos en lotes (esperar entre solicitudes, etc.).<\/li>\n<li>Tiempo de recolecci\u00f3n: para un an\u00e1lisis completo y comparaci\u00f3n, deberemos dedicar un tiempo considerable solo para que el spider pase por el subreddit.<\/li>\n<li>El bot debe funcionar en un servidor: no puedes simplemente ejecutarlo en una laptop, meterlo en una mochila y salir a hacer tus cosas. Por eso, lo he ejecutado todo en un VPS. Con el c\u00f3digo promocional habrahabr10 puedes ahorrar un 10% adicional.<\/li>\n<li>La inaccesibilidad f\u00edsica de algunos datos (son visibles para los administradores o son muy dif\u00edciles de recopilar) debe ser considerada, no todos los datos pueden ser recopilados en un tiempo razonable.<\/li>\n<li>Errores de funcionamiento de la red: trabajar con la red es complicado.<\/li>\n<li>Estos son datos reales y vivos, nunca son completamente limpios.<\/li>\n<\/ul>\n<p>\nPor supuesto, es necesario tener en cuenta los matices mencionados en el desarrollo. Las horas\/d\u00edas espec\u00edficos dependen de la experiencia en desarrollo o en tareas similares, sin embargo, vemos que esta tarea es puramente ingenieril y no requiere movimientos adicionales para su resoluci\u00f3n: se puede evaluar, detallar y realizar todo muy bien.<\/p>\n<h2>Comparaci\u00f3n de secciones de Habr<\/h2>\n<p>\nPasemos a un caso m\u00e1s interesante y no trivial, comparando flujos y\/o secciones de Habr.<\/p>\n<p>Revisaremos nuestra lista de verificaci\u00f3n de complejidad: aqu\u00ed, para entender cada punto, ya ser\u00e1 necesario experimentar un poco con la tarea misma.<\/p>\n<ul>\n<li>Al principio piensas que hay API, pero no la hay. S\u00ed, Habr tiene API, pero solo est\u00e1 disponible para administradores (o puede que no funcione en absoluto).<\/li>\n<li>Despu\u00e9s simplemente comienzas a parsear html: \"import requests\", \u00bfqu\u00e9 podr\u00eda salir mal?<\/li>\n<li>\u00bfY c\u00f3mo se para todo? El enfoque m\u00e1s simple y utilizado es iterar por ID, cabe destacar que no es el m\u00e1s eficiente y deber\u00e1s manejar diferentes casos: aqu\u00ed, por ejemplo, est\u00e1 la densidad de ID reales entre todos los existentes.\n<p><img decoding=\"async\" alt=\"\u00bfQu\u00e9 puede salir mal con el Data Science? Recolecci\u00f3n de datos\" src=\"\/wp-content\/uploads\/2020\/07\/2c67fc14f672e92979edd617314210da.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tomado de <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/218607\/\">esta<\/a><\/noindex> art\u00edculo.<\/i><\/li>\n<li>Los datos en crudo envueltos en HTML a trav\u00e9s de la red son un dolor. Por ejemplo, si deseas recopilar y almacenar la puntuaci\u00f3n de un art\u00edculo: extraes el score del html y decides guardarlo como un n\u00famero para su procesamiento posterior:\u00a0\n<p>1) int(score) genera un error: en \u0425\u0430\u0431\u0440, el signo menos, como en la l\u00ednea &quot;\u20135&quot;, es un guion corto y no un signo negativo (sorprendente, \u00bfverdad?), as\u00ed que en alg\u00fan momento tuve que revivir el parser con esta horrible soluci\u00f3n.<\/p>\n<pre><code class=\"python\">try:\n      score_txt = post.find(class_=&quot;score&quot;).text.replace(u&quot;\u2013&quot;,&quot;-&quot;).replace(u&quot;+&quot;,&quot;+&quot;)\n      score = int(score_txt)\n      if check_date(date):\n        post_score += score\n<\/code><\/pre>\n<p>\nNo puede haber fechas, signos positivos o negativos en absoluto (como vemos arriba en la funci\u00f3n check_date, y eso ha sucedido).<\/p>\n<p>2) Los caracteres especiales no escapados \u2014 vendr\u00e1n, hay que estar preparado.<\/p>\n<p>3) La estructura cambia dependiendo del tipo de publicaci\u00f3n.<\/p>\n<p>4) Las publicaciones antiguas pueden tener **una estructura extra\u00f1a**.<\/li>\n<li>En esencia, el manejo de errores y lo que puede o no puede ocurrir tendr\u00e1 que ser gestionado y no se puede predecir con certeza qu\u00e9 saldr\u00e1 mal, c\u00f3mo puede ser la estructura y qu\u00e9 fallar\u00e1 \u2014 solo hay que probar y tener en cuenta los errores que lanza el analizador.<\/li>\n<li>Luego te das cuenta de que necesitas analizar en m\u00faltiples hilos, de lo contrario, el an\u00e1lisis en uno solo tomar\u00e1 30+ horas (este es solo el tiempo de ejecuci\u00f3n de un analizador en un solo hilo que est\u00e1 en pausa y no cae bajo ning\u00fan tipo de ban). En <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276383\/\">esta<\/a><\/noindex> el art\u00edculo, esto condujo en alg\u00fan momento a un esquema similar:<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"\u00bfQu\u00e9 puede salir mal con el Data Science? Recolecci\u00f3n de datos\" src=\"\/wp-content\/uploads\/2020\/07\/9ad1853f3ee2c9321ee9f1a5e3efea7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs\u00ed que el checklist por dificultad:<\/p>\n<ul>\n<li>Trabajo con la red y an\u00e1lisis de html con iteraci\u00f3n y recorrido por ID.<\/li>\n<li>Documentos de estructura heterog\u00e9nea.<\/li>\n<li>Muchos lugares donde el c\u00f3digo puede fallar f\u00e1cilmente.<\/li>\n<li>Es necesario escribir || c\u00f3digo.<\/li>\n<li>Falta la documentaci\u00f3n necesaria, ejemplos de c\u00f3digo y\/o comunidad.<\/li>\n<\/ul>\n<p>\nLa estimaci\u00f3n condicional de tiempo para esta tarea ser\u00e1 de 3 a 5 veces m\u00e1s alta que para la recopilaci\u00f3n de datos de Reddit.<\/p>\n<h2>Comparaci\u00f3n de grupos de Odnoklassniki<\/h2>\n<p>\nPasemos al caso t\u00e9cnicamente m\u00e1s interesante de los descritos. Para m\u00ed, fue interesante precisamente porque a primera vista parece bastante trivial, pero en realidad no lo es \u2014 tan pronto como le pinches con un palito.<\/p>\n<p>Comenzaremos con nuestra lista de verificaci\u00f3n de dificultad y marcaremos que muchos de ellos resultar\u00e1n ser mucho m\u00e1s complejos de lo que parecen al principio:<\/p>\n<ul>\n<li>Hay una API, pero carece casi por completo de las funciones necesarias.<\/li>\n<li>Para ciertas funciones, debes solicitar acceso por correo electr\u00f3nico, es decir, la concesi\u00f3n de acceso no es inmediata.<\/li>\n<li>Est\u00e1 p\u00e9simamente documentado (para empezar, hay una mezcla inconsistente de t\u00e9rminos en ruso e ingl\u00e9s por todas partes; a veces tienes que adivinar lo que se espera de ti en alg\u00fan lugar) y, adem\u00e1s, su dise\u00f1o no se adapta para obtener datos, por ejemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/apiok.ru\/dev\/methods\/rest\/discussions\/discussions.getComments\">la funci\u00f3n que necesitamos<\/a><\/noindex>.<\/li>\n<li>Requiere sesiones en la documentaci\u00f3n, pero en realidad no las utiliza \u2014 y no hay manera de comprender todos los matices de los modos de API, excepto golpeando y esperando que algo funcione.<\/li>\n<li>Faltan ejemplos y comunidad, el \u00fanico punto de apoyo para reunir informaci\u00f3n es un peque\u00f1o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/alternativshik\/python-odnoklassniki\">wrapper<\/a><\/noindex> en Python (sin muchas muestras de uso).<\/li>\n<li>La opci\u00f3n m\u00e1s viable parece ser Selenium, ya que muchos de los datos necesarios est\u00e1n bajo llave.<br \/>\n1) Es decir, la autorizaci\u00f3n se realiza a trav\u00e9s de un usuario ficticio (y el registro manualmente).<\/p>\n<p>2) Sin embargo, con Selenium no hay garant\u00edas de un funcionamiento correcto y repetible (al menos en el caso de ok.ru, definitivamente).<\/p>\n<p>3) El sitio Ok.ru contiene errores de JavaScript y a veces se comporta de manera extra\u00f1a e inconsistente.<\/p>\n<p>4) Es necesario encargarse de la paginaci\u00f3n, de la carga de elementos, etc.\u2026<\/p>\n<p>5) Los errores de API que devuelve el wrapper tendr\u00e1n que ser tratados de manera chapucera, por ejemplo, as\u00ed (un fragmento de c\u00f3digo experimental):<\/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#tiene sentido hacer un seguimiento de las discusiones ya procesadas\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 &quot;NOT_FOUND&quot; 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>\nMi error favorito fue:<\/p>\n<p><code>OdnoklassnikiError(&quot;Error(c\u00f3digo: 'None', descripci\u00f3n: 'error HTTP', m\u00e9todo: 'discussions.getComments', par\u00e1metros: \u2026)&quot;)<\/code><\/p>\n<p>6) Al final, la opci\u00f3n de Selenium + API parece ser la m\u00e1s racional.<\/li>\n<li>Es necesario conservar el estado y reiniciar el sistema, manejar m\u00faltiples errores, incluido el comportamiento inconsistente del sitio \u2014 adem\u00e1s, estos errores son bastante dif\u00edciles de imaginar (a menos que escribas parsers profesionalmente, por supuesto).<\/li>\n<\/ul>\n<p>\nLa estimaci\u00f3n condicional del tiempo para esta tarea ser\u00eda de 3 a 5 veces mayor que la recolecci\u00f3n de datos de Habr. A pesar de que en el caso de Habr utilizamos un enfoque directo con el parsing de HTML, en el caso de OK podemos trabajar con el API en lugares cr\u00edticos.<\/p>\n<h2>Conclusiones<\/h2>\n<p>\nPor mucha evaluaci\u00f3n que se requiera 'in situ' (\u00a1hoy tenemos planificaci\u00f3n!) del voluminoso m\u00f3dulo del pipeline de procesamiento de datos, el tiempo de ejecuci\u00f3n casi nunca puede evaluarse de manera efectiva sin un an\u00e1lisis de los par\u00e1metros de la tarea. <\/p>\n<p>Si hablamos de manera algo m\u00e1s filos\u00f3fica, las estrategias de evaluaci\u00f3n en agile son adecuadas para tareas de ingenier\u00eda, pero en tareas m\u00e1s experimentales y, en cierto sentido, 'creativas' e investigativas, es decir, menos predecibles, surgen dificultades, como en los ejemplos que hemos discutido aqu\u00ed. <\/p>\n<p>Por supuesto, la recopilaci\u00f3n de datos es simplemente un ejemplo ilustrativo: generalmente, esta tarea parece incre\u00edblemente simple y t\u00e9cnicamente poco complicada, y es precisamente en los detalles donde a menudo reside el diablo. Y en esta tarea se puede mostrar toda la gama de posibles variantes de lo que puede salir mal y cu\u00e1nto puede alargarse el trabajo. <\/p>\n<p>Si observamos r\u00e1pidamente las caracter\u00edsticas de la tarea sin experimentos adicionales, Reddit y OK parecen similares: hay API, un wrapper de Python, pero en esencia, la diferencia es enorme. Si juzgamos por estos par\u00e1metros, el parsing de Habr parece m\u00e1s complicado que OK, pero en la pr\u00e1ctica es totalmente lo contrario y esto se puede averiguar realizando simples experimentos de an\u00e1lisis de par\u00e1metros de la tarea.<\/p>\n<p>Seg\u00fan mi experiencia, el enfoque m\u00e1s efectivo es una estimaci\u00f3n aproximada del tiempo que necesitar\u00e1s para el an\u00e1lisis preliminar y los primeros experimentos simples, la lectura de la documentaci\u00f3n; son estos los que te permitir\u00e1n dar una evaluaci\u00f3n precisa para todo el trabajo. En t\u00e9rminos de la metodolog\u00eda \u00e1gil popular, pido que me creen un ticket para 'evaluar los par\u00e1metros de la tarea', a partir del cual puedo dar una estimaci\u00f3n de lo que puede realizarse dentro del 'sprint' y proporcionar una evaluaci\u00f3n m\u00e1s precisa para cada tarea.<\/p>\n<p>Por lo tanto, el argumento m\u00e1s efectivo parece ser uno que muestre a un especialista 'no t\u00e9cnico' cu\u00e1n variable ser\u00e1 el tiempo y los recursos seg\u00fan los par\u00e1metros que a\u00fan deben ser evaluados.<\/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=\"\u00bfQu\u00e9 puede salir mal con el Data Science? Recolecci\u00f3n de datos\" src=\"\/wp-content\/uploads\/2020\/07\/2ca567a078c8500d37dfcf982e76252c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47\u00bfQu\u00e9 puede salir mal con Data Science? Recopilaci\u00f3n de datos | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/89206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=89206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/89206\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/89207"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=89206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=89206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=89206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}