Show code cell source
import os
# Por precaución, cambiamos el directorio activo de Python a aquel que contenga este notebook
if "PAD-book" in os.listdir():
os.chdir(r"PAD-book/Laboratorio-Computacional-de-Analytics/S1 - Bienvenida, estructuras de datos y de control/S1.TU1/")
Bienvenida a Jupyter y Python#
Al iniciar el desarrollo de un proyecto de analítica de datos, debemos elegir el lenguaje de programación y la aplicación que utilizaremos para programar. En este tutorial exploraremos cómo utilizar el lenguaje Python en la aplicación Jupyter.
Requisitos#
Para desarrollar este tutorial necesitarás:
Descargar e instalar la aplicación Jupyter.
Objetivos#
Al final de este tutorial podrás:
1. Comprender los usos y las características principales de algunos tipos de celdas que puedes crear en un Jupyter Notebook.
2. Declarar variables e identificar su tipo.
3. Importar y utilizar paquetes.
4. Comprender algunos de los tipos de errores que te pueden ocurrir.
5. Conocer algunas buenas prácticas de programación.
1. Celdas#
En un Jupyter Notebook podemos insertar diversos tipos de celdas. En este tutorial nos enfocaremos en los tipos Code y Markdown.
Seleccionar una celda
Para seleccionar una celda damos un clic sobre esta. Para poder usar los comandos de teclado, asegúrate de que tu cursor no esté en la caja de texto de la celda seleccionada.
Agregar una celda
Para agregar una celda tenemos múltiples opciones. Una de ellas es a través de comandos en el teclado: selecccionamos una celda y luego oprimimos la tecla A
o B
para agregar una celda arriba o abajo de la seleccionada, respectivamente. De manera predeterminada, el tipo de la celda agregada es Code. Si queremos cambiar su tipo a Markdown, oprimimos la tecla M
. Si queremos que la celda vuelva a ser tipo Code, oprimimos la tecla Y
.
Eliminar una celda
Para eliminar una celda tenemos múltiples opciones. Una de ellas es a través de comandos en el teclado: selecccionamos la celda a eliminar y luego oprimimos dos veces la tecla D
. Podemos también oprimir la tecla X
una sola vez.
Ejecutar el contenido de una celda
Para ejecutar el contenido de una celda seleccionamos la celda que queremos ejecutar y oprimimos las teclas Shift
+ Enter
. Al ejecutarla, obtenemos el resultado o la salida correspondiente a la celda seleccionada y automáticamente se selecciona la celda siguiente. Oprimir Ctrl
+ Enter
nos permite ejecutar la celda seleccionada y permanecer en ella.
1.1. Markdown#
Utilizamos este tipo de celdas para escribir texto. Podemos agregar títulos para establecer orden y jerarquía en nuestro Notebook. Asimismo, podemos agregar expresiones matemáticas en lenguaje LaTeX y añadir imágenes.
Referencia de comandos y escritura LaTeX: https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes
Acceder al código de una celda Markdown
Cuando ejecutamos una celda de tipo Markdown, pasamos de ver el código escrito en la celda a ver el resultado de su compilación. Para volver a acceder al código escrito en la celda damos doble clic sobre esta u oprimimos la tecla Enter
.
Nota: te recomendamos acceder a las celdas Markdown de este Notebook para ver la sintaxis correspondiente.
Encabezado
Para agregar un encabezado a nuestro Notebook escribimos el símbolo numeral (#
) antes del texto que corresponde al encabezado. Podemos agregar desde uno hasta seis niveles a la jerarquía, según de la cantidad de numerales que antepongamos al encabezado. A continuación, encuentras un ejemplo del uso de los niveles de jerarquización de encabezados.
# Utilizamos el primer nivel de jerarquía para el encabezado de primer nivel.
## Utilizamos el segundo nivel de jerarquía para los encabezados de segundo nivel.
### Utilizamos el tercer nivel de jerarquía para los encabezados de tercer nivel.
#### Utilizamos el cuarto nivel de jerarquía para los encabezados de cuarto nivel.
##### Utilizamos el quinto nivel de jerarquía para los encabezados de quinto nivel.
###### Utilizamos el sexto nivel de jerarquía para los encabezados de sexto nivel.
Pega este código en una celda tipo Markdown para ilustrar la jerarquía de encabezados.
Expresiones matemáticas
Para agregar una expresión matemática en lenguaje LaTeX es necesario abrirla y cerrarla con el símbolo peso ($
).
Tenemos dos opciones para agregar expresiones matemáticas:
Si escribimos un solo símbolo peso al abrir y cerrar la expresión matemática, esta mantiene su posición dentro del texto. Ejemplo:
La ecuación general de una recta es $y = mx + b.$
produce:La ecuación general de una recta es \(y = mx + b.\)
Si escribimos dos símbolos peso al abrir y cerrar la expresión matemática, esta aparecerá centrada en la siguiente línea. Ejemplo:
La ecuación general de una recta es la siguiente: $$y = mx + b.$$
produce:La ecuación general de una recta es la siguiente:
\[y = mx + b.\]
Asimismo, podemos agregar expresiones matemáticas más complejas como esta: \(\sum\limits_{t=1}^{N}\frac{\pi}{1-e^{-\kappa t}}\).
Imágenes
Para agregar una imagen utilizamos el siguiente código:
![ejemplo_imagen.png](Archivos/ejemplo_imagen.png)
.
A continuación, un ejemplo de cómo se vería la imagen correspondiente.
¿Quieres intentarlo? Accede a una celda Markdown, referencia una imagen con la sintaxis descrita y ejecuta la celda para visualizar el resultado.
1.2. Code#
Utilizamos este tipo de celdas para escribir y ejecutar código en el lenguaje del Notebook (para nosotros, Python). Cada celda de código se compone de dos partes:
In
: en esta parte de la celda se escribe el código a ejecutar con sus respectivos comentarios; un comentario es una línea de texto que describe el código y no se ejecuta. A los comentarios los precede el símbolo numeral (#
).Out
: en esta parte de la celda se visualiza el ultimo resultado de ejecutar el código escrito en la parteIn
. Para visualizar el valor de una o varias variables, utilizamos la funciónprint
odisplay
.
Nota: cuando la variable a visualizar esta escrita en la última línea de código no es necesario utilizar estas funciones.
A continuación se muestra un ejemplo:
variable = "Con print"
print(variable)
variable_2 = "Con display"
display(variable_2)
variable_3 = "Sin función"
variable_3
Con print
'Con display'
'Sin función'
2. Variables y tipos de datos#
Cuando programamos, declaramos variables para almacenar diversos tipos de datos tales como cadenas de caracteres, números, entre otros. Al declarar una variable, Python identifica de manera automática el tipo de dato al que corresponde. En esta sección, veremos los principales tipos de datos que existen en Python.
2.1. Variables#
Declaración
Para declarar una variable debes escribir el nombre que quieres para tu variable. Luego, con el símbolo igual (=
) asignas el valor que quieres guardar en la variable. En la siguiente celda puedes ver un ejemplo.
variable = "Valor a guardar"
variable
'Valor a guardar'
Obtener el tipo de una variable
Para obtener el tipo de una variable utilizamos la función type
.
2.2. Cadenas de caracteres#
El tipo de dato que Python asigna a las variables que almacenan cadenas texto se llama str
. Al escribir una cadena de caracteres puedes utilizar comillas dobles (""
) o simples (''
). En la siguiente celda declaramos una variable que guarda una cadena de caracteres y mostramos su valor.
variable_str = "Cadena de caracteres"
variable_str
'Cadena de caracteres'
Al revisar el tipo de la variable variable_str
obtenemos que, efectivamente, es una variable de tipo str
.
type(variable_str)
str
Podemos concatenar variables de tipo str
con el operador de suma (+
). Veamos un ejemplo:
saludo = "Hola"
union = ", "
pregunta = "¿cómo vas?"
concatenado = saludo + union + pregunta
concatenado
'Hola, ¿cómo vas?'
De manera alternativa, el método print
nos permite imprimir cadenas concatenadas de caracteres dentro de él.
print(saludo, union, pregunta, sep='')
Hola, ¿cómo vas?
2.3. Números#
Python asigna uno de dos tipos de datos a las variables que almacenan números. Para números enteros asigna el tipo int
, mientras que para números con decimales asigna el tipo float
.
Nota: el separador decimal de Python es el punto.
En la siguiente celda declaramos una variable que guarda un número entero y otra variable que guarda un número con decimales.
numero_int = 3
numero_float_1 = 8.75
numero_float_2 = .2
numero_float_3 = 2.
Revisemos el tipo de cada variable.
type(numero_int)
int
type(numero_float_1)
float
type(numero_float_2)
float
type(numero_float_3)
float
Al hacer operaciones entre variables de tipo int
y tipo float
, el resultado será de tipo float
.
suma = numero_int + numero_float_1
type(suma)
float
Operaciones con números
Suma |
|
Resta |
|
Multiplicación |
|
Potencia |
|
División |
|
División entera |
|
Módulo o residuo |
|
Veamos algunos ejemplos.
numero_float_1 / numero_int
2.9166666666666665
numero_float_1 // numero_int
2.0
2.4. Valores lógicos#
El tipo de dato que Python asigna a las variables que almacenan valores lógicos se llama bool
. Los dos posibles valores lógicos son True
y False
.
Nota: la mayúscula en la primera letra de cada uno de los valores lógicos es escencial para que Python los identifique.
En la siguiente celda declaramos una variable que guarda un valor lógico y revisamos su tipo.
valor_logico = False
type(valor_logico)
bool
2.5. Cambio de tipo de una variable#
En caso de ser necesario, podemos utilizar los métodos constructores str
, int
, float
y bool
para cambiarle el tipo a nuestras variables.
Concatenar una cadena de caracteres con variables de otro tipo
Para concatenar una cadena de caracteres con variables de otro tipo, debemos convertir las variables en objetos de tipo str
.
Una manera de convertir variables en objetos de tipo str
es haciendo uso del método str
. A continuación, se muestra un ejemplo de lo anterior.
residuo = numero_float_1 % numero_int
"El residuo de la división entera de " + str(numero_float_1) + " sobre " + str(numero_int) + " es igual a: " + str(residuo)
'El residuo de la división entera de 8.75 sobre 3 es igual a: 2.75'
Una alternativa más eficiente para concatenar una cadena de caracteres con variables de otro tipo, es escribir la letra f
antes de la cadena de caracteres y encerrar la variable entre llaves ({<variable>}
). A continuación se muestra un ejemplo de lo anterior.
residuo = numero_float_1 % numero_int
f"El residuo de la división entera de {numero_float_1} sobre {numero_int} es igual a: {residuo}"
'El residuo de la división entera de 8.75 sobre 3 es igual a: 2.75'
3. Importar paquetes#
Frecuentemente es necesario apoyarse de paquetes para realizar tareas específicas, dado que estos contienen variables y funciones que son de ayuda a la hora de realizar código. Así, evitamos invertir tiempo en implementar código ya existente. Adicionalmente, los podemos utilizar para acceder rápidamente a valores conocidos tales como las constantes matemáticas. Por ejemplo:
Existe la función
random
dentro del paqueterandom
.Existen las funciones
sqrt
yexp
dentro del paquetemath
.
En Python hay diversas formas de importar paquetes y sus funciones. Primero, para importar una única función de un paquete, escribimos from
seguido del nombre del paquete y luego import
seguido del nombre de la función. En la siguiente celda importamos y utilizamos una función.
from random import random
aleatorio = int(10 * random())
print(f"Tu número de la suerte es {aleatorio}.")
Tu número de la suerte es 0.
Asimismo, podemos importar múltiples funciones de un paquete de la siguiente manera:
from math import sqrt, exp
raiz = sqrt(9)
expo = exp(3)
print(f"La raiz cuadrada de 9 es: {raiz}")
print(f"La constante de euler (e) elevada al cubo es: {expo}")
La raiz cuadrada de 9 es: 3.0
La constante de euler (e) elevada al cubo es: 20.085536923187668
Por otro lado, existe la opción de importar todo el paquete y acceder a sus funciones como se muestra a continuación:
import math
raiz = math.sqrt(9)
expo = math.exp(3)
print(f"La raiz cuadrada de 9 es: {raiz}")
print(f"La constante de euler (e) elevada al cubo es: {expo}")
La raiz cuadrada de 9 es: 3.0
La constante de euler (e) elevada al cubo es: 20.085536923187668
Adicionalmente, al importar todo un paquete, puedes ponerle un alias para abreviar el nombre del paquete al utilizar sus funciones. En la siguiente celda podrás ver un ejemplo.
import math as m
raiz = m.sqrt(9)
expo = m.exp(3)
print(f"La raiz cuadrada de 9 es: {raiz}")
print(f"La constante de euler (e) elevada al cubo es: {expo}")
La raiz cuadrada de 9 es: 3.0
La constante de euler (e) elevada al cubo es: 20.085536923187668
4. Errores#
Cuando Python no es capaz de ejecutar el código escrito en una celda, nos aparece una excepción en el Out
(Resultado inferior a la celda de código) indicandonos qué línea está generando el error, el tipo de error y su causa. Esta información es útil, ya que nos da indicios de como corregir el error. A continuación, algunos ejemplos de errores en Python.
NameError
a = 5
suma = a + b
suma
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[23], line 2
1 a = 5
----> 2 suma = a + b
3 suma
NameError: name 'b' is not defined
La anterior excepción nos muestra que el error se produjo en la segunda línea del código, en la cual estamos realizando la suma a + b
. Adicionalmente, el error nos explica que el error se debe a que la variable b
no está definida. Después de interpretar la excepción, podemos corregir este error de la siguiente manera:
a = 5
b = 7
suma = a + b
suma
12
ZeroDivisionError
c = 100
d = 0
division = c / d
division
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
Cell In[25], line 3
1 c = 100
2 d = 0
----> 3 division = c / d
4 division
ZeroDivisionError: division by zero
En este caso, la excepción se debe a que la división entre 0 no es posible. Podemos corregir este error de la siguiente manera:
c = 100
d = 10
division = c / d
division
10.0
Tips y recursos adicionales#
Tip 1
Cuando te salga un error que no entiendas, te recomendamos copiar la última línea del error y pegarla en tu buscador web de preferencia. En internet hay una gran variedad de foros en los que se explican la mayoría de los errores que te pueden ocurrir. Te recomendamos acceder a los enlaces de la página Stack Overflow.
Un ejemplo puede ser el siguiente error:
ZeroDivisionError: division by zero
link de Stack Overflow para ayuda: https://stackoverflow.com/questions/29836964/error-python-zerodivisionerror-division-by-zero
Tip 2
La función help
de Python te permite consultar la documentación de cualquier método o función.
Recursos adicionales
Para finalizar nuestro primer tutorial, te invitamos a reforzar y complementar tu conocimiento con los siguientes recursos:
La página de iPython donde se encuentra la documentación, ejemplos y una variedad de recursos. http://ipython.org/
La página nbviewer donde se encuentran ejemplos y tutoriales de Jupyter Notebook. https://nbviewer.jupyter.org/
Uno de los libros del curso: https://jakevdp.github.io/PythonDataScienceHandbook/
Créditos#
Autores: Juan Felipe Rengifo Méndez, Ariadna Sofía de Ávila Bula, Alejandro Mantilla Redondo, Diego Alejandro Cely Gómez
Actualizado por: Jose Fernando Barrera De Plaza
Fecha última actualización: 06/08/2023