¿Sus Habilidades De Programación Son Lo Suficientemente Buenas Para Un Puesto De Trabajo En Data Science?

Angel Das
Apr 18, 2020

Contents Outline

¿Sus Habilidades De Programación Son Lo Suficientemente Buenas Para Un Puesto De Trabajo En Data Science?

Apr 18, 2020 11 minutes read

5 tips de programación que debes saber si trabajas en la industria de la ciencia de datos

"Era viernes por la noche. Recuerdo claramente lo emocionado que estaba de pasar el resto del día con mi familia. Mis padres habían viajado a Bangalore por primera vez y yo ya tenía planes de mostrarles la ciudad.

Había completado mi trabajo del día y dado que los viernes por la noche suelen ser menos agitados en cualquier organización, estaba a punto de irme cuando de repente recibí un correo electrónico de mi jefe pidiéndome un informe muy antiguo que dejamos de entregar hace un año.

Estaba decepcionado, pero sabía que los códigos estándar no suelen requerir mucho esfuerzo. ¡Ay! Mi hipótesis estaba equivocada. El Karma me mordió y terminé pasando toda la tarde......"

Deben estar preguntándose cómo se relaciona esta historia con cualquier tipo de habilidades de programación requeridas para un trabajo de ciencia de datos o algunos de ustedes ya habrán adivinado la correlación entre mi historia y el resto del artículo.

Permítanme comenzar haciendo una declaración: "Las organizaciones de hoy en día utilizan la ciencia de datos como una de las palancas clave en cada etapa del ciclo de decisión para impulsar las estrategias comerciales clave".

¿Pero qué constituye un problema de la ciencia de datos? ¿Cómo trabaja un analista de datos, un analista de negocios o un científico de datos en cualquier organización?

Cualquier problema de Ciencia de Datos se desglosa en dos partes, un conjunto de "actividades" y un puñado de "procesos de mejores prácticas".

La recolección de datos, la limpieza de datos, la exploración de datos, la prueba de hipótesis, el desarrollo de modelos, la validación y muchos más entra en la categoría de "actividades".

La mayoría de los que trabajamos con organizaciones analíticas o aspiramos a ser científicos de datos estamos muy familiarizados con esa terminología, pero cuando se trata de "procesos de prácticas óptimas", se conoce y se sigue muy poco.

De mis 4 años de experiencia trabajando en esta industria, puedo decirles que como parte de los "procesos de mejores prácticas" se hace mucho hincapié en la gestión de proyectos, la creación de repositorios, la documentación, la comunicación y el mantenimiento de códigos.

Como científico de datos, se espera que te asegures de que te adhieres a las "3 C's, Consistencia, Comunicación y Consumo". Su trabajo debe ser consistente, debe comunicar todas las complejidades del negocio a sus interesados y, lo más importante, su trabajo debe ser consumido.

La programación en la industria de la ciencia de datos es muy diferente del desarrollo de software.

Sus habilidades de programación no se limitan simplemente a sus conocimientos técnicos, sino que requieren una buena cantidad de datos y comprensión empresarial.

Hoy voy a hablar de la "Consistencia" y de cómo introducirla en sus prácticas de codificación.

Muchas de estas mejores prácticas se basan en mis 3 años de experiencia trabajando con Mu Sigma Business Solutions y los desafíos que he enfrentado hasta la fecha. Los siguientes 5 tips le darán una breve comprensión de cómo "Matemáticas + Negocios + Datos + Tecnología = Ciencia de los Datos".

Aprende sobre data science con estos cursos.

"Las organizaciones hoy en día buscan científicos de datos que puedan crear soluciones escalables a través de múltiples equipos. Piensa en ello como un producto, que puede ser fácilmente usado por cualquiera y por todos. Esto no sólo ahorra el valor en dólares que tuvieron que invertir en un problema similar para una unidad de negocio diferente, sino que reduce el tiempo y el esfuerzo de un recurso existente que va a trabajar en él durante los próximos días"

5 Tips que pueden subir el nivel de tu juego!



1. ¿Tu código es lo suficientemente legible?
Un código bien formateado y comentado es el paraíso del maestro del código. Te ayuda a depurar tu código con facilidad y asegurarte de que los controles de calidad sean más suaves.

Cualquier equipo de ciencia de datos sigue el concepto de Chequeos de Calidad de Pares (Peer Quality Checks - QC) para asegurar una salida libre de errores. 

Se considera una mejor práctica hacer que su código sea revisado por sus pares antes de entregar el resultado final a los interesados. Un código legible incluye:

  • Nombre del proyecto, propósito del código, versión, nombre del autor, fecha de creación, fecha de modificación, última modificación, cambios para empezar
  • Descripción de una línea de cada fragmento de código antes de que empiece (El uso de estos codificadores mantiene un seguimiento de las reglas o filtros comerciales explícitos que se utilizan)
  • La identación adecuada de cada snippet con suficientes espacios entre dos snippets
  • Uso adecuado de la convención de nombres para los nombres de las tablas. En lugar de escribir un snippet como "crear tabla A" siempre se puede escribir "crear tabla volumen_de_cliente_resumen". Esto hace que la tabla sea intuitiva incluso sin pasar por el resto del segmento de código


2. ¿Su código tiene módulos reutilizables?
Muchas veces terminarás trabajando en conjuntos de datos con un esquema similar, pero utilizando diferentes filtros para diferentes atributos (columnas) dependiendo del problema de negocio en cuestión.

También puede ser al revés, cuando terminas usando la misma tabla para resumir diferentes escenarios para el mismo problema de negocios.

Por ejemplo, supongamos que usted tiene un conjunto de datos del cliente que contiene la identificación del cliente, la identificación de la transacción, la fecha de compra, la clase de producto y las cifras de ventas.

Se le pide que averigüe los principales clientes que contribuyen al 80% de sus ventas para cada clase de producto.

En un escenario normal, crearía un conjunto de código que hace esto para un tipo de producto específico, copiar-pegar el mismo y reutilizarlo posteriormente con un filtro diferente para el tipo de producto.

Un buen programador crearía un módulo definido por el usuario que toma el tipo de producto y el umbral de ventas como entrada y genera la salida deseada.

Se pueden crear módulos reutilizables en todas las plataformas, lo que ahorra líneas innecesarias y garantiza un fácil control de calidad.




3. ¿Su producción cumple con los requisitos de los datos y el sentido comercial?
En cualquier organización la entrega de cifras correctas es la clave del éxito de un proyecto. Muchas decisiones de negocios se toman en base a las cifras que reportamos e incluso una pequeña inexactitud podría tener un mayor impacto en la decisión de la organización.

Tomemos el ejemplo anterior del conjunto de datos del cliente. Se le pide que identifique los 100 principales Clientes Fieles en base a su volumen de transacciones. Usando su recomendación, la organización proporcionará a dichos usuarios un cupón de descuento del 30% para sus próximas compras.

La idea de este análisis es identificar a los clientes leales e influir en ellos para que compren más. La organización está recibiendo un golpe en sus ventas para asegurar un mayor volumen de transacciones.

Ahora muchos de nosotros no somos conscientes del hecho de que los conjuntos de datos utilizados por la mayoría de las organizaciones no vienen en la forma más limpia y necesitan ser manipulados antes de que puedan ser consumidos.

Por ejemplo, un cliente mientras paga sus facturas puede experimentar una transacción fallida que se registra en el sistema.

Sin embargo, al calcular el volumen de las transacciones, esos identificadores de transacciones deben eliminarse, pues de lo contrario terminaremos con una estimación incorrecta del volumen de transacciones de cada cliente.

El reto es identificar esa anomalía. Aquí están algunas de las comprobaciones que debe hacer y capturar mientras codifica:

Revisar el nivel del conjunto de datos antes de comenzar cualquier manipulación. Un nivel se define como una sola columna o una combinación de columnas que se pueden utilizar para identificar un registro de forma única a partir de una base de datos/tabla.

Esto le ayudará a identificar cualquier entrada duplicada y a prevenir la doble contabilidad.

Haz una estadística descriptiva rápida para tu conjunto de datos. Esto te ayuda a averiguar la distribución de tus datos y todos los posibles valores perdidos

Mientras se unen una o varias tablas se aseguran de que son del mismo nivel. Lleve un registro del número de registros antes y después de todas las declaraciones de unión (joins). Esto le ayudará a identificar múltiples mapeos o dobles conteos si los hay.

Tenga a su alcance los indicadores clave de rendimiento de su organización. Esto le ayudará a tener números de referencia en cada paso.

En el ejemplo anterior, el total de clientes que realizan una compra es un indicador clave del rendimiento de su organización.

Basándose en el informe anual de su organización, usted sabe que ~12.000 clientes compraron un producto en el sitio web de su organización. Sin embargo, al consultar el conjunto de datos, sólo encontrará 8000 identificaciones de clientes. ¿Sus datos son correctos? Vuelva a comprobar sus códigos o marque un problema de datos con su jefe.



4. ¿Su código es resistente a la entrada?
La resistencia de entrada implica que el código debe ser capaz de producir una salida independientemente del tipo de entrada.

La parte más difícil de cualquier ejercicio de codificación es inducir la resistencia de entrada que resulta en la reutilización de los códigos.

Un analista puede recibir solicitudes de datos similares de diferentes interesados. Por lo tanto, un escenario ideal sería escribir códigos que puedan funcionar con diferentes requisitos comerciales.

Por ejemplo, el Jefe de Ventas de la división de Electrónica y Cosméticos quiere entender las ventas de sus respectivos productos para diferentes identificaciones de clientes.

Dado que el analista ha trabajado anteriormente con ordenadores portátiles y tabletas, es consciente de que todos los nombres de productos vinculados a artículos electrónicos se capturan en minúsculas.

Sin embargo, para comprobar los productos cosméticos, puede que tenga que filtrar primero todos los productos y ver cómo se capturan las transacciones relacionadas con los cosméticos en los datos del cliente.

En cambio, un simple uso de UPPER() en las columnas de productos puede evitar controles innecesarios. En un escenario del mundo real, es difícil hacer que cada entrada de código sea resistente, pero hay que pensar en todas las posibles excepciones que se pueden manejar.




5. Inducir la manipulación de la excepción
La resistencia de la entrada y el manejo de excepciones pueden parecer similares pero funcionan de manera diferente. 

Déjame hacerte una simple pregunta. ¿Cuántos registros cree que tiene un dato de cliente de cualquier organización? 20.252 registros como se muestra en el ejemplo anterior? ¡Tienes que estar bromeando! Cualquier dato de cliente que tenga información de transacciones para diferentes productos tendrá millones de registros. 

Consultar tales conjuntos de datos en SQL, R, Python o incluso Alteryx lleva horas de ejecución. Ahora imagina un escenario en el que necesitas consultar tales tablas para diferentes productos, ¿cómo induces el manejo de excepciones?

  • Todo lenguaje de programación le permite establecer excepciones de ejecución de tal manera que una consulta fallida detendrá la ejecución de los snippets subsiguientes. Esto le permite hacer las correcciones necesarias de forma instantánea una vez que una condición falla o un error es lanzado en lugar de esperar mucho tiempo antes de que todo el código se ejecute
  • Asegúrate de mantener un control de tu tiempo de consulta. A menudo, la consulta de conjuntos de datos más grandes puede llevar más tiempo del esperado debido al uso simultáneo, es decir, varios usuarios pueden estar consultando el mismo conjunto de datos al mismo tiempo. Asegure la auto-detención de la ejecución del código una vez que se supera una cierta cantidad de tiempo de ejecución

"Mi teléfono empezó a vibrar de repente. No me di cuenta de que ya eran las 8 pm. Me había pasado las últimas 5 horas averiguando algún desajuste en los números. Habiendo trabajado en esto hace un año, apenas recuerdo las reglas de negocios que se usaban en ese entonces. Desearía haberlo documentado en algún lugar. La falta de flujo de procesos y cifras de control de calidad para cada paso hizo más difícil captar el problema. Ahora me doy cuenta de la importancia de una buena práctica de programación y espero que este artículo le ayude a organizar su proceso de pensamiento de programación en los próximos días"

Ya tienes las habilidades de programación para un puesto de trabajo? esta es tu oportunidad de postularte a una de estas vacantes en data science.
Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!