Objetivos

Introducción al Python

Python fue creado a finales de la década de los 80 del siglo XX por el programador Guido van Rossum. Es un lenguaje de programación de alto nivel e interpretado. Tiene implementado metodologías de todas las áreas de la computación científica. Para decargar y consultar la documentación oficial de Python: https://www.python.org/

spyder es un IDE de Python, esto es, un ambiente gráfico de desarrollo. Para decargar y saber más detalles sobre spyder: https://www.spyder-ide.org/

Entre las principales opciones de Python encontramos:

Python como Calculadora Científica

print('Hola Mundo desde Python!')
print(1 + 2)
print(2*3)
print(5**3)
print(9%3)
print(abs(-1))
## Hola Mundo desde Python!
## 3
## 6
## 125
## 0
## 1

La libreria math nos ofrece una gran cantidad de funciones matemáticas

# import math

Tipos de datos

Definiendo una variable tipo str

nombre = 'Ana'
print(nombre)
print(type(nombre))
## Ana
## <class 'str'>

Definiendo una variable tipo integer

edad = 19
print(edad)
print(type(edad))
## 19
## <class 'int'>

Definiendo una variable tipo float

estatura = 1.72
print(estatura)
print(type(estatura))
## 1.72
## <class 'float'>

Definiendo una variable tipo boolean

estado_civil = False
print(estado_civil)
print(type(estado_civil))
## False
## <class 'bool'>

Estructuras de datos

Listas

Definiendo una clase lista con valores str

nombre = ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia']
print(nombre)
print(type(nombre))
## ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia']
## <class 'list'>

Definiendo una clase lista con valores int

edad = [19, 18, 20, 19, 21]
print(edad)
## [19, 18, 20, 19, 21]

Definiendo una clase lista con valores float

estatura = [1.72, 1.80, 1.69, 1.73, 1.65]
print(estatura)
## [1.72, 1.8, 1.69, 1.73, 1.65]

Definiendo una clase lista con valores boolean

estado_civil = [False, True, False, False, True]
print(estado_civil)
## [False, True, False, False, True]

Recuperando valores de lista

nombre = ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia']
print(nombre[0])
print(nombre[2:3])
print(nombre[2:4])
## Ana
## ['Camila']
## ['Camila', 'Diego']

Actualizando una lista con append

nombre = ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia']
nombre.append('Federico')
print(nombre)
## ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia', 'Federico']

Insertando un valor en una lista con insert

nombre = ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia']
nombre.insert(3,'Diana')
print(nombre)
## ['Ana', 'Beto', 'Camila', 'Diana', 'Diego', 'Emilia']

Eliminando elementos de una lista con remove

nombre = ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia','Federico']
print(nombre)
nombre.remove('Federico')
print(nombre)
## ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia', 'Federico']
## ['Ana', 'Beto', 'Camila', 'Diego', 'Emilia']

Diccionarios

Definiendo un diccionario de estudiantes

estudiantes = {2022021:'Ana', 2022022:'Beto', 2022023:'Camila', 2022024:'Diego', 2022025:'Emilia'}
print(estudiantes)
## {2022021: 'Ana', 2022022: 'Beto', 2022023: 'Camila', 2022024: 'Diego', 2022025: 'Emilia'}

Recuperando las claves del diccionario estudiantes

estudiantes = {2022021:'Ana', 2022022:'Beto', 2022023:'Camila', 2022024:'Diego', 2022025:'Emilia'}
print(estudiantes.keys())
## dict_keys([2022021, 2022022, 2022023, 2022024, 2022025])

Recuperando los valores del diccionario estudiantes

estudiantes = {2022021:'Ana', 2022022:'Beto', 2022023:'Camila', 2022024:'Diego', 2022025:'Emilia'}
print(estudiantes.values())
## dict_values(['Ana', 'Beto', 'Camila', 'Diego', 'Emilia'])

Recuperando los elementos del diccionario estudiantes

estudiantes = {2022021:'Ana', 2022022:'Beto', 2022023:'Camila', 2022024:'Diego', 2022025:'Emilia'}
print(estudiantes.items())
## dict_items([(2022021, 'Ana'), (2022022, 'Beto'), (2022023, 'Camila'), (2022024, 'Diego'), (2022025, 'Emilia')])

Modificando el valor asociado a la clave 2022021

estudiantes = {2022021:'Ana', 2022022:'Beto', 2022023:'Camila', 2022024:'Diego', 2022025:'Emilia'}
estudiantes[2022021] = ["Ana", 1.72 , 19, False]
print(estudiantes)
## {2022021: ['Ana', 1.72, 19, False], 2022022: 'Beto', 2022023: 'Camila', 2022024: 'Diego', 2022025: 'Emilia'}

Tuplas

Las tuplas son estructuras de datos inmutables, esto es, una vez definidas ya no es posible modificarlas posteriormente.

notas = (3.8, 4.1, 3.5, 3.0, 4.8)
print(notas)
print(type(notas))
# Intento de modificar el valor en el índice 3 de la tupla *notas*. 
# notas[3] = 3.2
# Debe retornar un error!
## (3.8, 4.1, 3.5, 3.0, 4.8)
## <class 'tuple'>

Librerias útiles

A continuación una lista de librerias que usaremos con frecuencia, junto con el link de la documentación oficial:

Para importarlas a la sesión de trabajo con el alias estándar

# import pandas as pd
# import numpy as np
# import matplotlib as mpl
# import scipy as sp
# import statsmodels as sm
# import scikit-learn as sklearn

Introducción al Pensamiento Bayesiano

La distribución Priori

La distribución Muestral

La distribución Posteriori

La distribución Predictiva Posteriori

Estimación Puntual: Estimador de Bayes

Estimación por Intervalo: Intervalos de Credibilidad

Modelos con un Parámetro

Modelando una proporción con a priori discreta

Modelando una proporción con a priori continua

Modelando una tasa promedio de ocurrencia de un evento

Modelando una media con varianza conocida

Modelando una varianza con media desconocida

Modelos con Multiples Parámetros

Introducción a la Computación Bayesiana

Métodos Monte Carlo basados en Cadenas de Markov

Evaluación

En cada corte se asigna un taller y se aplica un parcial. A continuación los pesos de los respectivos cortes:

En los cortes 1 y 2 la nota se basa en un taller y un parcial. En el corte 3, 20% será un parcial y el restante 30% de la nota será una exposición de proyecto conjunto con otra materia de su semestre.

Referencias

Tutorías

Para separar un espacio de tutoría por favor envíar un correo a la dirección indicando el horario escogido.