A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Full-Stack Software Developer - 16w

Data Science and Machine Learning - 16 wks

Buscar en lecciones


IngresarEmpezar
← Regresar a lecciones

Weekly Coding Challenge

Todas las semanas escogemos un proyecto de la vida real para que construyas tu portafolio y te prepares para conseguir un trabajo. Todos nuestros proyectos están construidos con ChatGPT como co-pilot!

Únete al reto

Podcast: Code Sets You Free

Un podcast de cultura tecnológica donde aprenderás a luchar contra los enemigos que te bloquean en tu camino para convertirte en un profesional exitoso en tecnología.

Escuchar el podcast
Editar en Github

Data Science con Python

Guía básica de Python

Python es un lenguaje de programación muy versátil y que se utiliza en multitud de casos: desarrollo de aplicaciones web (front y back), juegos para móvil, simulaciones, redes, automatizaciones... además, es el lenguaje rey para trabajar con datos y elaborar algoritmos de Inteligencia Artificial, ciencia de datos y Machine Learning. Antes de comenzar, distingamos entre los tres términos anteriores:

TérminoDefiniciónAmplitudObjetivo
Inteligencia Artificial (Artificial Intelligence)Es el estudio de cómo hacer que las computadoras piensen y actúen como los humanos.Es un campo amplio que incluye varios subcampos, como el aprendizaje automático, la robótica, el procesamiento del lenguaje natural, la visión por computadora...Simular la inteligencia humana en máquinas.
Aprendizaje automático (Machine Learning)Es un subcampo de la IA que se centra en desarrollar algoritmos y modelos que permitan a las computadoras aprender a partir de datos.Es una técnica específica dentro de la inteligencia artificial.Hacer predicciones o decisiones sin ser programadas específicamente para ello.
Ciencia de datos (Data Science)Es un campo interdisciplinario que utiliza técnicas estadísticas, informáticas y de análisis para interpretar, comprender y extraer conocimiento de datos estructurados y no estructurados.Incluye la adquisición, limpieza, análisis y visualización de datos, y puede hacer uso de la IA y del machine learning para analizarlos.Descubrir patrones y obtener información valiosa de grandes conjuntos de datos.

Diferencias entre estas disciplinas

Mientras que la IA se centra en simular la inteligencia humana, el aprendizaje automático es una técnica dentro de la IA que permite a las máquinas aprender de datos, y la ciencia de datos es una disciplina más amplia que se ocupa de todo el proceso de trabajar con datos, desde la recopilación hasta la interpretación, y puede incluir el uso de la IA y el machine learning.

Guía básica de Python

Hello, World!

Todo desarrollador que comienza a programar en un lenguaje nuevo lo hace imprimiendo Hello, World!. En Python podemos hacerlo usando la función print, que muestra por consola cualquier dato o texto que se coloque entre sus paréntesis:

Loading...

Variables

Una variable (variable) en Python (y en la mayoría de los lenguajes de programación) son contenedores que almacenan datos que pueden variar en el tiempo. Este valor puede ser un número, un texto, una lista de elementos... Lo especial de este contenedor es que podemos asignarle un nombre para identificarlo y acceder a lo que guardamos en él cuando lo necesitemos:

1nombre = "Juan" 2edad = 25 3altura = 1.80 4es_estudiante = True

Además, las variables son elementos mutables y que pueden cambiar en el tiempo. Así, al igual que podemos acceder a su valor para leerlo, también podemos modificarlo:

Loading...

De esta forma hemos modificado el valor de la variable mi_numero de 10 a 60.

Las variables son fundamentales en la programación porque:

  1. Permiten almacenar información para usarla más tarde.
  2. Facilitan la realización de operaciones entre ellas (dependiendo de su tipo).
  3. Hacen el código más legible y organizado. Es más fácil entender altura_persona que recordar qué significa un número suelto en el código.

Es importante dar siempre a las variables nombres descriptivos para que nosotros mismos (o cualquiera que lea nuestro código) puedan entender fácilmente para qué sirven y qué se supone que contienen.

Tipos de datos

Los tipos de datos (data types) determinan la clase de datos que una variable puede contener. Python tiene sus propios tipos básicos:

Entero (integer): int

Representa números enteros, positivos o negativos.

1num_int1 = 123 2num_int2 = -57

Punto flotante (floating point): float

Representa números reales con decimales.

1num_float1 = 3.14 2num_float2 = -0.16

Cadena (string): str

Representa secuencias de caracteres (texto).

1str_var = "Esto es un texto de prueba"

Booleano (boolean): bool

Representa valores que solo tienen 2 posiciones, True o False.

1bool_var1 = True 2bool_var2 = False

Lista (list): list

Representa una colección ordenada de elementos. Los elementos pueden ser de cualquier tipo y se puede modificar su contenido: insertar elementos, eliminar, etc.

1list_numbers = [1, 2, 3, 4, 5] 2list_strings = ["A", "B", "C", "D"]

Tupla (tuple): tuple

Similar a la lista, pero es inmutable, es decir, una vez creada no se puede modificar su contenido.

1tuple_numbers = (1, 2, 3, 4, 5) 2tuple_booleans = (True, False, False)

Conjunto (set): set

Representa una colección no ordenada de elementos únicos (sin duplicados).

1set_fruits = {"manzana", "banana", "cereza"}

Diccionario (dictionary): dict

Representa una colección no ordenada de pares clave-valor.

1dict_person = { 2 "nombre": "Juan", 3 "edad": 25, 4 "altura": 1.80, 5 "es_estudiante": True 6}

Octetos (bytes): bytes

Representa secuencias de bytes. Normalmente, se utilizan para manejar datos binarios.

1bytes_var = b"Hola"

Además de estos tipos básicos, Python también ofrece módulos y bibliotecas que definen otros tipos de datos más especializados.

Operadores

Los operadores (operators) son símbolos que indican una operación:

Operadores matemáticos

Los operadores matemáticos realizan operaciones aritméticas. Dependiendo del tipo de las variables, los resultados pueden ser unos u otros, no necesariamente tienen que aplicarse siempre a números.

  • Suma: +
  • Resta: -
  • Multiplicación: *
  • División: /
  • Módulo: %
1x = 5 2y = 3 3z = x + y # Salida: z = 8 4z = x * y # Salida: z = 15

Operadores lógicos

Los operadores lógicos evalúan condiciones y devuelven valores booleanos. Pueden ser utilizados en bucles, condicionales, filtros, etcétera. Son muy versátiles y útiles.

  • Y lógico: and
  • O lógico: or
  • No lógico (negación): not
1resultado = True and False # resultado = False 2resultado = True or False # resultado = True 3resultado = not True # resultado = False

Estructuras de control

Las estructuras de control en Python son instrucciones que permiten modificar el flujo de ejecución de un programa. Estas estructuras permiten tomar decisiones, repetir bloques de código y saltar a diferentes partes del código dependiendo de ciertas condiciones lógicas.

En Python, las principales estructuras de control son:

Estructuras de decisión

if

Permite ejecutar un bucle de código si se cumple una condición.

Loading...

elif

Se extiende el if, para incluir y comprobar otras condiciones.

Loading...

else

Se ejecuta cuando no se cumpla ninguna de la(s) condición(es) anterior(es):

Loading...

Estructuras de repetición (bucles)

for

Repite un bloque de código un número determinado de veces o a través de los elementos de una colección.

Loading...

while

Repite un bloque de código mientras se cumpla una condición.

Loading...

Control de bucles

break

Termina el bucle antes de que haya completado todas sus iteraciones.

Loading...

continue

Salta a la siguiente iteración del bucle, omitiendo el código que sigue después.

Loading...

pass

No hace nada. Actúa como un marcador de posición donde se requiere una declaración sintácticamente, pero no se desea ejecutar ningún código.

Loading...

Estas estructuras de control son esenciales para crear programas que puedan tomar decisiones, repetir tareas y manejar diferentes situaciones o entradas. Al combinarlas y anidarlas, podemos crear flujos de trabajo complejos y lógicas sofisticadas en nuestros programas.

Funciones

Una función (function) es un bloque de código reutilizable que realiza una tarea específica.

Loading...

Las funciones proporcionan una forma de modularizar el código, permitiéndonos organizar y reutilizar fragmentos de código en diferentes partes de nuestros programas. Esto mejora la calidad y facilita la depuración y el mantenimiento.

Un código en Python combina todos los elementos que acabamos de ver en esta guía para llevar a cabo una tarea concreta. A continuación se muestra un programa sencillo que toma la edad de un usuario, determina si es menor de edad, adulto o adulto mayor, y luego imprime una lista de actividades recomendada para cada grupo:

1# 1. Tipos de datos 2nombre = input("Por favor, ingresa tu nombre:") 3edad = int(input("Por favor, ingresa tu edad:")) 4 5# 2. Estructura de decisión 6if edad < 18: 7 estado = "menor de edad" 8 actividades = ["estudiar", "andar en bicicleta", "salir con amigos"] 9elif edad < 65: 10 estado = "adulto" 11 actividades = ["trabajar", "leer un libro", "viajar"] 12else: 13 estado = "adulto mayor" 14 actividades = ["descansar", "leer el periódico", "pasear"] 15 16# 3. Estructura de repetición 17print(f"\nHola, {nombre}. Eres un {estado}. Aquí hay algunas actividades que podrías considerar:") 18for actividad in actividades: 19 print(f"- {actividad}")

Librerías

Una librería (library) es una colección de funciones predefinidas y que se realizan con un fin determinado. El objetivo es simplificar el trabajo del desarrollador y no tenerlas que programar desde cero. Existen multitud de ellas y se organizan según su utilidad. Como Python es el lenguaje más utilizado en el ámbito de Data Science y de la Inteligencia Artificial, algunas de sus librerías más utilizadas son relativas a estos campos:

  • Scikit-learn
  • NuPIC
  • Ramp
  • NumPy
  • Pandas
  • TensorFlow
  • Keras
  • Pipenv
  • SciPy
  • Matplotlib

De este top 10, la mayoría se utilizan en los procesos de Machine Learning, Natural Language Processing, Visión Artificial y muchas otras áreas de la inteligencia artificial. Por ello, es vital que conozcas y sepas utilizar algunas de estas librerías, que son clave para cualquier labor de ciencia de datos.

En este bootcamp aprenderemos a fondo NumPy, que es una librería utilizada para procesar y trabajar con listas multidimensionales de forma muy eficiente, Pandas, construida sobre NumPy y que permite trabajar con estructuras de datos tabulares denominados DataFrames. Matplotlib que posibilita la opción de visualizar los datos y sus relaciones, y scikit-learn, ampliamente utilizada para construir modelos de Machine Learning.

Rendimiento

Todo el software que se programa se debe ejecutar en un hardware, que es un conjunto de elementos físicos que constituyen un sistema informático. Cuanto más eficiente sea el código que implementes, mayor aprovechamiento de los recursos hardware, menores tiempos de ejecución, mayor posibilidad de distribuir tareas, etcétera.

Cuando se construyen modelos de inteligencia artificial, el rendimiento es una gran preocupación, ya que la potencia de procesamiento es la mayor limitación que tiene este campo en este momento. Por lo tanto, la construcción de código y funciones eficientes es un pilar fundamental. También aprenderemos sobre ello.

Desarrollo de código

Existen dos formas principales de programar en Python, y cada una de ellas se puede llevar a cabo usando distintas herramientas:

  • Programación flexible: Se lleva a cabo con interfaces web como Jupyter Notebook o Google Collab. Se caracteriza por no contar con una estructura predefinida de código y concebidas para hacer desarrollos rápidos y de prueba y error. En este tipo de desarrollos se generan cuadernos (notebooks)
  • Programación productiva: Se lleva a cabo en entornos de desarrollo integrados (IDE, Integrated Development Environment), que son programas informáticos que permiten un desarrollo de inicio a fin de una aplicación o un servicio completo. Algunos de los más utilizados en Python son el Visual Studio Code y Spyder, entre otros.

Normalmente, el desarrollo de un producto, modelo o servicio de Machine Learning, se compone de dos fases: una exploratoria y otra de desarrollo. Primero programamos en notebooks y hacemos pruebas de concepto, buscando el mejor preprocesamiento, análisis y predicción de los datos, y después preparamos un desarrollo completo para productivizar el modelo.

Estructura de proyecto

Usaremos una plantilla para nuestros proyectos llamada Cookie Cutter Datascience. Usar una plantilla siempre es una buena idea para organizar nuestros archivos y flujo de trabajo del proyecto. Puedes leer la documentación y ver este video sobre cómo funciona.