Fundamentos de Python y JupyterLab
Introducción
En este cuadernillo (Notebook) aprenderemos:
Introducción a Python y JupyterLab
Tipos de Variables
Operadores lógicos
Funciones y métodos
Prerequisitos
Conceptos |
Importancia |
Notas |
---|---|---|
Útil |
Información complementaria |
|
Útil |
Información complementaria |
Tiempo de aprendizaje: 30 minutos
1. Python
Python es un lenguaje de programación de alto nivel interpretado y orientado a objetos, similar a otros lenguajes pero con la ventaja que es gratuito y de código abierto.
Lenguajes de alto nivel
Al igual que otros lenguajes como MatLab, IDL y NCL, Python es un lenguaje de alto nivel que tiene funciones autocontenidas, estructura de datos y otras utilidades que permiten mayor productividad usando menos líneas de código comparado con otros lenguajes de programacion como C, C++ o Fortran.
Ventajas:
Menos líneas de código
Facilidad de programación
Desventajas:
Menos velocidad de procesamiento
Aumento en el consumo de recursos de memoria
Código abierto
Python es un lenguaje desarrollado por una comunidad científica. Cualquier persona con conocimientos en programación puede realizar aportes y contribuir con la implementación de nuevas herramientas. El termino código abierto implica que Python es versátil y puede adaptarse a cualquier necesidad de la comunidad. En general la comunidad científica ha desarrollado una gran cantidad de paquetes que lo hacen aún mas útil y robusto.
2. JupyterLab
Es un projecto, ademas de una comunidad, cuyo objetivo es “desarrollar software de código abierto, estándares abiertos y servicios para informática interactiva en docenas de lenguajes de programación”.
Componentes principales:
Jupyter Notebooks
Jupyter Kernels
Jupyter Lab
Jupyter Hub
La ejecución de Jupyter puede llevarse a acabo de manera remota o local usando Cuadernillos (Notebooks) (archivos .ipynb). Estos cuadernillos nos permiten ejecutar código, ecuaciones en \(\LaTeX\), visualización de gráficos e imagenes y texto. Jupyter permite ejecución de múltiples lenguajes de programación de Julia, Python y R.
2.1 Interfaz de JupyterLab
JupyterLab es un entorno modular interactivo de programación.
Sus principales componentes son:
Barra de menús en la parte superior
Explorador de archivos en la izquierda
Area de trabajo en la parte derecha
Y, una de sus mayores ventajas es la visualización inmediata de los resultados de la ejecución de un código, pues no se debe compilar o ejecutar desde la línea de comandos en la terminal.
En general hay una excelente documentación en la página web de JupyterLab. A continuación, compartimos algunos links útiles para complementar y no duplicar la información:
2.2 Ejecución de comandos en JupyterLab
Botón “Play” en la bandeja superior.
Ctrl + Enter - solo ejecuta la celda actual
Shift+Enter - ejecuta la celda + mueve a la celda inferior
Esc / Enter - transición entre la función de edición y la navegación en el entorno
D + D - eliminar la celda seleccionada
A - agregar nueva celda en la parte superior
B - agregar nueva celda abajo
Tab - autocompletado / descripción del método
Shift + Up / Down - selección de celdas múltiples
Shift + M - fusionar celdas seleccionadas
M / Y cambia la celda de modo
markdown
/code
Para información sobre más comandos en JupyterLab puedes hacer click acá.
2.3 Acceso a documentación
import numpy as np
En general, es posible visualizar la descripción de cada comando utilizando el carácter ?
justo al final del mismo.
np?
# np.arange?
2.4 Gráficos y figuras dentro del entorno
Podemos generar y visualizar gráficos usando nuestros datos.
import matplotlib.pyplot as plt
x = np.arange(-10, 11)
plt.plot(x, x**2)
plt.show()
También podemos incluir imágenes externas y visalizarlas en celdas.
3. Programacion científica con JupyterLab y Python
En Python, un programa puede ser una sola línea de código
print("Hola mundo!")
Hola mundo!
3.1 Tipos de variables en python
Caracter (str
)
Corresponden a variables que estan compuestas por cadenas de carácteres denotados por comillas sencillas '
o dobles "
my_string = "mi mamá me mima"
type(my_string)
str
Booleano (Bool
)
Son variables que únicamente toman el valor de falso (False
) o verdadero (True
).
a = True
print(type(a))
<class 'bool'>
x = 123
z = 123.0
type(x) == type(z)
False
Listas
Una lista es un contenedor de objetos indicados por corchetes cuadrados:
my_list = [1, "mi mamá me mima", 1 + 0.5j, 3.1416, -1e3]
my_list
[1, 'mi mamá me mima', (1+0.5j), 3.1416, -1000.0]
Podemos acceder a los elementos en una lista usando el índice del uno o varios elementos. En python el índice inicia en 0 y finaliza en la longitud de la lista menos 1, es decir, si la lista tiene n
elmentos, entonces el último será el elemento n-1
.
my_list[1]
'mi mamá me mima'
De igual modo podemos reasignar nuevos valores
my_list[2] = "nuevo item"
my_list
[1, 'mi mamá me mima', 'nuevo item', 3.1416, -1000.0]
En caso que desee saber más detalles sobre el uso de las listas, puede visitar la siguiente documentación.
Diccionarios
Un diccionario es una colección de objetos etiquetados que se asignan en pares clave:valor. Python usa llaves {} para crear diccionarios:
arctic = {
"animales": "oso polar, morsas, pinguinos y mas",
"tamaño": 13985000,
"unidades": "km2",
"temperatura": "Muy frio",
}
Para acceder a los datos dentro de una lista debemos usar la etiqueta como se muestra a continuación:
arctic["animales"]
'oso polar, morsas, pinguinos y mas'
Podemos agregar nuevos elementos a la lista de usando etiquetas nuevas
arctic["ubicacion"] = "Polo Norte"
arctic
{'animales': 'oso polar, morsas, pinguinos y mas',
'tamaño': 13985000,
'unidades': 'km2',
'temperatura': 'Muy frio',
'ubicacion': 'Polo Norte'}
En caso que desee saber más sobre diccionarios puede visitar la documentación.
Tuplas
Se asignan usando paréntesis () en Python y, una vez definidas, no se pueden modificar.
my_tuple = (1.0, 2, 3, 4)
my_tuple
(1.0, 2, 3, 4)
try:
my_tuple[1] = 0
except TypeError as e:
print(e)
'tuple' object does not support item assignment
Sets
Los sets en Python retornan una “listas” cuyos elementos son únicos, es decir, no existe la repetición.
my_list2 = [1, 2, 2, 3, 4, 5]
my_list2
[1, 2, 2, 3, 4, 5]
my_set = set(my_list2)
my_set
{1, 2, 3, 4, 5}
Para agregar un nuevo ítem al set debemos utilizar el método add
my_set.add(6)
my_set
{1, 2, 3, 4, 5, 6}
3.3 Flujos de control
Condicional if (Si)
Declaración para decisiones lógicas
x = 10
mod = x % 2
if mod == 0:
print(f"{x} es un número par")
else:
print(f"{x} es un número impar")
10 es un número par
podemos tener múltiples condicionales usando elif
w = True
if type(w) == str:
print(f"w es una cadena de caracteres")
elif type(w) == int:
print(f"{x} es un número entero")
elif type(w) == float:
print(f"{x} es un número flotante")
elif type(w) == bool:
print(f"{x} es un boleano")
10 es un boleano
3.4 Funciones
Son bloques de código que se corren llamando a la función. Dependiendo de la construcción de la función, de pueden pasar datos a la misma para llamarla.
Por ejemplo, vamos a crear una función que calcula el área de un tríangulo siguiendo la fórmula:
def area_triangulo(b, h):
area = b * h / 2
return area
En este caso, se definió la función area_triangulo
que requiere de dos parámetros para llamarla: b
que es la longitud de la base del triángulo y h
su altura.
Ahora, usamos la función para calcular el área de un triángulo con los siguientes datos: \(b=3\) y \(h=5\)
area_triangulo(b=3, h=5)
7.5
3.5 Clases
Las clases proveen una forma de describir un objeto en programación. Por ejemplo, vamos a describir un objeto figura usando la siguiente clase:
class Figura:
def __init__(self, nombre, num_lados, color, tamanio):
self.nombre = nombre
self.num_lados = num_lados
self.color = color
self.tamanio = tamanio
Si queremos hacer la abstracción de un cuadrado podemos definirlo de la siguiente manera:
objeto = Figura(nombre="Cuadrado", num_lados=4, color="rojo", tamanio="grande")
Para acceder a cada una de las propiedades de este objeto simplemente utilizamos .
y llamamos el atributo
objeto.nombre
'Cuadrado'
objeto.num_lados
4
objeto.tamanio
'grande'
Las clases también pueden tener métodos que representan básicamente funciones que pertenecen al objeto
class Figura:
def __init__(self, nombre, num_lados, color, tamanio):
self.nombre = nombre
self.num_lados = num_lados
self.color = color
self.tamanio = tamanio
# método o funcion que pertenece al objeto
def imprimir_todo(self):
print(f"nombre = {self.nombre}")
print(f"número de lados = {self.num_lados}")
print(f"color = {self.color}")
print(f"tamaño = {self.tamanio}")
objeto = Figura(nombre="Cuadrado", num_lados=4, color="rojo", tamanio="grande")
objeto.imprimir_todo()
nombre = Cuadrado
número de lados = 4
color = rojo
tamaño = grande
3.6 Importar librerias
Python es muy popular dentro de la comunidad científica pues utiliza y permite crear paquetes que amplían el lenguaje base de muchas maneras útiles. Para importar librerias en nuestro código en python, solo debemos utilizar la palabra reservada del sistema import
seguido de la libreria que queremos utilizar.
import numpy
Muchas veces las librerías tienen nombres difíciles de deletrear, por lo que es conveniente usar un sobrenombre o un alias cuando escribimos el código. Eso lo logramos usando la palabra reservada del sistema as
.
Dentro de la comunidad de usuarios y desarrolladores de python se ha establecido una convención general de abreviaturas para la importación de las librerías.
En el caso de Numpy, se utiliza np, para Pandas se utiliza pd y, para Xarray se utiliza xr.
import numpy as np
import pandas as pd
import xarray as xr
Conclusiones
En este cuadernillo aprendimos aspectos básicos de la programación usando Python
y la versatilidad que podemos obtener cuando usamos herramientas como JupyterLab
. Resaltamos la importancia y el uso de los diferentes tipos de variables, operadores lógicos y flujos de control, así como la manera de usar funciones y clases. También aprendimos a importar librerías usando un alias para identificarlas.
Fuentes y referencias
Rose, B. E. J., Kent, J., Tyle, K., Clyne, J., Banihirwe, A., Camron, D., May, R., Grover, M., Ford, R. R., Paul, K., Morley, J., Eroglu, O., Kailyn, L., & Zacharias, A. (2023). Pythia Foundations (Version v2023.05.01) [https://doi.org/10.5281/zenodo.7884572]
Abernathey R. (2022) An Introduction to Earth and Environmental Data Science. [https://earth-env-data-science.github.io/intro.html]
JupyterLab Documentation [https://jupyterlab.readthedocs.io/en/stable/index.html]