Introducción a Python Orientado
a Problemas de Optimización en
Ingeniería (VI Edición, 2021)
Daniel Gutiérrez Reina, [Link]@[Link]
Ignacio González Prieto, ignaciogp87@[Link]
Bloques del curso
Bloque I: Introducción a Python y sus librerías para
análisis de datos (20 horas)
Bloque II: Introducción a los algoritmos genéticos (10
horas)
Partes del primer bloque
Parte I (Python General): Aprender nociones básicas sobre programación en
Python. Tipos de objetos (listas, tuplas, diccionarios, etc.), manejo de
funciones, control de flujo, y mucho más!!! → 12 horas aprox.
Parte II (Numpy): Vectores o arrays multi dimensionales en Python. → 2,5
horas aprox.
Parte III (Maplotlib): Representación gráfica en Python. → 2,5 hora aprox.
Parte IV (Pandas): Manejo de datos en Python (dataframe). → 2,5 horas
aprox.
Parte V (Scipy): Librería científica → 1 hora.
Parte VI (Seaborn): Visualización de datos → 1 hora.
Recapitulando … Punto de partida
Hasta ahora sólo hemos aprendido los componentes más básicos de Python.
Vamos a comenzar a aprender los paquetes de Python más utilizados para el análisis de datos.
Tercer módulo del curso
Matlplotlib(2 horas aprox.):
1) Introducción a Matplotlib.
2) Pyplot → conceptos generales.
3) Tipo de gráficas y sus propiedades: histogramas, dispersión, diagrama de
barras, subplot, etc.
4) Matplotlib con objetos.
5) Estilos.
Vamos a graficar cosas …. Matplotlib
Paquete muy potente para realizar graficas → Realmente sólo vamos a ver una
introducción un curso completo daría para un número de horas incluso mayor que
este curso.
Página oficial:
[Link]
La documentación no es muy buena, más bien liosa. La forma más sencilla es
encontrar un ejemplo de la gráfica que queremos realizar e intentar modificar el
código a nuestro problema.
Formas de trabajar con Matplotlib
Existen tres formas de trabajar con Matplotlib:
• pyplot → Es un módulo sencillo que contiene funciones para graficas
funciones (este le vamos a dedicar más tiempo) → state-based, state
machine.
[Link]
• pylab → Es un módulo que integra numpy y pyplot en un mismo espacio de
nombre (no lo vamos a ver en este curso).
[Link]
• OO (object oriented) → Todo es un objeto, es la forma más compleja, pero
también la más potente.
Figuras en Matplotlib
Anatomía de una figura:
Primer paso … incluir Matplotlib …
Mi prime script con Matplotlib: → [Link]
La figura la podemos guardar … botón
derecho … o [Link](“[Link]”)
Pyplot es el módulo más básico dentro del paquete matplotlib.
→ Se parece mucho al sintaxis de Matlab.
Compliquemos un poco el asunto → Vamos a
graficar una función
Vamos a representar la función x^2.
→ Abrir [Link]
Ejercicio:
Representar gráficamente la función x^3 + 1
en el intervalo [-1, 1].
Más información: [Link]
Seguimos … Rejilla, ejes y más cosas …
→ Abrir [Link]
Resumen:
Límites ejes → [Link]([xmin, xmax, ymin, ymax])
Etiqueta ejes → [Link](“<tag"), [Link](“tag")
Título → [Link](“Título")
Legenda → [Link](<lista>,<posición>)
Guardar figura → [Link](“[Link]”)
Customizar…
Ejercicio:
Poner “bonita” la gráfica del ejercicio anterior f= x^3 + 1
Resumen:
Límites ejes → [Link]([xmin, xmax, ymin, ymax])
Etiqueta ejes → [Link](“<tag"), [Link](“tag")
Título → [Link](“Título")
Legenda → [Link](<lista>,<posición>)
Guardar figura → [Link](“[Link]”)
Colores:
[Link]
Varias funciones en una figura
Vamos a graficar varias funciones a la vez, por ejemplo:
f1 = x^2 y f= x^3 en el intervalo [-1, 1]
→ Abrir [Link]
Hagamos unos ejercicios
Ejercicio:
Graficar en una misma figura las funciones:
𝑦1 = 𝑥
𝑦2 = 𝑥 2
𝑦3 = 𝑥 3 en x ∈ [−1,1]
Utilizando el método plot y un bucle for representar cada función con un color y
un marcador diferente.
También lo podéis hacer utilizando funciones universales (vectorización de
funciones).
Tablas útiles para decorar las figuras
Marcadores: Tabla de colores:
[Link]
Estilos de líneas:
Palabras clave:
Antes de seguir … Un error típico cuando se
utiliza el método plot → Mismas dimensiones!!
→ Abrir [Link]
Si la gráfica aparece en blanco normalmente es que
ha habido un error.
Tipos de gráficas
Histogramas
→ Abrir grafica6
Nadie se sabe todos los parámetros
es imposible ☺ → Se consultan cuando se
vaya a utilizar
Diagramas de dispersión (Scatter plot)
→ Abrir [Link]
Diagramas de barras
→ Abrir [Link]
Para las divisiones de los ejes:
xticks(<posiciones>, <valores>)
yticks(<posiciones>, <valores>)
Ojo, la anchura de las barras por
defecto es de 0,8 (versiones anteriores).
Barras de errores
→ Abrir [Link]
Diagrama de barra con errores
Vamos a ver un ejemplo mucho más completo, 1) tomamos los datos de un archivo,
2) calculamos intervalos de confianza, y 3) visualizamos los resultados.
→ Abrir [Link]
→ Se usa [Link]
Diagrama de bigotes
Visualizar los salaries en Estados Unidos
→ Abrir [Link]
→ Se usa [Link]
Representando matrices 2D
[Link]()
→ Abrir [Link]
Tutorial sobre mapas de colores:
[Link]
Subplot …
Varias gráficas en una misma figura
→ Abrir [Link] 221 222
223 224
Propiedades de las figuras
• <num> → número de figura
• <figsize> → Tamaño de la figura en pulgadas 2,54 cm
• <dpi> → resolución de la figura
Los valores por defecto están guardados en un diccionario rcParams.
Si queremos varías figuras, tenemos que utilizar un num para cada una .
Una pincelada de Matplotlib con objeto
En Python todo es un objeto …
Jerarquía de objetos
Detalles importantes:
• Una figura puedes tener distintos axes.
• Cada objeto axes es un Gráfico.
• Cada objeto axes tienes al menos dos axis.
Una pincelada de Matplotlib con objeto
¿Qué hemos estado haciendo hasta ahora con plt? Por ejemplo, con [Link].
Función de alto nivel Selecciona el Selecciona el axes de
que crea la figura y axes actual. la figura que esté activa.
y los axes
Una pincelada de Matplotlib con objeto
Los atributos de los gráficos (axes):
Para cada atributo realmente primero tenemos que obtener el axes actual y aplicar
el método correspondiente sobre el objeto.
Ejemplos:
[Link] →
Ahora casi todos los métodos que se aplican sobre los objetos axes son de tipo set_
Una pincelada de Matplotlib con objeto
Ejemplos
→ Abrir [Link]
Una pincelada de Matplotlib con objetos
Ejemplos:
→ Abrir [Link]
El texto entre $$ en títulos y ejes → Latex.
Diagrama circular
Más diagramas en Python…
→ Abrir [Link]
Gráficas 2D
→ Abrir [Link] 𝑧 = cos(𝑥 2 + 𝑦 2 )
-Contourf(x,y,z)
-Meshgrid(x,y)
-Colorbar
-Axis(‘square’)
Gráficas 2D
→ Abrir [Link]
-Meshgrid(x,y)
Crea una malla a partir
de dos vectores 1D
Está inspirado en la
función de Matlab.
Gráficas 2D
-Meshgrid(x,y) 𝑧 = cos(𝑥 2 + 𝑦 2 )
-Contourf(x,y,z)
Dibujamos la superficie. La z es la función.
-Colorbar()
Se asigna a un mapa de colores.
[Link]
aps_reference.html
-Axis(‘square’)
Para que la figura salga cuadrada.
Gráficas 3D
→ Abrir [Link] 𝑧 = cos( 𝑥 2 + 𝑦 2 )
-plot_surface
-[Link](projection=‘3d’)
-Nuevos módulos
Estilos
[Link](“nombre estilo”)
Abrir [Link]
→ Hay que tener en cuenta que el estilo permanece constante durante toda la sesión
[Link]
Bibliografía
Matplotlib for Python Developers. Build remarkable publication quality plots
the easy way. Sandro Tosi. 2009.
Aprendiendo a programar en Python. Universidad de Málaga.
[Link]
python_2501/
Python for data analysis O’Reilly
[Link]
Documentación oficial: [Link]