Python y Datos, Un viaje de ida
Tags: python, datascience, spanish, programming
Published: 2022-12-29 19:20:45

Confieso que necesitaba escribir este artículo hace mucho tiempo, pero estudiar y trabajar todos los días apenas me estaba dejando un margen para ustedes, queridos lectores.

Decidí detenerme al menos por unos minutos; un tiempo similar al que te llevará leer esta historia sin terminar, pero con mucha tela que cortar.

Python es, lejos, uno de los mejores lenguajes de programación que hoy marcan la pauta en el mercado. Puedes amar las rutinas de Kotlin, los punteros de C y C++, los arrays de Lua que empiezan por 1 (sigo traumado con el tema, sepan disculpar), o incluso la implementación de interfaces múltiples que tiene Java para compensar su falta (o beneficio) de heredar varias clases.

Pero Python tiene una versatilidad muy alta, dado que gracias a su antiguedad y su diseño desde el día cero, hoy podemos encontrarlo en todo tipo de tecnologías:
- Desarrollo Web
- Ciencia de Datos
- Aprendizaje automático
- Enseñanza de Programación
- Visión Computarizada
- Procesamiento de Imágenes
- Desarrollo de Videojuegos
- Medicina y Farmacología
- Biología y Bioinformática
- Neurociencia y Psicología
- Astronomía
- Robótica
- Vehículos Autónomos
- Meteorología
- Negocios

Por otro lado, el código es limpio y muy acotado en sus expresiones.

```python
def max_num(n1, n2):
    return n1 if n1 > n2 else n2
```

Este ejemplo de código que puedes encontrar en [mi repositorio de prácticas en Python](https://github.com/maxwellnewage/python-practices), define una función que devuelve el número mayor entre dos números. Se que es algo muy sencillo, pero resolverlo en una linea con un condicional, demuestra la eficiencia y simplicidad que representa este lenguaje de programación.

Hay otras características interesantes en Python, pero me gustaría hablar de mi viaje exploratorio desde el principio hasta donde estoy ahora, y finalmente hacia donde voy a apuntar.

## El primer viaje fue fallido
Abundan las historias de superación personal que hablan de los éxitos sin contar demasiado los fracasos. Siempre se utiliza la misma fórmula: Personaje X estuvo intentando sacar X proyecto por años, demostrando que la persistencia era su mayor aliada. Sin detenerse un solo momento, lo logró luego de 5 años dejándose la piel en ello.

Este tipo de ejemplos son los que tienden a deprimir a todos. Se inventa un modelo perfecto de persona que no se rinde nunca y se espera que los demás lo sigan. Esa persona **no existe**. El camino fue distinto, pero lo decoran con colores para que creas que podés llegar si no dejás de intentarlo.

Mi historia con Python comienza con una decisión de diseño: Necesitaba crear un sitio web con administrador para un cliente con un presupuesto bajo y en poco tiempo.

Descubrí que con Django, uno de los mejores frameworks de desarrollo web en Python, podía levantar un componente llamado django-admin, el cual me resolvía una gran parte del dashboard administrador.

Ya tenía ciertos conocimientos en el lenguaje, dado que hice uno de esos cursos de Python en Youtube de 12 horas.

{% embed https://www.youtube.com/watch?v=B9nFMZIYQl0 %}

Por supuesto, yo tenía conocimientos previos en programación y también experiencia laboral en otras tecnologías. No quiero crear la falsa expectativa de que en 12 horas (quizá 36, sumando prácticas asincrónicas) una persona se puede convertir en desarrolladora.

Luego de tener unas bases decentes en Python, hice otro curso de Django y empecé a crear el producto que requería el cliente. Era una especie de guía turística de un barrio particular; similar a TripAdvisor pero quizá un poco más rudimentaria.

## Final del primer viaje corto

Luego de dos semanas de desarrollo, realizé mi primer entrega y recibí buenos comentarios en general, pero algunos cambios en materia del dashboard.

Mi cliente necesitaba hacer cambios visuales en muchos componentes que django-admin ofrecía, lo cual empezó a ser un problema serio.

Este dashboard es excelente a la hora de representar modelos de datos para generar un ABM, pero cuando necesitamos modificar algun comportamiento específico (por ejemplo agregar un evento de drag & drop para subir imágenes), hay que crear componentes personalizados que sigan el ciclo de vida del administrador.

Esto puede parecer natural para cualquier solución de este estilo. El problema fue que en ese momento no estaba preparado para personalizar un sistema que apenas sabía como funcionaba por detrás. De hecho mi conocimiento en POO con Python era cuestionable, y todavía no terminaba de tener claro los conceptos de polimorfismo en ese lenguaje.

Decidí dar un volantazo y cambiar a Laravel con PHP. Resultó ser un framework que dominaba mucho mejor por mis años de experiencia en la industria, y logré armar un administrador a mano pero mucho más flexible.

Fue un viaje corto, un primer acercamiento que no llevó a buen puerto.

## Segundo viaje, el abrecaminos

Este viaje comenzó hace poco en realidad: un par de meses, intensos, pero meses en fin. Creo que fueron cinco meses al momento de publicar este artículo.

Con unas bases más sólidas como desarrollador y también analista, pude dar un paso atrás antes de estudiar un nuevo tema.

Empecé investigando qué era el análisis de datos y cuál era la demanda del mercado. Es importante aclarar, querido/a lector/a, que si bien me apasiona el desarrollo, también necesito pensar en las fuentes de ingresos que van a permitirme vivir de ello.

{% embed https://www.youtube.com/watch?v=_LWSuuSR5mk %}

Descubrí para mi agrado que es una profesión muy bien pagada y también demandada. No suelo decir esto porque no quiero que se malinterprete como un discurso de marketing, pero creo que tanto los analistas como los científicos de datos son las profesiones que van a definir el futuro de la tecnología y de la industria de sistemas.

Este argumento pienso fundamentarlo no solo en este artículo, sino en los próximos que van a surgir sobre Python y sus implicaciones presentes y futuras.

## Path de Aprendizaje

![Path Data Analyst](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vtviq8yrxxrgbxrhrpjb.png)

Un amigo me compartió esta imagen y me pareció un excelente punto de partida para pavimentar el camino que estaba trazando. A continuación les voy a explicar paso a paso como me fui sumergiendo en diversos aspectos del mundo de los datos.

### Probabilidad y Estadística

Primero conseguí [un libro de probabilidad y estadística](https://www.pearsoneducacion.net/espa%C3%B1a/TiendaOnline/probabilidad-y-estad%C3%ADstica-para-ingenier%C3%ADa-y-ciencias-9ed-) que suelen usar para dictar dicha materia en algunas carreras de la universidad.

Por supuesto, este aprendizaje sería un proceso paralelo a otros, dada la magnitud tanto del libro (unas mil páginas) como los conceptos y ejercicios planteados que iba a tener que aplicar.

### Fundamentos en Excel

Luego seguía Excel. Encontré [un sitio muy interesante](https://excel-practice-online.com/), el cual tenía prácticas de fórmulas que iban desde las más sencillas (como sumar dos celdas) hasta las avanzadas (busquedas y querys).

Luego investigué sobre las funciones DAX y encontré una lista de reproducción en YouTube que ayudó mucho al proceso.

{% embed https://www.youtube.com/watch?v=gQtnWQ4M3wo %}

### MySQL y las Bases de datos relacionales

Esta parte del camino fue mayormente un repaso general, dado que trabajo con MySQL desde que empecé en la industria. Es interesante como se puede combinar con esta rama y puedo afirmar que es en el area que más rendimiento demuestra.

Recomiendo este [sitio](https://www.w3schools.com/sql/) para tener una referencia rápida sobre cualquier cosa que queramos hacer en SQL.

### PowerBI

Una de las herramientas más poderosas para analizar, recopilar y normalizar datos es PowerBI (tambien existe Tableou). Encontré un tutorial en español bastante completo, el cual me permitió también entender conceptos muy interesantes como la carga de un set de datos o datasets.

{% embed https://youtu.be/vrbKOvxWeDY %}

Confieso que mi incursión no superó un par de prácticas del curso y propias, dado que mi intención era entender todo el universo del análisis de datos y no quería quedarme con una herramienta.

### Certificado profesional de Analista en datos de IBM

Entre los videos que encontré acerca de los posibles learning paths, me sugería que haga [este curso](https://www.coursera.org/professional-certificates/ibm-data-analyst). Si bien es pago, se puede pedir una beca que te da el 100% del costo. Por supuesto hay que detallar el motivo de la solicitud en varios aspectos que implican tanto tu formación a nivel personal como profesional.

Logré conseguir la beca y certifiqué. El curso se centra en explicar la teoría del rol de un analista de datos. Es extremadamente pesado de seguir dado que no existe una parte práctica; y cada 4 videos aparece un quizz que te obliga a memorizar todo ese conjunto de conceptos interminables.

Por suerte me apoyé en [Notion](https://www.notion.so/) para recopilar apuntes e ir creando mi propio manual de referencias. Esto implicó tener una ayuda constante a la hora de resolver los quizzes, y por supuesto, certificar.

Este es [mi certificado oficial](https://www.coursera.org/account/accomplishments/verify/75DJ3QNSFCXE), me saqué un 91.

### Python

Quizá en Python me quedé mucho mas tiempo del que debería, pero me apasionó este lenguaje y decidí sacarle todo el jugo posible. Aprendí tanto programación estrucutrada como funcional y orientada a objetos. A día de hoy sigo adquiriendo conocimientos nuevos.

Al principio del artículo expliqué un poco las razones por las cuales Python me parece un excelente lenguaje. En los próximos artículos me voy a centrar en exprimir el potencial mediante ejemplos y prácticas.

Por otro lado, les comparto un [repositorio lleno de ejercicios](https://github.com/maxwellnewage/python-practices) que abarcan todos los temas que fui aprendiendo con el tiempo.

Luego de aprender las bases del lenguaje (tipos de datos, condicionales, bucles, POO, funciones, y un largo etcétera) 
apareció una plataforma que me daría una guía estructurada y un path definitivo: [DataCamp](https://app.datacamp.com/learn).

### DataCamp, mi maestro duro y exigente

DataCamp es una plataforma de cursos. Si tuviera que explicarla en pocas palabras, diría que es un hijo entre Udemy y Codecademy.

Tiene cursos dedicados a enseñarte mediante videos que luego te llevan a un sandbox para practicar lo aprendido. Lo más interesante es que utilizan la estrategia de "aprender haciendo" pero a un nivel extremo: te enseñan un par de conceptos y luego a aplicarlo en una situación ficticia de tres formas distintas. Finalmente, cuando se termina una unidad, hay ejercicios integradores que combinan todo lo que venimos practicando.

Un detalle interesante es que mantiene una premisa: Estudiá todos los días, te damos experiencia (gamificación, nada significativo) y mantenemos la racha de X días.

Esto te genera una responsabilidad estudiantil: Perder la racha nos hace sentir mal, y queremos rendir todo lo posible para aprender y lograr nuestros objetivos.

Otro detalle importante es que la plataforma es paga. Tiene una suscripción mensual y otra anual. Por supuesto, recomiendo la anual y esperar algun evento (como Black Friday) que les va a dar un descuento bastante importante. Si mal recuerdo, yo pagué el mes pasado la suscripción anual a 60 dólares.

Actualmente estoy haciendo todos los cursos de Python y Análisis de Datos, aunque en el futuro cuando me sienta más confiado, quiero hacer los de ciencia de datos.

## Conclusiones
Mi camino no va a terminar pronto, y es muy probable que se mantenga por años. Encuentro en Python un lenguaje versatil y confiable; mientras que en datos veo una "conclusión del camino".

Siempre me gustó desarrollar programas que transporten información y la traduzcan a diferentes formatos, sea un sitio web con frontend o un bot que toma decisiones.

Hoy vivimos en una época donde los datos son muy importantes y creo que en un futuro cercano se van a volver imprescindibles.

Espero que hayan disfrutado de este artículo que me tomó mucho amor y dedicación armar, y lo compartan al mundo! Nos vemos en el siguiente!