¿Los científicos de datos usan Python y R para limpiar y transformar datos?

Si se trata de miles de millones de registros, personalmente usaría PySpark. Se requiere alguna forma de clúster de big data a esa escala. Sin embargo, los datos de ese volumen no son muy comunes a menos que esté trabajando en un lugar como Google o Facebook.

Los datos a escala intermedia, digamos entre 10,000 y 10,000,000 de registros, son mucho más comunes. En un escenario como ese, generalmente dividiré el proceso de limpieza de datos entre la base de datos y Python o R. Más específicamente, crearé una vista o un procedimiento almacenado en la base de datos que desnormalice los datos que necesito en una tabla plana con función columnas

Después de importar la tabla de resultados en Python o R, limpiaré aún más los datos manejando los valores faltantes, codificando características categóricas, etc. Esta división entre la base de datos y el lenguaje de secuencias de comandos es principalmente por conveniencia. Considero que SQL es más fácil para cosas como búsquedas hash, combinaciones y operaciones de configuración, mientras que Python y R son más fáciles para cálculos y transformaciones algorítmicas.

Lamento no haber respondido su pregunta exactamente de la manera que espera, pero … No uso R ni Python para esa tarea si se trata de jugar con más de 100 000 de registros (no juego con miles de millones).

Yo uso el motor de base de datos relacional y SQL (especialmente la parte DML). Prefiero SQL Server y PostgreSQL (y a veces MySQL). Los RDB están perfectamente preparados y optimizados para manejar conjuntos de datos tan grandes. Lo admito, a veces requiere un conocimiento más profundo sobre la optimización de consultas SQL, pero la ventaja de este enfoque es una separación perfecta de preocupaciones: la base de datos juega con datos en bruto, R juega con el análisis (pero, siendo honesto, todavía prefiero sqldf sobre dplyr ;]).

Tanto más para que Python y R puedan comunicarse con cualquier base de datos fácilmente.

Gracias por el A2A! En la configuración que he visto, el equipo de ingeniería de datos usa Spark en combinación con Scala para extraer, transformar y cargar datos de bases de datos (y, alternativamente, también scripts en Bash para extraer otros datos, que luego se combinan con los datos de la base de datos con el ayuda de Scala + Spark). La tarea de la ingeniería de datos es que los datos de los sistemas de ingeniería sin procesar se limpien en gran medida (pero aún lejos de ser perfectos para fines de ciencia de datos).

El equipo de ingeniería de datos obtuvo datos del enorme datawarehouse con Sqoop, y datos de otras fuentes con Welcome to Apache Flume. Pensé que especialmente Sqoop era muy eficiente.

Luego, el equipo de ciencia de datos obtuvo acceso a los datos y de hecho puede usar Python o R para limpiar y transformar los datos aún más. En la configuración con la que entré en contacto, el equipo de “ciencia de datos” estaba usando SPSS en gran medida y acababa de cambiar a Python para limpiar y transformar aún más los datos.

Si puede instalarlo en su disco o ejecutar todo en un sistema de servidor, eso no es un problema. Mi estrategia cuando se trata de múltiples tablas enormes en una base de datos relacional es simple:

  1. Procese lo que sea posible, aprovechando al máximo la indexación o el levantamiento de peso pesado del lado del servidor (siempre que sea posible) dentro del RDBMS
  2. Reduzca la cantidad de datos que deben transferirse desde la base de datos al mínimo absoluto
  3. Realice la expansión de datos, la imputación basada en modelos y las uniones cruzadas en R utilizando data.table.

Cuando sabe cómo usar la aritmética vectorizada en R, la mayoría de las operaciones de transformación de datos no causarán ningún problema, incluso cuando se trata de miles de millones de filas. El problema comienza cuando intenta entrenar un modelo en eso, o hacer otras cargas de trabajo computacionalmente intensivas (multiplicación de matrices, etc.). Ni siquiera piense en calcular distancias euclidianas en tal conjunto de datos, con su computadora portátil.

Sí, los he usado a los dos. Funcionan bien Bueno, R es básicamente lo que obtendrías si tomas todo el mal diseño de Matlab y el doble más en un lenguaje, y la manipulación de tipos es un desastre indescriptible, pero eventualmente lo resolverás. Tengo menos experiencia con Python, pero hasta ahora me ha tratado bien. Las personas que no han codificado en un idioma con todas las funciones pueden encontrarlo un poco desalentador, pero me parece una mejor opción.

Sin embargo, la mayoría de los conjuntos de datos con los que he trabajado son demasiado grandes para R o Python. Por lo general, la mayor parte de mi manipulación de datos se realiza en una arquitectura de reducción de mapas. Una vez que llego a 100K filas o menos, puedo comenzar a pensar en R o Python.

También es bastante común que para el momento en que haya bajado a 100K puntos de datos, por lo general, haya bajado a unos 100 y no quiera hacer nada demasiado interesante con ellos. Solo uso Excel o Google Sheets en ese caso.

Depende de lo simple que sea el proceso de limpieza / transformación. Y la pregunta más importante es, ¿lo está haciendo en su máquina (o una VM), o tiene poder computacional elástico a su disposición? Si es más tarde, entonces R o Python no importan. Exploraría las siguientes rutas.

  1. Si es realmente simple, simplemente iría con un script T-SQL.
  2. R + doAzureParallel (sobre un grupo de máquinas virtuales por lotes) puede hacer el trabajo, para terabytes de datos en menos de una hora.
  3. Azure Data Lake Analytics con R o Python, ambos funcionarían bien en este caso. Los datos residen en HDFS.
  4. Python / R + mapreduce o PySpark / SparkR.

Si tiene que hacerlo en su máquina o en una máquina virtual independiente, entonces es Python, seguro. Además, recuerde que no necesita cargar todos los datos en la memoria al mismo tiempo. Puede leer partes de su archivo plano, tanto a través de R como de Python.

Si

La mayoría de las veces uno de ellos es suficiente. Preferiblemente use el idioma que se usa en su ocupación actual (es decir, trabajo o academia).

¡La mejor de las suertes!

En mi dominio, no hay reglas de limpieza de datos directas. Siempre necesito ver resultados intermedios primero, y hago muchos cambios de ida y vuelta antes de determinar las reglas de limpieza de datos. Por lo tanto, prefiero un enfoque de consulta interactiva más orientado a la GUI para la limpieza de datos, y uso más herramientas orientadas a ETL como SQL o SAS. Sí, ETL siempre sería más rápido en DB que en Py / R.

¿Dices que los datos están disponibles en datos planos? Es posible que eso no sea un problema con Py / R para la limpieza secuencial de datos, pero puede recibir un golpe en los casos en que necesite hacer uniones exploratorias para determinar la lógica de limpieza.

Nuevamente, ahí es donde es útil usar herramientas de base de datos exploratorias.

Usan R y Python, sí. Sin embargo, también utilizarán cualquier otra herramienta que sea apropiada para la tarea específica.

ETL puede ser más rápido en DB, pero no siempre, y hay algunos límites prácticos que puede expresar en SQL (o variantes como Hive SQL). Un buen científico de datos tendrá una idea de cuál es la herramienta más adecuada para la tarea.

Yo uso ambos. Son casi iguales para mí en términos de limpieza / transformación.

Cuando se trata de ‘miles de millones de registros’, es probable que haya algo de computación distribuida involucrada, como Hadoop / Spark. Si usa R o Python probablemente no afectará notablemente el rendimiento en ese caso.

Sí, muchas veces lo hacen.

More Interesting

¿Cuáles son algunos buenos proyectos sobre aprendizaje automático y minería de datos?

¿Hay algún buen conjunto de datos de huellas dactilares y / o iris disponibles públicamente para el aprendizaje automático?

Después de Big Data, Smart Data es una tendencia en 2013. Entonces, ¿qué es Smart Data? ¿Tienes alguna definición clara?

¿Alguien puede ayudarme en qué consiste el análisis de datos y cuál es la diferencia entre este y el científico de datos?

¿Cuál es la diferencia entre un trabajo de ciencia de datos que requiere el uso de software SAS y uno basado en un lenguaje científico (Python, R, Matlab, etc.)?

¿Qué escuelas / programas de análisis recomendaría para aquellos con antecedentes no tecnológicos?

¿Por qué normalizamos los datos?

¿Cuáles son las categorías de big data?

¿Cuáles son las habilidades / cualidades que busca un pasante de ciencia de datos?

¿Dónde debo solicitar un trabajo de enseñanza de big data en Bangalore?

¿Cuáles son las características clave de OLAP y las herramientas de minería de datos y cómo se puede usar para ayudar al descubrimiento del conocimiento?

Cómo convertirse en un desarrollador de Big Data a los 33 años sin experiencia previa en esta área

¿A qué empresa debo postularme para un trabajo si soy ciudadano de la UE y quiero trabajar en los Estados Unidos?

¿Cómo se usa el SNA (Social Network Analysis) para combatir el fraude o las transacciones fraudulentas?

¿Cuáles son algunos algoritmos de recuperación de información de los que siempre debe tener una sólida comprensión y por qué?