El Jupyter Notebook#
“The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more.”
Este documento es un Jupyter Notebook.
Estructura en Celdas#
Un Jupyter Notebook se compone de celdas ordenadas secuencialmente. Estas celdas pueden ser de dos tipos:
Markdown
Code
Las celdas de tipo Raw NBConvert
sirven un propósito muy específico y las ignoraremos. Las celdas de tipo Heading
ya no se usan y siguen en el menú para soportar Notebooks escritos con versiones antiguas de Jupyter.
Markdown#
Una celda, como esta o las anteriores es de markdown, arriba en los botones de herramientas hay una lista desplegable que dice Markdown.
Markdown es una forma de marcar texto para que tenga un formato, por ejemplo:
cursiva
negrita
las viñetas de esta lista
formato para código
Haz doble click en esta celda par ver su contenido. Para volver a ver el texto formateado, haz CTRL-Enter.
Markdown tiene muchas más posibilidades, ver por ejemplo https://www.markdownguide.org
Aunque se vea muy sencillo, markdown es una muy buena alternativa para escribir todo tipo de documentación. Es una alternativa moderna y universal a los procesadores de texto tradicionales.
Code#
En una celda también se pueden ingresar instrucciones en Python (y muchos otros lenguajes) que se pueden ejecutar, por ejemplo:
2 + 3
5
Se puede observar que la celda anterior es de tipo Code. Para ver su contenido haz doble click sobre ella, para volver a ver el resultado, haz CTRL-Enter.
Lenguajes de Programación#
Aunque existen formas para utilizar más de un lenguaje de programación en un mismo notebook, lo más usual, es utilizar sólo uno. Los lenguajes más comunes son (en este orden):
Python
R
Julia
La capacidad de un Jupyter Notebook de ejecutar código se encuentra en el kernel. Arriba a mano derecha podemos observar que este notebook está utilizando un kernel de Python 3.
En este curso utilizaremos exclusivamente Python 3.
Instalar Jupyter y Python en Windows#
Existen varias formas de instalar Python y Jupyter en Windows. La que yo recomiendo para empezar es miniconda
.
En este video encontrarán una guía paso a paso (sin sonido) para instalar Python y Jupyter en Windows 10 usando miniconda
.
Introducción a Git#
“Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.”
Todos los notebooks de este curso se almacenarán en un repositorio git
situado en Github. Los alumnos podrán clonar el repositorio en su entorno de trabajo con el comando:
git clone https://github.com/adiaz-efaa/intro-fin-python.git
Para ir actualizando el material, dentro del repositorio podrán ejecutar el comando:
git pull
Se recomienda que hagan una copia del material en un directorio separado de modo que si hacen cambios en alguno de los notebooks del curso, éstos no ocasionen conflictos con las actualizaciones del curso.
Fundamentos de Python#
Lo que a continuación veremos es el mínimo Python requerido para poder resolver problemas reales.
Operaciones Aritméticas#
Suma
1 + 5
6
Multiplicación
2 * 7
14
División
20 / 4
5.0
División de números reales
3.14 / 2.17
1.447004608294931
Cociente (cociente en una división entera)
20 // 4
5
Módulo (resto de la división entera)
5 % 2
1
divmod
(cociente y resto de la división entera)
divmod(5, 2)
(2, 1)
NOTA: el resultado (2, 1)
es una tuple
. Es un tipo de contenedor de datos que veremos más adelante.
Variables#
Las variables son espacios en memoria en los que podemos almacenar datos. El nombre de la variable es el mecanismo que existe para localizar y manipular ese valor. Es como una celda en Excel, la celda A1
, por ejemplo, es el nombre de un espacio en memoria gestionado por Excel, donde almacenamos un número, un texto o una fórmula.
a = 2.0
a
2.0
a + 1234
1236.0
Las variables tienen un tipo que indica el tipo del datos almacenado en esa variable.
type(a)
float
Python tiene dynamic typing. Que significa que puedo almacenar cualquier tipo de dato en una variable.
a = 2
type(a)
int
b = 0.5 # Declaración implícita, hay que hacerla para poder usar la variable.
b + 1
1.5
Tipos Numéricos#
a = 4.0 # tipo float. Número con decimales.
type(a)
float
b = 4 # tipo int. Número sin decimales.
type(b)
int
Tipo de Texto#
Esto se llama string
, una cadena de caracteres de texto
c = "¡Hola "
type(c)
str
d = "Mundo!"
type(d)
str
Tipo Lógico#
Existen las variables de tipo bool
que sirven para almacenar los valores True
y False
.
e = True
type(e)
bool
e
True
adv = (b > 1)
adv
True
Más Tipos#
Combinando los tipos anteriores y los contenedores que veremos más adelante se pueden crear tipos de variables más complicados.
Operaciones con Variables#
Con las variables de tipo numérico podemos efectuar las operaciones aritméticas usuales.
a
4.0
b
4
a + b
8.0
a / b
1.0
a * b
16.0
a // b
1.0
a % b
0.0
divmod(a, b)
(1.0, 0.0)
Los string
se pueden sumar, que en este caso significa concatenar.
c + d
'¡Hola Mundo!'
Un string
se escribe entre “”, pero también se puede usar ‘’. Ver por ejemplo el output de la celda anterior.
apodo = "El 'Rata'"
e = 'Chao no más '
e + d
'Chao no más Mundo!'
Lo que sigue no se puede hacer, no se puede sumar un número con un string
porque la operación no está definida. Fijarse bien en lo que dice después de TypeError:
.
try:
a + c
except Exception as e:
print(e)
unsupported operand type(s) for +: 'float' and 'str'
Sin embargo, podemos convertir el número en un string
y después de eso sumar.
str(a)
'4.0'
str(a) + c
'4.0¡Hola '
También se pueden realizar otras conversiones entre tipos.
int(a)
4
Ojo con esta que sí se puede.
numero = '4'
numero
'4'
int(numero)
4
Notar la diferencia con la conversión anterior.
float(numero)
4.0
Esta no se puede.
cuatro = 'four'
cuatro
'four'
try:
int(cuatro)
except Exception as e:
print(e)
invalid literal for int() with base 10: 'four'
try:
float(cuatro)
except Exception as e:
print(e)
could not convert string to float: 'four'
La Función print
#
En un Jupyter notebook se puede ver inmediatamente el resultado de una operación o el valor de una expresión. Sin embargo, en otros contextos (que veremos más adelante), para imprimir valores en pantalla se usa la función print
.
Al hacer CTRL-Enter en la celda siguiente Jupyter muestra el valor que resulta de evaluar la expresión b + c. Notar que está entre ‘’.
c + d
'¡Hola Mundo!'
Al hacer print
desaparecen las ‘’ o las “”, la función está hecha para mostrar texto por pantalla bien formateado.
print(c + d)
¡Hola Mundo!
print("Tengo hambre")
Tengo hambre
"Tengo hambre"
'Tengo hambre'
Formatear Strings#
nemotecnico = 'BTU0210750'
tasa = .021
frase = "La tasa de emisión del bono {} es de {}"
frase.format(nemotecnico, tasa)
'La tasa de emisión del bono BTU0210750 es de 0.021'
Podemos darle mejor formato a la tasa.
frase = "La tasa de emisión del bono {} es de {:.2%}"
frase.format(nemotecnico, tasa)
'La tasa de emisión del bono BTU0210750 es de 2.10%'
El mismo resultado se puede obtener usando fstrings
, que hoy en día es lo más usado.
f"La tasa de emisión del bono {nemotecnico} es de {tasa:.2%}"
'La tasa de emisión del bono BTU0210750 es de 2.10%'
Un fstring
también se puede almacenar en una variable.
fstr = f"La tasa de emisión del bono {nemotecnico} es de {tasa:.2%}"
Y utilizar en la función print
.
print(fstr)
La tasa de emisión del bono BTU0210750 es de 2.10%