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érmino | Definición | Amplitud | Objetivo |
---|---|---|---|
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. |
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.
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...
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:
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.
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.
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.
+
-
*
/
%
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.
and
or
not
1resultado = True and False # resultado = False 2resultado = True or False # resultado = True 3resultado = not True # resultado = False
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:
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...
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...
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.
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}")
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:
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.
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.
Existen dos formas principales de programar en Python, y cada una de ellas se puede llevar a cabo usando distintas herramientas:
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)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.
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.